Software Security Testing

Did you know that there have been instances of cybercriminals posing as the Center for Disease Control and Prevention (CDC) or World Health Organization (WHO) representatives and sending sophisticated phishing email schemes. These cybercriminals are taking advantage of the Covid-19 situation, so much so that cyber attacks have increased by 600% during this period.

“What makes you vulnerable makes you beautiful.” said Professor Brene Brown. In the world of IT and software, vulnerabilities don’t stand for beautiful. There is no ‘embrace your flaws’ when it comes to the murky world of IT where even a single flaw can be dangerous for your business. Any flaws or vulnerabilities will be exploited by hackers or anyone with mala fide intent. Software security testing has its relevance at this juncture.

What is Software Security Testing?

It tests for vulnerabilities of the system and finds out if the data and resources are protected from any intrusion. The objective behind software security testing is to ensure that there are no loopholes or weaknesses which can be used by an intruder to wreak havoc on our systems. Cyber Security criminals can erase all your information, cause loss in revenue, tarnish your reputation, leak your confidential information and more. They can bring your business to its knees if you are not prepared.

Security testing focuses on all the layers of your information system like database, infrastructure, access channels to keep it free from vulnerabilities.

What is the importance of Software security testing?

Imagine losing personal information of more than 300 million customers, including their passport numbers, DOB, gender, postal addresses, etc. Well, this happened to one of the world’s biggest hospitality groups, Marriott International. Hackers gained unauthorized access to Marriott’s database. These aren’t isolated incidents.

20% of Facebook’s 2.3 billion users were affected in 2019. Many unprotected databases were discovered online which had 419 million records of Facebook users. There was no password protection in place which meant anyone could gain access to it.

A simple Google search will present you with more such dreadful news. No matter the size of your organization, you are vulnerable to attacks from cybercriminals.

If you want to save your company from external attacks, then software security testing should be a pivotal part of your business strategy and not something you implement as an afterthought. Even something as simple as a weak code implementation in your software application can make you vulnerable to cyberattacks and unauthorized entry.

While there have been tremendous strides in the world of technology, it has opened up itself to far smarter threats. With each part of the business world highly dependent on technology, it is no wonder that businesses have begun to realize the importance of keeping oneself secure.

Let us learn more about security testing and what it entails in the rest of the article.

Types of Security Testing

Vulnerability scanning

When you use a vulnerability scanner, it creates an inventory of all the systems that are connected to your network. The systems are usually servers, firewalls, switches, printers, laptops, containers, laptops, desktops, etc.

To understand more about the system, it attempts a login using default or other credentials. It identifies the operating system it runs and software installed along with other related attributes. Once it creates the inventory, it checks for each item there against one or more databases of known vulnerabilities to see if it is susceptible to any.

Apart from checking for any vulnerability, it identifies those that have vulnerabilities and suggests solutions.

The efficacy of the vulnerability testing depends on its ability to locate and identify the different systems in your network and its ability to correlate this information with known vulnerability information from databases.

Security Scanning

It checks for security flaws by scanning the various elements of your network, application or device. Security scanning should be done regularly to keep your information secure. It uses a myriad of automated tools and performs hundreds of routine tests and checks. Not only does it perform security scans for your network, but it also does it for your application. It also provides solutions to reduce the risks.

Penetration Testing

It is the practice of testing an application, network system or a computer system to find vulnerabilities that potential attackers could exploit. Penetration testing is also called pen testing or ethical hacking. Organizations need to conduct penetration testing regularly so that they could gauge the weakness in the infrastructure, software and people.

For finding out your organization’s security policy, adherence to compliance requirements, response management for security incidents, employee awareness towards security, etc., penetration testing is your best bet.

Penetration testing involves the following stages:

  1. Planning and reconnaissance – Objectives are defined and necessary data is collected.
  2. Scanning – Tools to perform scanning are employed to understand how targets respond.
  3. Access – To find out the vulnerabilities, attacks are made
  4. Access maintenance – It is checked whether there is any vulnerability that can be taken advantage of to gain access.
  5. WAF Configuration – WAF settings are configured before testing is done again,

All of this information is used to configure the organization’s WAF settings and other application security solutions to protect against any attacks.

Risk Assessment

When organizations carry out security risk assessment, it helps them look at their application portfolio from the perspective of an attacker. The focus is to prevent application security defects and vulnerabilities. By doing this proactively, the organization can make informed resource allocation, tooling, security control decisions, and so on.

The risk assessment model is based upon the size, growth rate, resources and asset portfolio. While organizations can make do with generalized assessments, it is not the ideal solution as it does not provide detailed mappings of the assets and its associated threats.

A security risk assessment allows organizations to identify assets, create risk profiles for each of them, understand the depth of the data and assess its importance. Based on its importance, the overall risk for the company is measured and prioritized for assessment. Based on the assessment, mitigating controls are placed on each of the assets.

Security Audit

