I had the opportunity to analyse the security of some applications.
Basically I decompose the analysis in three steps by inspiring myself to the reference OWASP. Firstly I need to know what are the important data of the application. It is best to ask questions to the team who realised the application. I also need to test the application and understand it, get access to the code, look at the specification working.
Then i will use a tool to do a pen test. The aim is to evaluate the application by trying to exploit vulnerabilities. Zap Proxy is a popular tool and free. I recommend also Acunetix but you need to pay. Also i used findbugs with all security options ticked to detect some security flaws..
I was given a deadline to make an audit of an application. Therefore the aim was not find all security problems of the application but the most importants ones.
Over the years the top ten security problems did not change. So we need to be particularly looking at these potential problems https://www.owasp.org/index.php/Top_10_2013-Top_10.
I Know the application
At first we want to know if it is really worth the effort to do a full/partial audit.Read OWASP reference as a guideline for the code review. Before starting a full audit we need to know some important aspects about the application !
- Code: The language(s) used, the features and issues of that language from a security perspective. The issues one needs to look out for and best practices from a security and performance perspective.
- Context: The working of the application being reviewed. All security is in context of what we are trying to secure.
- Audience: The intended users of the application, is it externally facing or internal to “trusted” users. Does this application talk to other entities (machines/services)? Do humans use this application?
- Importance: The availability of the application is also important. Shall the enterprise be affected in any great way if the application is “bounced”
Before meeting the team we need to make a checklist to know better the application :
The checklist should cover the most critical security controls and vulnerability areas such as:
- Data Validation
- Session management
- Error handling
- Security Configuration
- Network Architecture
Input, for example, can be:
- Browser input
- Property files
- External processes
- Data feeds
- Service responses
- Flat files
- Command line parameters
- Environment variables
Exploring the attack surface includes dynamic and static data flow analysis: Where and when are variables set and how
the variables are used throughout the workflow, how attributes of objects and parameters might affect other data
within the program. It determines if the parameters, method calls, and data exchange mechanisms implement the
Read the documentation about the product. Is there any security requirement ? Is there any sensitive data ? How can we communicate to the product(graphical interface ? Web services ? etc…)
Talk to the team and go through a check list. The Owasp code review give a good idea about what to ask to the team. Example of questions :
– What is the programming language of the application ?
– What are the security requirement ?
– What are the sensitive data ? Do you have a documentation about the architecture of the application ?
– How can we access to the application ? Web Services? Graphical Interfaces ?
– Data input are they being validated ?
– Where can we access the application ? If the application is only being accessible in a private network with no connection internet the need of security is not as important as an application accessible by everybody on the web.
– Who are the users of the application ?The general public or users with special rights ?
– What is the authentication to the application ?
In the end talking to the team and reading the document is not enough. The code of the application is the best source of information.When you understand better the application, you can evaluate what kind of security audit you should do.
For example It is crucial to have a bank application very secure on the web. However it might not be useful to do a full audit for an application with no important
II Tools to scan the application
Pen test tool
In order to perform a pen test , there is a number of tools you can use. Zap proxy is a popular tool and free. Acunetix can find more security bugs but it is not free.
For some websites it is difficult to access to all the links. It is important to retrieve the majority of the links of the website. Therefore sometimes it is necessary to manually crawl all links.
This link is very useful to manually crawl all links in Acunetix:
The procedure is similar with other tools in the market :
Configure the web browser
Presuming that the web browser is running on the same machine where the tools is installed, set the proxy server IP to 127.0.0.1 and the proxy server port to 8080.
- Start the HTTP Sniffer and browse the website using the previously configured web browser.
- Once ready, stop the HTTP sniffer. Save captured data by selecting ‘Save Logs’ from the Actions drop down menu.
In the Site Crawler node, click the ‘Build Structure from HTTP Sniffer log’ button (highlighted in the above screen shot) to import the captured data into the Site Crawler.
It is also possible to import HTTP Sniffer logs to an already existing scan, or import multiple HTTP Sniffer logs into the same crawl. To do so, simply tick the option “Merge the log9s0 with the currently opened crawl results in the HTTP Sniffer Log import window as highlighted below.
- Import Logs to Crawler
- Save the crawler import results by selecting ‘Save Results’ from the Actions drop down menu.
- Launch the Scan
Click on the New Scan button to launch the scan wizard. In the first step of the Scan Wizard select the option ‘Scan using saved crawling results’ as highlighted in the above screen shot. Proceed with completing the scan wizard to launch the automated scan against the manually browsed website.
Bug detection tool
Sonar : It can detect important security problem.
Findbugs : tick all options before scanning (by default security option aredeactivated).
III Manual testing
Read OWASP reference as a guideline for the security verification.
This phase can be the longest if there are lot of problems with the application. We need to do some verification requirements manually to certify the level of security of the application.
DIfferent Level of Security 0 to 3 (low to high security) In order to meet one of these levels an application need to pass some manual tests.
In details this is the list of the security requirements :
V3. Session Management
V4. Access Control
V5. Malicious Input Handling
V7. Cryptography at Rest
V8. Error Handling and Logging
V9. Data Protection
V13. Malicious Controls
V15. Business Logic
V16. File and Resource
In practice, I would verify manually the results of the scans. The scans I refer can be done with the tools previously mentioned (example : findbugs, sonar and zap proxy) . The scans will show a list of problems. We need to make sure these security problems are real and not false positive. Concentrate on the majors problems before going through the minor security breaches. Sometimes several minor security problems can lead to serious security holes.
The last step of an audit is to realise a document to help the team of the application to fix the main security bugs. In the report I would recommend to put the main security breaches. From my experience, the teams do not have time to spend lot of time in fixing security issues. It is best to focus on big security breaches and the one easy to fix first.
Code Review :OWASP_Code_Review_Guide-V1_1.pdf
Available to download here :
Available to download here : https://www.owasp.org/index.php/File:OWASP_ASVS_Version_2.pdf