You are here: Home Software Testing Techniques Software Security Testing: An Insight

SoftwareQAtestings.com

...Your Hub for Software Testing and Quality Assurance

~ Contact Us ~ Privacy Policy ~ Register ~

Software Security Testing: An Insight

Security testers have one of the most exciting and creative jobs in the industry. They are tasked with finding elusive security bugs in complex software systems and convincing the rest of the team of their importance.

They must prioritize their time and efforts to make sure the best (or worst) security vulnerabilities are found and fixed.To do that, the security tester should have the best resources available:

access to external classes, conferences, magazines and books. The

security tester has to find as many critical security bugs with limited

resources before the major ship deadline; the attacker has to find only

one – and has all the time in the world after ship to do so. Is it a level

playing field? No. That is what makes the tester's job so exciting,

critical and challenging.


Every great security tester has these three qualities: a great imagination,

complete knowledge of the system they are testing and an evil streak so

they can think like an attacker -- and beat him at his own game. By

mastering those three pillars of expertise a tester will be well on his way

to becoming an exceptional security tester.

Imagination -- Many times we don't have all the information we'd like

to have as security testers. When exploiting an SQL injection vulnerability,

for instance, the security tester has to make certain leaps of faith about the

underlying system and make educated guesses about what is really going

on to create an effective test.

Complete knowledge of the system -- A great security tester must

know about each component of the system he is testing. For Web

applications that often means in-depth knowledge of JavaScript,

XML, server-side code (ASP, JSP, Ruby, PHP, etc.), databases,

Web services and more. The tester must be able to recognize when

things are out of place and when components may be used incorrectly.

This complete knowledge comes with time and expertise, but it can be

aided by intense research of each subject with a security focus in mind.

Evil streak -- The previous two pillars of expertise will take a security

tester only so far in his quest for security testing nirvana; the pillar that is

a game-changer is the ability to think like an attacker. Being able to

anticipate the way an attacker will visualize the system is an integral part

of testing the system. Similar to mapping out the many ways a burglar

might be able to break into your house, the same thought process is

needed for security testing so that you cover all the creative ways an

attacker could exploit your application.

A great security tester has a great imagination

A great imagination extends beyond the ability to imagine a system as it

could be. It also includes the ability to envision the truly interesting bugs

and vulnerabilities in a system. Most security assessments are performed

black box -- without source, documentation or access to internal systems.

When a security tester approaches a security assessment with little

information he must make certain assumptions and inferences about the

system he is testing. Sometimes those can be verified later through focused

testing, but often they cannot.

SQL injection is an exceptional example of a vulnerability that requires a

creative imagination to be discovered. For these vulnerabilities, a tester

must be able to envision how certain features in the Web application

would be executed on the database.

Great security testers have complete knowledge of a system

The most common Web application vulnerability by far is cross-site

scripting (XSS). At Security Innovation our engineers maintain a

knowledgebase of all security vulnerabilities we have found over

the years of security testing. More than 85% of vulnerabilities found

in Web applications are due to XSS. Often they are so ubiquitous

that after finding dozens of them, we actually stop looking and instead

provide guidance to our customer's development team so they can fix

them and we can focus our testing efforts on more mission-critical issues.

For that reason XSS is a great example for this subject. Ideally the

system is protected by defense in depth. Initially any user input

should be checked in the Web browser, then validated on the server

using a whitelist regular expression. Finally, when that data is displayed

back to the user, it should be whitelist-encoded to make sure no

errant characters slip by and are executed on the client's browser.

Finding your inner evildoer

The final and, in my opinion, the most important pillar of expertise

for a great security tester is being able to understand how the

system can fail and to think maliciously once you've got your foot

in the door. The moment a potential vulnerability is discovered

it must be assessed for risk. The most common risk rating system

is DREAD, which stands for Discoverability, Reproducibility,

Exploitability, Affected users and Damage potential. A tester

with a healthy understanding of the latest exploits and a bit of

an evil streak may be able to persuade developers and managers

to escalate the vulnerability to a higher risk rating and increase

the likelihood of getting it fixed quickly.