It is an evaluation of the company’s security and information system based on a set of established criteria. Security audits help protect against a data threat event, involving technical reviews on configurations, technologies, infrastructure, etc. They should be performed monthly, quarterly, or bi-annually. Performing it at least twice a year is recommended. Anything less and you might be putting your security at risk.

The effectiveness of security audits is that it gives you a simple answer about your security strategy by informing whether you need to amp your security or not. It reduces cost by shutting down vulnerable hardware or software. If a new technology that was recently introduced brings in any vulnerabilities, security audits will help you with it. Doing security audits will ascertain if the organization is compliant with HIPAA, CCPA, GDPR, SHIELD, etc.

Posture Assessment

It is good for any organization that wants to know what they are missing when it comes to increasing the cybersecurity maturity level. Posture Assessment provides a concrete cybersecurity roadmap to increase the cybersecurity defense of your organization.

It is calculated based on the various resources at play, starting from people, hardware, software capabilities, and all the other mechanisms involved. Posture Assessment reveals the security health of your system. Organizations that have a poor cybersecurity level are susceptible to breaches, intrusions, attacks, and more. Performing this test maximizes the ROI of the organization as it saves you from any attacks by keeping your systems in the pink of health.

Ethical Hacking

Hacking is not illegal as long as you do it with the intention to find out security flaws in an organization. This is why a lot of big companies have bug bounty programs where they offer ethical hackers a lot of money if they can find flaws in their system. Ethical hackers are required to find out vulnerabilities in a system they target and exploit them to see the depth of the risk. Hacking is no longer the fiefdom of a high-schooler who wants to steal data and sell it in the Dark Web. It is an area where there are a lot of computer geniuses who reign. So you need an equally smart computer whiz to secure your IT systems.

How to perform security testing?

One of the most popular methods used by the software industry to design, develop and test high quality software is the Software Development Process or SDLC. There have been many other methods that have been used like the waterfall method, prototyping, incremental development, spiral development, and so on, but none of them have been as efficient as SDLC.

Let us go through the security measures that should be undertaken at each of these stages.

Requirements Phase 
In this phase, there should be security measures taken to guarantee that there are no abuse/misuse cases while ensuring that requirement gathering is followed by being thoroughly compliant with all regulatory risks.

Design 
Risk is assessed for the functional specification. List the functional specifications and the security areas of application. Design considerations should be kept in mind.

Coding and Unit Testing 
At this stage, you should develop security controls and secure code. It should cover session management, authentication, error handling, etc. Testing of static and dynamic tools and security white box testing.

Integration Testing 
At this stage, the security protocols are the following: Black Box testing, Security & Regression testing, Secure coding, Automated test and Threat analysis.

System Testing 
Black Box testing and Vulnerability testing at this stage

Implementation 
Penetration testing, Vulnerability scanning and Secure Migration from the development to the production stage.

Support 
Impact analysis of Patches.

Security is one of the most important pillars of software development and products. Without testing your software, you are walking into a minefield which can blow anytime. All security threats and vulnerabilities should be addressed before application deployment.

Security Testing Techniques

Brute-Force Attack

It is the cyberattack equivalent of trying all the keys on your keyring to find the right one. The best part about it is that it is simple and always reliable. The computer does the work on its own by trying different combinations of usernames and passwords until it finds one that matches. If attackers gain access to your systems with the brute force attack, then it is difficult to catch them as they are already inside. When it is done by the organization for testing, brute force attack is employed using software tools.

Testing for brute force is divided into two parts:

  1. Black box testing
  2. Grey box testing

In Black box testing, the authentication method employed is discovered and tested. With Grey box testing, there is partial knowledge about the credentials of the accounts.

Cross-site scripting

In this, attackers use a malicious script to gain access to the website. Businesses can be immune to such attacks by using a variety of methods. Just to give a small example, the field lengths for all input fields in your website can be defined as small to restrict the input of any script.

HTML tags or script tag input can be prohibited. Script redirects from unknown or untrusted applications should be discarded.

SQL injection testing can be done in the following ways:

  • Standard SQL Injection techniques
  • Detection techniques
  • Fingerprint the database
  • Exploitation techniques
  • SQL Injection Signature Invasion Techniques

Session Management

When security testing is being done manually, you need to ensure if the application is handling sessions properly by performing session management tests. Session Management checks tests check how session management is handled in the web app.

You can test for session expiry after a specific idle time, session termination after logout or login or maximum lifetime, testing to see if a single user can have multiple sessions, and more.

Monitor Access Control Management

Access control is an important aspect which helps protect your application security from being exploited by attackers. Access Control Management has several objectives that must be met, they are:

  1. Identification
  2. Authentication
  3. Authorization
  4. Confidentiality
  5. Integrity
  6. Availability
  7. Accountability

By ensuring that there is access control management, you will be allowing only authorized users into your system. You can check this by manually creating several accounts with different user roles.

Data Protection

