29.11.2012 Views

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

2nd USENIX Conference on Web Application Development ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Abstract<br />

Exploring the Relati<strong>on</strong>ship Between <strong>Web</strong> Applicati<strong>on</strong><br />

<strong>Development</strong> Tools and Security<br />

Matthew Finifter<br />

University of California, Berkeley<br />

finifter@cs.berkeley.edu<br />

How should software engineers choose which tools to<br />

use to develop secure web applicati<strong>on</strong>s? Different developers<br />

have different opini<strong>on</strong>s regarding which language,<br />

framework, or vulnerability-finding tool tends to yield<br />

more secure software than another; some believe that<br />

there is no difference at all between such tools. This paper<br />

adds quantitative data to the discussi<strong>on</strong> and debate.<br />

We use manual source code review and an automated<br />

black-box penetrati<strong>on</strong> testing tool to find security vulnerabilities<br />

in 9 implementati<strong>on</strong>s of the same web applicati<strong>on</strong><br />

in 3 different programming languages. We explore<br />

the relati<strong>on</strong>ship between programming languages<br />

and number of vulnerabilities, and between framework<br />

support for security c<strong>on</strong>cerns and the number of vulnerabilities.<br />

We also compare the vulnerabilities found<br />

by manual source code review and automated black-box<br />

penetrati<strong>on</strong> testing.<br />

Our findings are: (1) we do not find a relati<strong>on</strong>ship<br />

between choice of programming language and applicati<strong>on</strong><br />

security, (2) automatic framework protecti<strong>on</strong> mechanisms,<br />

such as for CSRF and sessi<strong>on</strong> management, appear<br />

to be effective at precluding vulnerabilities, while<br />

manual protecti<strong>on</strong> mechanisms provide little value, and<br />

(3) manual source code review is more effective than automated<br />

black-box testing, but testing is complementary.<br />

1 Introducti<strong>on</strong><br />

The web has become the dominant platform for new software<br />

applicati<strong>on</strong>s. As a result, new web applicati<strong>on</strong>s<br />

are being developed all the time, causing the security<br />

of such applicati<strong>on</strong>s to become increasingly important.<br />

<strong>Web</strong> applicati<strong>on</strong>s manage users’ pers<strong>on</strong>al, c<strong>on</strong>fidential,<br />

and financial data. Vulnerabilities in web applicati<strong>on</strong>s<br />

can prove costly for organizati<strong>on</strong>s; costs may include direct<br />

financial losses, increases in required technical support,<br />

and tarnished image and brand.<br />

David Wagner<br />

University of California, Berkeley<br />

daw@cs.berkeley.edu<br />

Security strategies of an organizati<strong>on</strong> often include developing<br />

processes and choosing tools that reduce the<br />

number of vulnerabilities present in live web applicati<strong>on</strong>s.<br />

These software security measures are generally<br />

focused <strong>on</strong> some combinati<strong>on</strong> of (1) building secure software,<br />

and (2) finding and fixing security vulnerabilities<br />

in software after it has been built.<br />

How should managers and developers in charge of<br />

these tasks decide which tools – languages, frameworks,<br />

debuggers, etc. – to use to accomplish these goals? What<br />

basis of comparis<strong>on</strong> do they have for choosing <strong>on</strong>e tool<br />

over another? Comm<strong>on</strong> c<strong>on</strong>siderati<strong>on</strong>s for choosing<br />

(e.g.,) <strong>on</strong>e programming language over another include:<br />

• How familiar staff developers are with the language.<br />

• If new developers are going to be hired, the current<br />

state of the market for developers with knowledge<br />

of the language.<br />

• Interoperability with and re-usability of existing inhouse<br />

and externally-developed comp<strong>on</strong>ents.<br />

• Percepti<strong>on</strong>s of security, scalability, reliability, and<br />

maintainability of applicati<strong>on</strong>s developed using that<br />

language.<br />

Similar c<strong>on</strong>siderati<strong>on</strong>s exist for deciding which web applicati<strong>on</strong><br />

development framework to use and which process<br />

to use for finding vulnerabilities.<br />

This work begins an inquiry into how to improve <strong>on</strong>e<br />

part of the last of these criteria: the basis for evaluating<br />

a tool’s inclinati<strong>on</strong> (or disinclinati<strong>on</strong>) to c<strong>on</strong>tribute to applicati<strong>on</strong><br />

security.<br />

Past research and experience reveal that different tools<br />

can have different effects <strong>on</strong> applicati<strong>on</strong> security. The<br />

software engineering and software development communities<br />

have seen that an effective way to preclude buffer<br />

overflow vulnerabilities when developing a new applicati<strong>on</strong><br />

is to simply use a language that offers automatic<br />

memory management. We have seen also that even if<br />

other requirements dictate that the C language must be<br />

used for development, using the safer strlcpy instead<br />

<str<strong>on</strong>g>USENIX</str<strong>on</strong>g> Associati<strong>on</strong> <strong>Web</strong>Apps ’11: <str<strong>on</strong>g>2nd</str<strong>on</strong>g> <str<strong>on</strong>g>USENIX</str<strong>on</strong>g> <str<strong>on</strong>g>C<strong>on</strong>ference</str<strong>on</strong>g> <strong>on</strong> <strong>Web</strong> Applicati<strong>on</strong> <strong>Development</strong> 99

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

Saved successfully!

Ooh no, something went wrong!