19.09.2017 Views

the-web-application-hackers-handbook

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

776 Chapter 20 n A Web Application Hacker’s Toolkit<br />

Within <strong>the</strong> previous two listings of vulnerabilities, each list contains defects<br />

that may be classified as low-hanging fruit — those that can be easily detected<br />

and exploited by an attacker with modest skills. Hence, although an automated<br />

scanner will often detect a decent proportion of <strong>the</strong> low-hanging fruit within<br />

an <strong>application</strong>, it will also typically miss a significant number of <strong>the</strong>se problems<br />

— including some low-hanging fruit that any manual attack would detect!<br />

Getting a clean bill of health from an automated scanner never provides any<br />

solid assurance that <strong>the</strong> <strong>application</strong> does not contain some serious vulnerabilities<br />

that can be easily found and exploited.<br />

It is also fair to say that in <strong>the</strong> more security-critical <strong>application</strong>s that currently<br />

exist, which have been subjected to more stringent security requirements<br />

and testing, <strong>the</strong> vulnerabilities that remain tend to be those appearing on <strong>the</strong><br />

second list, ra<strong>the</strong>r than <strong>the</strong> first.<br />

Inherent Limitations of Scanners<br />

The best vulnerability scanners on <strong>the</strong> market were designed and implemented<br />

by experts who have given serious thought to <strong>the</strong> possible ways in which all<br />

kinds of <strong>web</strong> <strong>application</strong> vulnerabilities can be detected. It is no accident that<br />

<strong>the</strong> resulting scanners remain unable to reliably detect many categories of vulnerabilities.<br />

A fully automated approach to <strong>web</strong> <strong>application</strong> testing presents<br />

various inherent barriers. These barriers can be effectively addressed only by<br />

systems with full-blown artificial intelligence engines, going far beyond <strong>the</strong><br />

capabilities of today’s scanners.<br />

Every Web Application Is Different<br />

Web <strong>application</strong>s differ starkly from <strong>the</strong> domain of networks and infrastructures,<br />

in which a typical installation employs off-<strong>the</strong>-shelf products in more<br />

or less standard configurations. In <strong>the</strong> case of network infrastructure, it is<br />

possible in principle to construct in advance a database of all possible targets<br />

and create a tool to probe for every associated defect. This is not possible<br />

with customized <strong>web</strong> <strong>application</strong>s, so any effective scanner must expect <strong>the</strong><br />

unexpected.<br />

Scanners Operate on Syntax<br />

Computers can easily analyze <strong>the</strong> syntactic content of <strong>application</strong> responses<br />

and can recognize common error messages, HTTP status codes, and usersupplied<br />

data being copied into <strong>web</strong> pages. However, today’s scanners cannot<br />

understand <strong>the</strong> semantic meaning of this content, nor can <strong>the</strong>y make normative<br />

judgments on <strong>the</strong> basis of this meaning. For example, in a function that<br />

updates a shopping cart, a scanner simply sees numerous parameters being

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!