There are three aspects of data security. The first one is that a user can only view or use the data that they are supposed to. For example, a branch manager can see who are the employees who report to him, but he cannot see their bonus percentages for the year. By assigning roles and rights, you can make this happen.

The second aspect of data security is how it is stored in the database. Company information which is confidential should be secured with strong passwords and other security tools that will protect it.

The third aspect of data security is encryption. When there is information exchange between departments using a similar application or a different one, ensure that the data being transferred is fully encrypted.

Error Handling

The 404 error is one of the most common errors during a search. It usually provides details about the web server and associated components. The error message can be generated by requesting for a page that does not exist. These messages should not contain any information that hackers can use.

Cross Site Request Forgery

CSRF, also known as XSRF is an attack vector which tricks the web browser to perform an unwanted task when a user is logged in. It can be devastating for the user and the business if the CSRF action is successful.

The most common method to prevent CSRF attacks is to append CSRF tokens to each request and combine it with the user’s session. Each token should be unique for every unique session.

Security Misconfiguration

It is one of the most critical web application security risks. Security Misconfiguration involves failing to implement all the necessary security measures or implementing them with errors. Security misconfiguration vulnerabilities will occur when the web application is susceptible to be attacked due to misconfiguration or because of an insecure configuration.

Security Misconfiguration can give attackers unauthorized access to a system data or functionality which can result in total compromise.

Specify High Risk Functions

There are a million datasets for businesses these days. There are many business functionalities which when performed puts their data under risk. It could be an activity as simple as file sharing or providing access to an employee or sending an email to someone outside the organization.

Businesses need to identify these high-risk functions and ensure that better security protocols are followed and executed to the T. If an application deals with any sensitive data, you should check it for injection vulnerabilities, password guessing, etc.

Security Testing Tools

The web application security scanner doesn’t access the source code, it only performs automatic black-box testing and identifies security vulnerabilities. There are various paid and free web application vulnerability scanners. We will look at some of them here.

1. Grabber

It is a web application scanner that detects the following vulnerabilities: Cross-site scripting, Ajax testing, file inclusion, Backup file check, JS source code analyzer, and SQL injection. A simple and reliable application, it is good to test small applications.

Developed in Python, the tool is open-source, which means that you can modify it based on your specific needs.

2. Zed Attack Proxy

This open source tool is developed by OWASP, and is useful to find a wide range of vulnerabilities. An easy to use tool, it can be employed for the following: Intercepting Proxy, Automatic Scanner, Fuzzer, Web Socket Support, REST-based API, Dynamic SSL certificates, Smartcard and Client Digital Certificates Support, etc. You can also use this tool to manually perform tests on certain pages.

3. W3af

Developed using Python, it is useful to identify more than 200 kinds of web application vulnerabilities. Built with a graphical and console interface, it aims to provide a better web application penetration testing platform.

4. SonarQube

Apart from finding out the vulnerabilities in your system, it will also measure the source code quality of the web application. It is easy to integrate it with other tools and can carry out analysis of more than 20 programming languages. The issues that are highlighted by SonarQube are color-coded. If your system is under low risk, then it is displayed green in color and the ones with severe issues are coded red in color.

Memory corruption, SQL injection, HTTP response splitting, Denial of Service (DoS) attacks and Cross-site scripting are some of the vulnerabilities that it finds.

5. SQLMap

This free tool comes with a powerful engine that is capable of supporting 6 types of SQL injection techniques, such as the following: Boolean-based blind, Error-based, Out-of-band, Time-based blind, UNION Query, and Stacked Queries. SQLMap automates the process of detecting and utilizing SQL injection vulnerability in the website’s database.

6. Wapiti

Wapiti is one of the leading web application security tools which is an open source project from SourceForge and Devloop. Wapiti is a command-line application which means that you should be familiar with the commands that it usually uses. So if you are a novice, then it can be pretty difficult to use it. Wapiti provides support for GET and POSTHTTP attack methods.

Vulnerabilities exposed by Wapiti are the following: Server Side Request Forgery, XXE Injection, XSS Injection, Shellshock, File disclosure, Database injection, CRLF injection, Command Execution detection, and more.

It uses Kerberos, NTLM and other methods to authenticate. Operates similar to a Fuzzer, it allows brute force directories and file names on the web server that is targeted.

7. Probely

Probely scans your web application to find out vulnerabilities or any security issues that it discovers along with advice on how to fix them. It has a sleek interface and is built with an API-first development approach. Probely covers more than thousands of vulnerabilities. You can also use it to check specific PCI-DSS, ISO27001, HIPAA, and GDPR requirements.

Conclusion

Your customer’s data is sacred. If you ever lose their data or put it in a position of danger by following sloppy IT security protocols, it will be hard to regain their trust. There can be no compromises. By ensuring that you follow all the above techniques, you will be able to have a modicum of confidence in your security systems. Even with all the security protocols and protection methods in place, you are still vulnerable, but you can always be better prepared to face any kind of attack.

WANT TO RULE DIGITAL? GET IN TOUCH