Thesis MASTERS
Thesis MASTERS
CHAPTER ONE
1. INTRODUCTION.................................................................................................................... 4
1.1. INTRODUCTION................................................................................................................ 3
1.1.1 SECURITY VULNERABILITY BY DIFFERENT TYPES OF ATTACK..............................................3
1.2 PROBLEM STATEMENTS................................................................................................... 4
1.3 AIM AND OBJECTIVE......................................................................................................... 4
1.4 SCOPE AND LIMITATION.................................................................................................... 4
1.5 SOFTWARE SECURITY MEASUREMENTS.............................................................................4
1.6 OVERVIEW OF RESEARCH................................................................................................. 4
CHAPTER TWO............................................................................................................................. 5
2. LITERATURE REVIEW......................................................................................................... 5
2.1. OVERVIEW OF SECURITY VULNERABILITY AND SECURITY THREATS.......................................5
2.2. AVOID THREATS FROM SERVER AND WEB APPLICATION(CODE LEVEL)..................................5
2.3. STATISTIC OF DIFFERENT ATTACKS...................................................................................6
2.4. SOFTWARE RELIABILITY ENGINEERING...............................................................................7
2.5. SOFTWARE VULNERABILITY............................................................................................... 8
2.6. ENTITIES INVOLVED IN VULNERABILITY...............................................................................8
2.7. DISCLOSURE POLICIES.................................................................................................... 10
2.8. VULNERABILITY LIFE CYCLE............................................................................................. 10
CHAPTER THREE
3. COLLECTING VULNERABILITY DATA...............................................................................4
3.1 OTHER PUBLIC VULNERABILITY DATABASE.........................................................................3
3.2 FUTURE VULNERABILITY DATABASE...................................................................................3
3.3 CONCLUSION................................................................................................................... 4
CHAPTER FOUR........................................................................................................................... 5
4. RESEARCH MEHODOLOGY................................................................................................ 5
4.1. SOFTWARE DEVELOPMENT METHODOLOGY........................................................................5
4.1.1. AVOID THREATS FROM SERVER AND WEB APPLICATION(CODE LEVEL)..................................5
4.1.2. STATISTIC OF DIFFERENT ATTACKS...................................................................................6
4.1.3. SOFTWARE RELIABILITY ENGINEERING...............................................................................7
4.2. SOFTWARE VULNERABILITY............................................................................................... 8
4.2.1. ENTITIES INVOLVED IN VULNERABILITY...............................................................................8
4.2.2. DISCLOSURE POLICIES.................................................................................................... 10
4.2.3. VULNERABILITY LIFE CYCLE............................................................................................. 10
4.3. SUMMARY
Chapter One
Introduction
1.1 Introduction
A software vulnerability is the problem in the implementation, specification or configuration of a software system whose execution
can violate an explicit or implicit security policy. A large percentage of software is developed using unsafe programming languages
(e.g., C and C++) in the name of cost effectiveness, programmer familiarity, and performance. DaCosta, Dahn, Mancoridis,
Prevelakis 2003.
Software developers and auditors will get advantage from a tool to facilitate them to focus on their attention to check their piece of
code that probably cause to be the main source of security vulnerabilities.
Our research is that to include any class or function where input are most likely to contain a security vulnerability. Researcher will
validate every method and arguments that passes from this method as input from front end, Research have performed several
attempts of security hacking involving twenty five vulnerabilities in Object oriented programming (JAVA and .NET).This Dissertation
will describe the experiments, its results or conclusion of findings. Researcher’s finding is that more complex coding style gives
definite holes in security model. In addition to it, adding more security patches in .NET Code and security prevention technique and
API makes application slow in response.
Software complexity is often hypothesized to be the enemy of software security. Shin, A.Williams 2008.Now it is realized fact that
most of the security lack and vulnerability arise in designing of software. In this research, we will discuss what should be the current
practices of software development, vulnerabilities and mitigation factors. On the basis of the critical review, areas of research are
identified that insure software security further in this investigation.
A keyword search query on Shodan containing the term Jetty that retrieves the Internet addresses of 464 hosts that expose their
online services using this open-source vulnerable web server, for which the vulnerability description can also be accessed online.
Cadariu, Bouwers, Visser, van Deursen 2015
https://stackify.com/what-is-c-reflection/
1.3 Objectives
An independent, point-in-time, assessment of web application will be made to find vulnerabilities from the perspective of a malicious
actor.
One of the objective of this research is to attack web application that is hosted in Public domain. Web application will be accessible
publically.
Third party APIS and DLL and DLL used internally in Base framework cannot scanned and can be the main cause of producing
vulnerabilities in code.
Question 1: What are the reason that all problem not identified during manual analysis?
Question 2: What important can be done to improve analysis of security holes?
Question 3: How can manual analysis be improve to identify problem?
1.6 Scope:
Software vulnerability test effort is directed toward the identification of mostly occurring vulnerability in web applications
specially written in .NET. These vulnerabilities mostly consist in security issues like Session management, Configuration
management, Validation not handling properly, data protection issues, encryption and decryption algorithm faults or
weaknesses, authorization features, error handling, authentication, Logging and auditing.
Most of the web application that contain sensitive data and transactions always remain in threat of hackers. Organizations
always lost a lot of customer’s confident, important transactions and payment Interference problem daily. Now it’s time to
give them web application that is very secure that should not be vulnerable to any unauthorized party. Making the network as
Ideal secure network is not a solution. In parallel to secure network, Developers will have to learn to write secure code and
we are doing research to find all types of vulnerabilities in code.
External penetration tests usually do not include the security assessment (Proxies, servers, firewalls) that are not externally
accessible by the Pen tester. Pen tester look at web server vulnerabilities that found externally. For new applications,
security tests include ethical hacking test cases (for example malicious inputs) with functional test cases. Security test plan
should be captured in security testing requirements.
1.7 Limitation
Lack of secure Memory wiping
Memory wiping is generally used to protect secure data or passwords from attackers with access to uninitialized memory.
Importance is that how other software uses initialized memory.
All Python software are vulnerable and exposes no API for developer to implement secure feature.
Even after using other technologies of Microsoft, development team cannot confidently say that software is hack proof or
does not contain any security holes. After implementing all security feature and even complex Algorithm, if Web application is
not hosted in Secure ISP or secure server then there is no surety that it will not hack. Sometime DDOS attack can be
unsuccessful if server has configuration to divert packets flood to some other servers and there is another method to avoid
heavy DDOS attack that server memory should have enormous space to spread attacking packets in server that will not
block the server traffic and website will not shut down.
Researcher cannot reach to the level of world’s dangerous hackers so at this level whole research will be demonstrate on
one application that will be hack for demo purpose only to check its vulnerability or in decent word , Pen testing will be apply
on application.
Pen testing will be perform by some known software but in real world there are hackers who use thousands of software to
attack or even they write their own code or software to hack.
Chapter Two
Literature Review
2.1 Background Study:
In this research, Researcher will evaluate useful approaches for better understanding of software security and vulnerability and
propose Software Scanner that will scan .NET Code for vulnerabilities.
Some information that characterized as “Engineering” data. It include when was vulnerability discovered, introduced, how the
source code changed it self during vulnerability. This approach states statistical analysis of vulnerabilities that have already
discovered. These approaches provide a vision to check number of vulnerabilities in the system, it is difficult to detect vulnerability
that’s why rate of vulnerability in statistical data is less.
No approach provide correct information that about number of vulnerabilities exist in a system. The goal is however impossible.
Estimates provided by this approach is rapidly become obsolete by discovering new vulnerabilities by using different latest tool to
detect vulnerabilities.
Different engineering researches utilizes many reasons of vulnerabilities that have been reported in a system, analysis can only be
performed on the system in which enough vulnerabilities have been found.
1) Security is important feature of the system and it goes through many different penetration testing process before it is deploy
to the server. Engineering approach will be applied internally in this case to collect vulnerable information.
2) If the System is available publically then interest to vulnerability is increased. Engineering approach will be increase internally
or externally, using public vulnerability database.
1) Several types of vulnerabilities are hard to find automatically such as access control problem, authentication issue, and
insecure use of cryptography. Current tools to scan small ratio of security flaws. However, Tools are getting improve day by
day
2) Auditing tool to audit at initial stage of application development will helped to prevent this situation to occur in future.
3) Detail auditing and soak testing of .NET Code caused this incident in the first place.
<configuration>
<system.web>
<authentication mode="Forms">
<forms cookieless="UseUri">
Secure configuration setting:
<configuration>
<system.web>
<authentication mode="Forms">
<forms cookieless="UseCookies">
When Authentication token or Session token appear in requested URL instead of secure cookie, an attacker within network can also
scan monitor security information and take over session and get into the logged in account as a legitimate user. Session hijacking is
very serious issue after authentication of user.
It is bit more dangerous if user has to enter in payment part of any online shopping, they enter into payment website and enter in it
with user id and password. On the other hand, Attacker again steal session and get into payment site and can access credit card
informations and billing informations.
Best way to avoid session hijacking in ASP.NET Application is to disable cookieless authentication and force user to use cookies to
store as authentication tokens.
Almost all web applications use the Secure Socket Layer (SSL) to encrypt data passed between Clients to Web Server.
Using SSL for application mean that attacker is using network Sniffers will not be able to interpret data. They can see only
encrypted and meaning less format of data that unreadable for humans. Developer should require form authentication cookie
from your web based applications configuration setting.
<configuration>
<system.web>
<authentication mode="Forms">
<forms requireSSL="false">
Secure configuration setting:
<configuration>
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
Cookie can be embed in the request URL. Disabling cookie less authentication token. Unless request send to webserver should be
encrypted, network attacker still be able to read authentication token form cookie. Attacker will be able to Hijack user’s session.
Why it is necessary to disable cookie authentication with application security. It is useless for those users who won’t accept cookies.
Setting RequireSSL attribute to true in web.config will use secure connection during transmission of authentication cookie to web
server.
ASP.NET maintain session timeout to protect application’s security. Default timeout for session is 30 minutes. After 30 minutes,
user will be automatically logged out for that session.
<configuration>
<system.web>
<authentication mode="Forms">
<forms slidingExpiration="true">
Secure configuration setting:
<configuration>
<system.web>
<authentication mode="Forms">
<forms slidingExpiration="false">
Sliding Expiration reduce the risk of application security in web application in case authentication token is stolen by attackers. When
it set to false, initial log out become period inactivity from the time of initial login.
Attacker can steal token only for specified amount of time that is mentioned in Config file. Attacker can’t login as session get time
out.
To prevent application security issue, you can disable sliding expiration by setting sliding Expiration attribute to false.
Cookie is more than just a value, It is a name-value pair. An improper chosen cookie name can cause application security
threat. It is as dangerous as storing cookie in dangerous location.
<configuration>
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH">
Secure configuration setting:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="{abcd1234 ...}">
Default value of Authentication Cookie is .ASPXAUTH.If one web application is deployed to web server than .ASPXAUTH is secure
cookie name. When Web Server runs multiple web applications, it become necessary to assign unique authentication cookie name
to every application. If names are not unique, then logged in user can gain access to all of them. Best way to confirm that all web
based applications on web server have their own of set of authorized users is to change the authentication cookie name to unique
cookie value. GUID is cookie value for application security.
<configuration>
<system.web>
<authentication mode="Forms">
<forms>
<credentials>
...
</credentials>
</forms>
Secure configuration Setting:
<configuration>
<system.web>
<authentication mode="Forms">
<forms>
</forms>
Best practice is that creating software in the environment application should be deployed should not be same server in which it is
created.
Microsoft added a section to the Web.config file that you can use to quickly add test users to Web-based applications. For each test
user, the developer adds an element to the configuration file with the desired user ID and password as shown below:
<authentication mode="Forms">
<forms>
<credentials>
<user name="bob" password="bob"/>
<user name="jane" password="Elvis"/>
</credentials>
</forms>
</authentication>
Saving Login Credentials in Plain text in a configuration file is not secure, this should never use in production environment. Anyone
with read access to web.config file can take access the authenticated web application. It is possible to store encrypted password
value in Config file rather than storing password in plain text.In this case, User name is still not encrypted.Potential attacker perform
brute force attack against application.
Dejan, Baka and Kai Petersen. 2017) proposed method SAT. Static analysis tool (SAT) as a security threat, Coding fault represent
major security threats and SAT has capability to detect Security faults in application. Faults that should have been detected have
slipped through the static analysis process. However SAT is used to detect the slip and it is automated process.
Baka,Dejan.2009.Static Code Analysis to Detect Software Security Vulnerabilities.
Available at :
https://www.researchgate.net/profile/Kai_Petersen/publication/221548746_Static_Code_Analysis_to_Detect_Software_Security_Vu
lnerabilities_-_Does_Experience_Matter/links/555b31dc08ae6943a87946a8/Static-Code-Analysis-to-Detect-Software-Security-
Vulnerabilities-Does-Experience-Matter.pdf
2) Methods For The Prevention, Detection And Removal Of Software Security Vulnerabilities
ay-Evan , J. Tevis, JohnA and Hamilton, Jr. proposed method Software Scanner.
Software security checker with proactive capabilities would go beyond the standard auditing steps. It would identify general coding
practices that are inherently insecure in the source code and recommend alternative approaches like design patterns or algorithm.
Evan, Tevis.2004. Methods for the Prevention, Detection and Removal of Software Security Vulnerabilities.
Shin, Yonghee. Williams, Laurie (2008). An Empirical Model to Predict Security Vulnerabilities using Code Complexity Metrics.
Available at: https://collaboration.csc.ncsu.edu/laurie/Papers/p315-shin.pdf
Michael Gegick, Laurie Williams proposed method Pattern matching of every attack.
Researchers have constructed attack patterns that can illuminate security vulnerabilities in a software-intensive system design.
Attack patterns in a text-based format.
Gegick, Michael . Williams, Laurie. (2005). Matching Attack Patterns to Security Vulnerabilities in Software-Intensive System Designs.
Security patches have been introduced from which six widely used for web applications. Open source application has been selected
for the study case.
Fonseca, José. (2008). Mapping Software Faults with Web Security Vulnerabilities.
Michael Dalton, Hari Kannan and Christos Kozyrakis introduced method of FPGA prototype.
Researcher presented an FPGA prototype for Raksha that provides a full featured Linux workstation for security analysis.
Dalton, Michael. (2007). A Flexible Information Flow Architecture for Software Security.
The assessment instrument is a collection of tools and procedures to support development of secure software. The toolset also will
include a property-based testing tool to slice software code looking for specific vulnerabilities using signatures from the VMatrix.
Gilliam, David P. (2001). Reducing Software Security Risk Through an Integrated Approach.
Researcher created predictive models to identify which components are likely to have the most security risk. Data has been mined and
analysed data from a large commercial telecommunications software system containing over one million lines of code that had been deployed
to the field for two years.
Gegick, Michael. (2008). Prioritizing Software Security Fortification through Code-Level Metrics.
Analysis of Tool:
It’s worth noting we can run PMD at the project level or at individual class level.
Eclipse will display a brief description of the issue and possible remediation how to solve it.
This mature and quite well-established tool analyses source code for possible bugs, suboptimal codes and
other bad practices
Weaknesses in System:
It’s impossible to prioritize the issues.
User need to run it manually.
Developers can’t track it over time and centralize the results of your different tools
Tool 2: Fortify
Analysis of Tool:
Reduce the risk of a data breach.
Meet Compliance requirements of customer.
Increase the speed of Security Software Delivery.
Software is cost effective and secure.
Weaknesses in System:
It is time consuming if conducted manually.
Automated tools produce false positives and false negatives.
There are not enough trained personnel to thoroughly conduct static code analysis.
Automated tools can provide a false sense of security that everything is being addressed.
It does not find vulnerabilities introduced in the runtime environment.
Tool 3: Acunetix
Analysis of Tool:
Allows you to locate and fix the vulnerability faster because of the ability to provide more information about the vulnerability, such as source
code line number, stack trace, affected SQL query.
We can significantly reduce false positives when scanning a website because we can internally understand the behavior of the web application
better.
Can alert you of web application configuration problems which could result in a vulnerable application or expose internal application details.
E.g. If ‘custom errors’ are enabled in .NET, this could expose sensitive application details to a malicious user.
Detect many more SQL injection vulnerabilities. Previously SQL injection vulnerabilities could only be found if database errors were reported or
via other common techniques.
Weaknesses in System:
An automated vulnerability scanner will identify input parameters and will try to inject specific patterns to identify vulnerabilities on the target
website. This is done through the scanner’s vulnerability checks.
SQL Injection and Cross-Site Scripting, there may be chance of injecting garbage data in the website’s database.
If the target website being scanned by the automated vulnerability scanner is vulnerable to email flooding or mass mailing attacks, it is highly
likely that a number of emails will be produced as a result of the automated scanning of the pages and forms
Chapter Three
Research Methodology
Introduction
Every learned knowledge is a product of either a conscious or unconscious search. The conscious search is
usually continuous and directed towards a particular direction for a particular insight on a subject matter.
The conscious search in this context may be referred to as Research. Therefore, Research entails following some
methodology to look into a subject matter 16r the purpose of gaining new or modified knowledge.
Methodology describes the procedures to be followed for a successful research. In the scientific world,
therefore, Research Methodology is a standard defining the systematic processes required for a
particular investigation with the purpose of discovering knowledge or establish principles envisaged by
experience, theorization or observation (Argawal, 2015). This chapter of the report shall discuss the chosen
Software and Research Methodologies as well as provide the analysis of data acquired from opinion
samples of the research.
3.1 Software Development Methodology
In the today's world, where life and computing are almost becoming inseparable due to the ubiquitous nature
of computing devices and software that run on them, the Software industry has thus assumed a new status
where it is considered one of the most important industry driving the economy of nations of the world.
Computing has found its place in diverse areas such as Agriculture, Health, Security, Manufacturing,
Education, etc. This has increased the competition among the software industries seeking to monopolize
the market. Some of the factors that determine the chance of succeeding this
Competition include:
The user needs the software product meet.
How early is the software product brought to market?
The marketing strategies
The quality and usefulness of the software product.
The development model used.
And how adaptive such a model is to the changing requirements of users.
Software Development Methodologies also called Software Development Life Cycle (SDLC) may classified
as either traditional or modern. For example, the Waterfall, Iterative, Spiral, Big Bang, V -Model, etc. are
traditional SDLC methodologies; while Agile, Rapid Application Development (RAD), R ational Unified
Process, Prototyping model, etc. are considered modern SDLC methodologies. All these methodologies,
specify a unique series or activities to be followed to ensure success in the process of system development.
The models, either traditional or modern, are suitable and for particular Categories of systems. That is, one
may not adequately serve or achieve the whole goals for all kinds of stems to be developed. Therefore, in
addition to the aforementioned factors, the choice of which Methodology to use is also influenced by the
industry, development team, system to be developed, or clients for which the system is being developed
(Waters, 2007). All of these methodologies have a number of standard phases. The phases may be
summarily grouped into Planning, Analysis. Design and Implementation invalid source specified. As shown in
Figure 3.1; or broadly grouped into Initiation. System Concept Development, Planning, Requirements Analysis,
Design, Development, Integration and Testing, Implementation, Operation and Maintenance, and
Disposition.
Since the rapid changes in environment influences changes in the requirements of a software product, it
becomes very important that the chosen software development methodology be adaptive so as to keep to the
competition. Therefore, for the purpose of this research, Agile Software Development Life Cycle Methodology
is chosen. This choice is influenced principally be the fact the security systems are often under attacks,
making requirements to constantly change; the user on the order hand requires security of transactions
irrespective of what attacks the system is experiencing. The agile methodology would fit this kind of system
properly.
Figure 3.1: Simplified SDLC (Dennis, Wixom, & Roth, 2012)
Objectives of Research:
The main purpose of research is to discover answers of many questions by the mean of
scientific procedures. Main aim and objective of research is to find out the truth which is
hidden from human eye and knowledge and has not been discovered yet.
Each research study has its own purpose and fulfilments, some of the research
objectives fall into following groups:
1) To gain knowledge and familiarities into particular topic. Researcher cannot start
research without knowing its background and usually it is practise that researcher
chose topics in which they are already familiar and they have many experiences
on it.
2) Researcher knows very well that how can he/she portrait characteristics of
particular individual or situation or event.
3) Analysed the frequency of occurrence of some events or problems.
Motivation in Research:
What make people to motivate on research or to start investigation on any area?
This is the fundamental question of research. There are possibly many motives to do
research. Motives can be one or it can be many.
1) Desire to get Research Degree like PHD along with its consequential benefits.
2) Some may be like to tag their name along with Doctor Like Doctor abc.
3) Some may be want to teach degree classes as a professor in any well-known
university.
4) Desire to face previously unsolvable challenge. For example real practical
problem to initiate research.
5) Desire to get intellectual feeling of joy after doing some creative work.
6) Desire to serve whole humanity.
7) Desire to get respect from society.
It is not necessary that researcher has covered all aspect of motivation to do research.
Some are may be missing in the list. Many more factors such as employment
conditions, directives of government, curiosity about anything to find the fact, social
awakening and thinking.
1) Observations
2) Research techniques
Personal Interview with IT Security staff from any domain company.
Statistical Analysis (Charts)
Questionnaires
3) Methodology will involve design, development and analysis of security layers in
Airline system.
4) Implementation of Airline ticketing and online booking system where online
payment will be made. Basically Level of security will be measure at login page
and Payment page. It will be web based application.
5) Following Tool and Technology will be use.
ASP.NET MVC
HTML
CSS3
Jquery
Visual Studio 2015
Sql Server 2012
Research can also be define as a systematic and scientific search for relevant
information in particular topic. It can be say that research is art of scientific investigation.
Meaning of research is “Careful investigation or inquiry or search for new facts in any
branch of knowledge”.
Redman and Mory define that research is an “effort to gain veil knowledge”. Some
people says that research is a movement, a movement from unawareness to be awared
one. It is actually voyage of discovery. Curiosity is the mother of all knowledge and the
methods, which human being obtain the knowledge of specified topic that is unknown to
whole world, it can be term as research. Research is an academic activity and it can be
technical and non-technical knowledge.
Clifford Woody says about research that it consist of redefining problems, hypothesis or
suggesting solutions, Organising data, Collection and evaluation of data, finding
research conclusions and at the end careful testing to determine whether it fit the
formulating hypothesis.
M.Stephenson and Slesinger defined research as “the manipulation of things, symbols
or concepts for the purpose of extend, verify or correct knowledge.
Researchers always contribute to exceed the knowledge ahead or get the knowledge
that is unknown to the world yet. It is the participation in existing research to add more
knowledge or start a new research in new dimension to let the world know about it.
Finding the truth with the help of study, experiments, and comparisons. In short, Search
of knowledge through systematic method of finding solution of problem is called
“Research”.
The use of Gantt chart, in calculating the estimated and precise completion
date fall here, new components are taken as quick as possible, with an
unusual state of reliability. This in return buys more time and chance to
ensure a better implementation and testing of the product sooner than
arranged if it meets adequate business value.
1) Waterfall Model
In software development
industry somehow,
developer and development team have to bump into the waterfall model.
Waterfall model is beneficial or not, risky or less risky, old or new technology,
sometime development team has to adopt waterfall methodology.
It is consider as traditional method of adopting software development process in
software engineering. Waterfall work as linear flow having specified sequence to
perform software development. It is usually perform module by module
development and next level of module remains depend on previous model till
the end of project.
Moreover, in this methodology, changes may occur after the testing phase or
after release of product. Client realize that they need some other features also
and some time that change is not possible at the end of entire project. It may
cause defects in other modules also that was working fine till release.
Pros:
Easy to understand and fully functional
Detailed documentation helps to understand and develop(Even to new
developer in the team)
Save time
Allow easy and detailed testing and data analysis.
Cons:
It is not applicable for project under maintenance, it is helpful for products
that is going to develop from scratch.
It won’t allow addition of new feature (either small or big) in the middle of
development phase.
Team cannot determine outcome of project.
Always create fuss for long projects like ERP and so on
2) Prototype Methodology
It is a specialized software development process in which developers initiate
sample to validate its functional essence to the customers and do essential
changes before creating the final solution.
In fact, best part of this methodology is that it tend to resolve different type of
issues occurring with the waterfall method.
Pros:
1) Give clear idea about the function of project from the initiating process of the
software.
2) It reduce the risk of failure in a software functionality.
3) It focus on detailed requirement gathering and overall analysis.
Cons:
1) There is a change in increase in management cost.
2) Too many meetings and involvement of clients can affect software development
processing.
3) Too many changes in the middle of software development can affect the
workflow of software.
The agile software development methodology is used for clear and well-
organized project management that allow iteration of changes.
Such type of a methodology is highlighted for managing many software
engineering projects. Another good thing is that it minimizes danger of software
failure in short time boxes that is known as iterations, which last from six to eight
weeks.
Pros:
1) Adaptive approach of software development that respond to changes easily.
2) It allows direct communication between team and business users or product
managers and in this way it maintain transparency.
3) It help in develop quality product by giving the product to testing and find and
resolve bugs prior to finalization of project.
Cons:
1) There is a less documentation of product functionality and all focuses are on
development of software.
2) Outcome or deadline is not clear in the scenes that there is a chance of getting
off-track
4) Rapid Application Development
It aimed to provide quick results, rapid application development give marvellous
development processes with the essence of other development approaches. This
methodology is introduced to take the maximum advantage from the
development of software. There is no doubt that it is designed to add the
workability of the whole software development procedure for the participation of
active users.
Pros:
1) Make the development process effortless.
2) It allows Business users to take quick review.
3) It encourage feedback from end users for improvement.
Cons:
1) Completely dependent on team for good performance.
2) It work on the system module by module to confine on this methodology.
3) It require skilled and experienced persons to handle complexities.
4) Not suitable for small application or small budget applications.
5) Dynamic system Development Model Methodology
Pros:
1) Strong grip on the software development process to users and software
development team.
2) Functionality of each deliverable is quick.
3) It offer easy access to end users for developers.
Cons:
1) This methodology is costly and dedicated for big budget projects.
2) It is not suitable for small organizations.
6) Spiral Models
Highly sophisticated design of spiral model is meant to reduce early risk in the
project. As the development process start, developers initiate on a smaller level
and can explore risk in the beginning.
Further on, developers intended toward a plan for iterating of the spiral.
Accomplishment of any spiral life cycle model based on observant, consistent
and familiar management of the project.
Pros:
1) Risk factor considerably reduced by adopting this methodology.
2) It is excellent for large scale project.
3) It allows to add new function later.
4) Suitable for highly risky projects with varies in business need.
Cons:
1) This model is costly for software development.
2) Failure in risk analysis and it may damage the whole project.
3) It is not appropriate for low risk project. In other word, no need to use that
methodology, if there is no risk involve in the development process.
4) There is a chance to continue this project and never finish.
Pros:
1) It focuses on customer involvement.
2) Establish clear plans and schedules.
3) Developers are specially committed to that particular project.
4) Equipped with modern methods of quality software development.
Cons:
1) Effectiveness depends on how many no of people involved in particular project.
2) It require frequent meeting between end users and development team.
3) It is necessary for excessive development changes.
4) Exact possibilities of future outcome are really unknown.
Pros:
1) It is useful for bigger and complex project with continuous success.
2) 5 easy procedures bring outcome in a better manner.
3) It is programmed for easy development and built for pre-set standard of
software development.
Cons:
1) It is not suitable for small size project and for single developer of application.
2) It is totally dependable on the leading developers.
3) No Proper document is provided to software owner about software usability.
Pros:
1) Allows for simultaneous groups and bunch of excessive information.
2) Generate huge amount of valuable information in short span of time.
3) It support immediate resolving of differences with reasonable assistance.
Cons:
1) It require excessive amount of time for scheduling and planning.
2) It require significant amount of effort and time.
3) It need highly skilled and trained experts, which is tough to find.
Cons:
1) Effort of team determine success of software development process.
2) Unskilled business analyst can be severely problematic.
3) Too much flexibility leads developer to lose focus on work and it may leads to
track off from deadline.
Pros:
1) Give priority on documentation writing.
2) It removes the project risks after engaging customer at every meeting.
3) It has less requirement for integration.
Cons:
1) Need highly skilled software developers.
2) Development process of this methodology is complicated.
3) Integration too many modules may lead to confusion.
4) It is complicated to understand.
Bright side of this methodology is that it is applicable to all kind of project like
small projects to large scale projects. Excellent development by using this
methodology is suitable for those projects who is in alteration process
continuously.
The scrum software development model initiate with short span planning,
meeting and completes with conclusion review. This methodology prompt
development of software that consist of series of iterations to develop required
software. It is a perfect approach because of its effortlessness bring on track the
progress of project.
This methodology deal with variety of complexities and need expert hands.
Pros:
1) Decision making are in the hand of the team.
2) Too many lengthy business requirement document is not considered during
adoption of this methodology.
3) Light control method emphasis with constant updating.
Cons:
1) It is not suitable for large scale projects.
2) Require highly skilled and expert team and there is no space for low skilled
person in the team.
3.1.2 Agile Development Life Cycle
Basic goal of agile methodology is to adapt change and deliver workable software
in every sprints during specified time. However, all software development
methodologies have some variations in the way it defines the phase of software
development. Even though the goal is same, each team’s process description flow
may vary on project to project.
This view shows full Agile life cycle model within any organization. In any
organization there may be different projects operating simultaneously, different
sprints logged into different product lines and team member need to deal with
variety of customers (Internal or external) with different range of business needs.
Embrace Changes
A key point of Extreme Programming is the cost of change the program and it can be
constant over time.
It can achieve by following:
Emphasis on taking continuous feedback from end users.
Design and redesign with short iterations.
Coding and Quality assurance frequently.
Remove bugs in earliest that reducing cost.
Keep the customer intact throughout the development
Deliver workable product to the customer.
Extreme Programming in a Nutshell
Extreme programming involves following:
Write unit test before starting development and keep running all of the tests
running during development of that module. Unit testing usually performed by
development team to eliminate most obvious bugs and later Automation testing
performed to make sure application is free from all front end and logical bugs and
it help to reduce cost.
Development starts with simplest design and code the specified features and
redesigning if required.
Pair Programming with two programmers in same screen by taking control to
computer one by one. One who looks the screen and coding of developer give
continuous feedback and inputs to improve the code and remove bugs that may
be avoided by the developer who is coding at screen.
Integration of all code from source control and testing the whole system
repeatedly to check if error occur at nay instance.
Introduce minimal working system into the production and upgrade it when
required.
Intact customer all the time during sprints and receive feedback constantly.
Iteration facilitates the changes as the software develop with change requirements.
Extreme programming helpful to solve many problems that often faced by software
development projects.
Cancelled Projects > Focus on continuous business users involvement and it
ensure transparency about the difficulty and Timeline of project and provide
immediate resolution of any issues.
Slipped Schedules > Achieve development cycles that make sure timely
deliveries.
Costs involved in changes > Broad and ongoing testing to make sure particular
changes are not breaking the existing functionality. Live projects always take
sufficient time to accommodate changes so that current system should not affect.
It need careful and nonstop testing.
Production Defects > Unit testing perform to detect and fix the bugs soon as
possible.
Missed the required functionality of business domain > Behaving business
users as a part of the team ensure continuous communication and clarifications.
Staff turnover > Team collaboration ensures energetics and good intentions.
Team spirit is required in all methodology to develop correct software
development within time.
Business Changes > Changes are consider a fact that cannot denied by any
development team and accommodate changes at any time.
No 28 30.77%
Partially 24 26.37%
Yes 39 42.86%
Total 91 100%
2) Do you have any idea Buffer overflow and XSS attack in web
application?
No 12 13.19 %
Partially 17 18.68 %
Yes 62 68.13 %
Total 91 100%
No 23 23.19 %
Partially 20 28.58 %
Yes 48 48.23 %
Total 91 100%
No 32 33.29 %
Partially 30 38.38 %
Yes 27 28.33 %
Total 91 100%
No 32 22.18 %
Partially 30 51.38 %
Yes 27 26.44 %
Total 91 100%
Chapter Four
Collection of Vulnerable Data
Statistical analysis of vulnerabilities or accuracy of VDMS relies upon that
how accurate is the vulnerability data. Reliability engineering assumes that
SRMS have been applied before or during testing and in settings where the
collection of failure data is the integral part of testing environment.
Unfortunately, most of vulnerabilities were not found during testing (Pre-
release) of software development. Even if they are found, it consider as
system fault during testing. That is the reason, vulnerabilities may be often
detected after the product release, when the collection of important data is
much more difficult.
Vulnerability research is made frequently base on public vulnerability
database. NVD (National Vulnerability database) is used for almost all of
the research made on VDMs. However, the NVD is not designed to
vulnerability discovering model, it has four important short comings that are
incomplete inclusion, chronological inconsistency, lack of documentation
and multiple entries for a single detection.
4.1 Other Public vulnerable Data Base
As a Researcher, we know that NVD is used for remainder of VDM
literature but it is not only public database. In addition to the NVD, some
other databases are most prominent that include “Bugtraq” that run by
same organization as the Bugtraq mailing list and another is Open Source
Vulnerability database (OSVDB).
4.2 Upcoming/Future Vulnerability Data Base
Before assessing or measuring software security, Researcher need an
accurate source of data. We need Next Gen Vulnerability Data Base. At
this point Researcher wants to propose some requirement of such
database. Next Gen Database store all sort of event or black movement
and it must be log in that database. It may include release, injection,
detection of vulnerability, disclosure to vendor, available to public, applying
patch and scripting dates. Every field should contain precision of the date.
For example approximate within three weeks because most of the
information is found on internet, each precision date will contain evidentiary
URLs and the date of evidence entry.
One of the challenge of these Next Generation database will be to log
separately to distinguish easily between vulnerabilities and vulnerability
detection events. It should log both information. It should log to URL in
Database that distinguish same vulnerability from same application in
different Vulnerability Database. It will help to distinguish different yet
similar vulnerabilities and detection events.
All Public Vulnerabilities database must be maintained for many years
because it was useful for VDMs These Database is more likely to evolve
over time. All public database should also document, each data field should
be maintain that how it is obtain and accurate it is. Date of last version
since then software is no longer tested, need to check if it contain ay
vulnerability. These information will help research community to gain better
understanding of vulnerability holes like how it prevalence changes over
time and how they are found.
4.3 Conclusion
Existing VDM literature is relies upon inaccurate and inconsistent data from
Public Vulnerable Database, which were never used for any purpose. This
data does not necessarily represent vulnerability detection events. The
VDM used in Database literature is not appropriate for modelling
vulnerabilities. Researcher cannot model vulnerability discovery until we
have a database design usage in mind. Security providing organizations
should design and implement next generation Vulnerability database to get
high quality vulnerable database that can be used by many other vendors
to evaluate their software by looking into that security holes.
Chapter Five
SOFTWARE SPECIFICATION AND REQUIREMENTS
5.1 Introduction
Chapter Six
SYSTEM ANALYSIS AND DESIGN
Introduction
When User press Scan Button, it scan entire .NET Project class by
class and method to method.
6.2 Design of the Proposed Systems
The design of the proposed systems is the next here, the design of our
proposed system is presented in previous chapter. Phase of the analysis of
an existing software are not the target of this research. Therefore, our
system modifies the preceding framework after observing. The proposed
framework does not use emails to ensure real-time processing.
Our proposed design of system require scan the .NET Project in a way that
maximum vulnerabilities in software code can be caught by the Scanner.
Researcher will write Code in a traditional way and pen testers will test the
system. Experimented system will be test repeatedly and it will be checked
that it become victim or not. Every time system will be tested by various
ways and researcher will clean the code in a standard way to avoid it to
become vulnerable.
On the web Applications, C# code and more usually ASP.NET is commonly
vulnerable internet world.
Some vulnerable code samples are following:
https://stackoverflow.com/questions/3940576/exploitable-c-sharp-functions
In Line Queries:
OS Command Injection:
This type of code is vulnerable to command injection because second
parameter Process.Start() is taking extra command passed from it using
“&” character to batch multiple command.
Below pasted code are some sample of vulnerable code that .NET Code
scanner will identify wrongly written code? Every time .NET project will be
test by pen testing methods to check if it is vulnerable of buffer overflow is
affected or not.
Not Vulnerable:
Vulnerable:
For this thesis work, resource requirements included the internet, android
devices, computers, volunteer testers, and their time. The researcher relied
more on the internet subscription provided by the institution and also that the
tester would have computer and android devices since most of the volunteer
tester were hopeful to be students of institute.
The following Test cases in table 7.1, in their simplified from where developed
for the systems implemented during the thesis work.
TCID TCS Prerequisite Expected Test
Result Environme
nt
BM001 User Creation User Name, After Browser
or Signup will Email, fulfilling
register user Password Validation,
as User will
authenticated allow to
user. enter in the
system.
MM001 Entering in the User unique User Login Browser
system after username account
entering such as Email created
correct user and Password.
login and
Password.
MM002 User Login on User Error Browser
Registration Name/Passwo Message or
system. rd as provided Validation
during account for wrong
creation. user name
or
password.
SEC00 Monitor data Traffic Tester is Browser
1 sent across monitoring of able to
wire a network via monitor
sniffing could entire data
reveal an move
abundance of across
important network.
data.
SEC00 Looks for Programmer System will Browser
2 “Secret” typically be hack by
keyword stored getting
sensitive data sensitive
in a secret file data.
which could
be reverse
engineered by
hackers.
SEC00 Examine Sometimes Data Base Browser
3 credentials in username, or system
Plan-Text password, IP will hack
while address and easily by
communicatio key are stored plain text
n and information.
transmitted in
clear text
form.
SEC00 Exercise Error page or Inspect and
4 Error Pages condition verify those
and could reveal exposed
conditions much information
information during error
which aid pruning
hackers in an page.
attack.
SEC00 Examine the If hackers Decrypt Browser
5 areas where recognize the Password
data is sensitive can easily
obfuscated obfuscated allow tester
parts which to enter in
contain the system.
crucial
information
such as
passwords,
they could be
decrypted
even if they
are
obfuscated.
SEC00 Examine URL During the Exposed Browser
6 for Sensitive absence of variable of
data SSL, the URL URL can
is readable in make the
clear text system
form. hackable.
SEC00 Look for Internal Server Windows /
7 internal servers name will Mac SERVER
server names contain help directly
sensitive to enter not
information only in web
and their application
name could but in entire
aid an Server
attacker in (Hosting
attacking the environmen
internal t)
network.
SEC00 Looks for Sometimes Exposed Browser /
8 more an application Information Windows/MA
information returns too help C
returned than much hackers to
is needed information enter in the
unnecessarily system or
. even in
Hosting
environmen
t.
SEC00 Examine Binary file System will Browser
9 contents of could contain be hack
binary file sensitive after getting
information sensitive
information.
http://resources.infosecinstitute.com/net-penetration-testing-test-case-cheat-
sheet/#gref
7.1.4 Test Environment Setup
Test environment setup phase of STLC involves deciding the hardware and
software conditions required to perform testing of the software product. It
includes setting up a client-server network. If required and other necessary
things such as test data. For the purpose of this testing, a normal secure server
has been used to hose Registration system that is Demonstration project to
apply secure code and apply penetration testing.
During the test execution phase, the test team tests the software product based
on the test plan and test case developed. Identified bugs are corrected and
retested over again. Therefore, requirements traceability matrix is completed
with status of test for each requirements.
In this research, the test case were tested and user was also allowed to use
their function in the developed applications. Identified errors were corrected and
tested again.
At this phase, the test team identifies the test bottleneck for elimination during
the next testing exercise. Therefore, the test metrics is prepared, learned lesson
documents, qualitative and quantitative report on the testing process, analysis of
the test of the result, and preparation of closure report.
STLC define phase, Software testing Methodology (STM) define the particular
strategies used in testing a software product. STM may be functional or non-
functional testing approach; all of which aim at ensuring that the software
product meets its specification and that no undesirable output are produced by
the system when tested again worst case scenarios. That is all testing
methodologies and also aim at ensuring that the code has no or too few bugs.
During the integration of the different modules developed during this research
work, every or those was For example, when integrating the
Captcha module, S t e g a n o g r a p h y m o d u l e ,
encryption/Decryption module and security parameter
module, entry function was called with the requ ired parameters and the
output thereof was examined. Again the same entry function was called but
with wrong parameters either in number or data types.
7.2.1.3 System Testing
System testing involves testing the whole system after integration for errors and
bugs. This is also called black-box testing since the internal workings of the system
is not the major concern but input supplied to the system and the output generated
by the system.
Acceptance testing is the last stage of functional testing where the software
product is tested by the expected users to ensure that it performs as specified
in the requirements and that the users are able to use the product comfortably,
the usability of the product.
7.2.1.6 Conclusion
The testing procedure passed from Penetration testing. External Pen testers
were hired for this purpose who tested the Registration system from their
Remote Location and prepared a list of Bugs and reason of raising bugs in
their Documents.