Securing The Rapid Application Development (RAD) Methodology

1y ago
14 Views
2 Downloads
742.54 KB
55 Pages
Last View : 1d ago
Last Download : 3m ago
Upload by : Mika Lloyd
Transcription

Securing the Rapid ApplicationDevelopment (RAD)MethodologyBYKividi Kikama JrLewis UniversityDecember 8, 2010

(This page has been intentionally left blank)1

TABLE OF CONTENTABSTRACT.3INTRODUCTION1.1PURPOSE AND SCOPE.5OVERVIEW OF SOFTWARE DEVELOPMENT2.12.22.32.42.5HISTORY OF SOFTWARE DEVELOPMENT.8SOFTWARE DEVELOPMENT LIFE CYCLE .9STAGES OF THE SDLC.10SDLC MODELS .13FUTURE TRENDS.17SOFTWARE SECURITY EXPLOITS3.13.2THREATS TO SOFTWARE SECURITY .19IMPROVING SOFTWARE SECURITY .27THE RAPID APPLICATION DEVELOPMENT METHODOLOGY (RAD)4.14.24.34.44.54.64.74.8OVERVIEW.31PHASES OF RAD.32FOUNDATION OF RAD.33APPROPRIATE RAD PROJECTS.35BENEFITS OF RAD.36DISADVANTAGES OF RAD.36SECURING RAD.37RAD IN ACTION – CASE STUDY .45SUMMARY.41WORKS CITED .532

ABSTRACTEvery organization, big or small, depends on some kind of softwareapplication as part of its everyday operation. Whether it’s the software in thecash register, the gas pump, or the e-commerce website, these applicationshelp the business to increase productivity and respond to the needs of alarger customer base in an expedient and efficient manner. Softwaredevelopment has been around for the last half century in one form oranother, and many of us are too young to remember a world where thetedious tasks that we hardly give a second taught to were done manually.The software development process is a critical part of an organization’ssuccess because the development of software is usually an attempt torespond to a problem, address a shortcoming or to gain a competitiveadvantage. The objective of software development is to not only resolve thetechnical problems, but it also addresses the organizational problems and, inthe longer term, the business problems. Developing usable software requiresa well-defined process where all the parameters and objectives are clearlydefined. Developing applications, specifically web applications, requirescareful planning and a structured process in order to obtain desired resultsin a timely and cost-effective manner.The Software Development Lifecycle (SDLC) is just such a structured processthat is used by most application developers in order to respond to thechallenges that they are presented with by the business leadership. Thereare several models of the SDLC in use by different organizations such as theWaterfall Model, Spiral Model, Top-Down Model, Bottom-Up Model, and RapidPrototyping which is the subject of this paper.3

The evolution of SDLC models has gone hand-in-hand with advancements intechnology and continuous research done to address the shortcomings ofprevious models. Another reason for the continued progress in the models ofSDLC is that the business leadership of many organizations, in their attemptto cut costs and streamline operations, is putting a lot of pressure ondevelopers to reduce development time and provide a quicker turnaround onprojects. Often times, these projects are required to be completed at a lowercost and without sacrificing quality. In response, agile methodologies such asRapid Prototyping and Extreme Programming (XP) have increased inpopularity among developers.Rapid Application Development like most agile methodologies presents someunique security concerns and most security methodologies are built fortraditional development methodologies, which are qualitatively andquantitatively different from agile development methodologies (AlbertoSillitti, 2010). It is therefore necessary to adapt the RAD methodology inorder to account for the shortcomings in the area of security by addingsimple but effective security measures in each phase of RAD. This paper willintroduce the activities aimed at improving the security of the RADmethodology by baking security activities into the core of the developmentprocess.4

CHAPTER ONEINTRODUCTIONBuilding a secure software application involves incorporating carefullyplanned activities in the design process. Consideration of security in theSystem Development Life Cycle is essential to implementing and integratinga comprehensive strategy for managing risk for all information technologyassets in an organization (Richard Kissel, 2008). This chapter explains why itis necessary to account for security in the software development process.1.1 Purpose and ScopeSoftware development has greatly improved the quality of our lives. It hasmade the world feel smaller and has increased our connectivity to oneanother. This connectivity has not only been positive, it has also unearthedsome unintended consequences that individuals as well as organizationshave to fight against. Software development has eroded the boundaries thatonce existed due to time, location and distance. Nowadays, transcontinentaltransactions are performed in a matter of seconds, blurring the dividing linesthat once separated the different entities.Despite the many benefits of Software Development there are side effectsthat can become a burden if they are not handled correctly. The samesoftware that is used by the organization to increase productivity hasbecome an access point for criminals seeking to penetrate the organizationin order to steal or sabotage critical assets. As software has increased inusability and complexity, so too have exploitable weaknesses andvulnerabilities. Studies have shown that the number of softwarevulnerabilities continue to trend upward at an alarming rate. The number of5

vulnerabilities reported to CERT from 1997 through 2006 has shown a steepincrease from year to year creating an urgent situation for organizations toimplement adequate software security measures in order to mitigate therisks and protect the critical infrastructures that run our businesses (Allen,2007). Figure 1.1 shows the number of vulnerabilities reported from 1997 to2006.Figure 1.1 Vulnerabilities reported by year (Source: McGraw, 2006)In the past three months, over 540 million attacks were blocked in 228countries. Last quarter, even Norfolk Island with a population of 2,141appeared on Kaspersky Lab’s antivirus radar. During the quarter, the averagenumber of infection attempts increased globally by 4.5% per month(Namestnikov, 2010).6

In the Global Security Survey report conducted in 2007 by Deloitte, 87percent of respondents cited poor software development quality as a topthreat for the next 12 months (Allen, 2007). This is as true today as it was 3years ago and creates the need to include security as part of anorganization's software development life cycle in order to ensure that thesevulnerabilities are handled appropriately.The purpose of this paper is to serve as a guideline for Software Developersand Project Managers on how to integrate security into the SoftwareDevelopment Lifecycle (SDLC) RAD methodology while taking into accountthe faster turnaround from conception to market that is a characteristic ofthis methodology. I will present ways to introduce security measures withineach phase of the model which, in turn, will ensure that the end process issecured. I will show how incorporating security activities into the SDLC willincrease the security posture of the organizations by ensuring strongersecurity, reducing the likelihood and/or impact of exploited vulnerabilities. Iwill also show that the placement of correct security measures in each phaseof the RAD methodology is more beneficial when done during thedevelopment process than attempting to add it at a later stage.Furthermore, I will present evidence to show that the end result of insertingcorrect security measures in the SDLC is the reduction in overall cost to theorganization.7

CHAPTER TWOSOFTWARE DEVELOPMENT2.1 History of Software DevelopmentMost people under 50 years old have never known a world withoutautomation. In earlier times, most business processes required manualintervention by a multitude of people and resources, thereby increasing theproduction time and decreasing the quality of services that businesses whereable to offer. Software development as we know it today dates back to thelate 1940’s and early 1950’s and was a result of the need for businesses tostreamline their operations and increase productivity and the quality of theirproducts and services . The productivity of software projects has increasedabout 3 times since 1970. In 1970, COBOL was the state of the art,mainframes were in vogue, and the PC was nothing more than a dream ofsoftware engineers. The internet didn’t exist. By year 2000, end-usercomputing exploded. Software developers are developing in languages likeJava, C , ASP, and other visual languages. No longer are softwareapplications being developed for back office operations, but softwareapplications are being used as marketing tools and competitive weapons.Applications are increasingly delivered to customers via the internet(Longstreet, 2006).From its humble beginnings, software development has gone throughtremendous growth over the years, increasing in size, complexity, andfunctionality, to the point that many have a hard time imagining how thingswere done before software development became a common practice. Therise of software development to the point of becoming an integral part of thebusiness culture has been greatly influenced by major developments anddiscoveries in hardware development and the rise of the Internet. These8

developments led to an increase in demand for reliable software to run thesenew machines, and, in response, many software were written usuallywithout any established model. It was a little difficult to develop softwarewithout a proper model, so the NATO Science Committee sponsored twomajor software conferences, one in 1968 and the other in 1969 that manyconsider as official birth period of software engineering (History of softwaredevelopment, 1997). The attendees at these meetings were senior figures incomputing. They discovered a remarkable set of similarities in the problemsthat they were having trouble dealing with. They thus legitimatized SoftwareEngineering as the study of the broad range of problems encountered indeveloping software. The 1968 NATO Conference also devoted considerableattention to many issues that are quite familiar to us today. Thus the issueof how to create processes that could be expected to be effective inproducing high quality software on schedule and within budget washighlighted (Osterweil, 2007).The advent of the World Wide Web opened many doors for the field ofSoftware Engineering. The World Wide Web brought out opportunities likenever before with many programmers hired to implement web applicationsthat have taken most business to the virtual sphere. In addition, the internethas also opened paths for hackers to attack the infrastructure of manyorganizations through their public-facing web applications by exploitingvulnerabilities in their software.2.2 Software Development Life CycleSoftware development (also known as Application Development; SoftwareDesign, Designing Software, Software Engineering, Software ApplicationDevelopment, Enterprise Application Development, Platform Development) isthe development of a software product in a planned and structured process.9

This software could be produced for a variety of purposes. The three mostcommon purposes are to meet specific needs of a specific client/business, tomeet a perceived need of some set of potential users (the case withcommercial and open source software), or for personal use (e.g. a scientistmay write software to automate a mundane task) (Software development,2010).The Software Development Life cycle (SDLC) is a structured businessprocess that is used by many organizations that build software. The SDLChas been around since the 1960’s and has morphed into several versionsover time as many organizations have adapted the process to fit theirspecific development needs. From the sequential Waterfall model which wasthe original version to the iterative models such as the Spiral model and onto the agile models such as Extreme Programming there are many models inuse today. The goal of a good SDLC process is to capture, verify, andimplement all the requirements needed to make the application useful to theorganization (Purcell, 2007). The SDLC requires the involvement of peoplefrom many disciplines such as architects, analysts, programmers and usersworking together toward a common goal. Often times, the success of thefinal product depends on the choice of model, so organizations need to bemindful of selecting the model that fits their situation. Factors such as time,skills, and experience in software development play a part in determiningwhich model will work for software development.2.3Stages of the SDLCThe Standard SDLC consists of five stages as shown in figure 2.1. Thesestages can be customized according to the specific model.10

Figure 2.1 The SDLC – A Conceptual View (Source: Richard Kissel, 2008)II. The Five SDLC Phases (Richard Kissel, 2008)The five phases of the SDLC, as defined by NIST SP 800-64, are as follows:1. InitiationThe main objective of this phase is to identify all of the requirements neededto design or purchase the system. This is accomplished by first determiningthe reason for the system, identifying the business problem that the projectis attempting to resolve. The second activity covered in this phase is toidentify all the stakeholders that are affected by the undertaking. Steps inthis phase include establishing the basic system idea, preliminaryrequirements definition, feasibility assessment, technology assessment, andmanagement signoff to continue to the next phases (Purcell, 2007).2. Acquisition/DevelopmentThe main objective of this phase is to convert the functional and technicalrequirements from the initiation phase into detailed plans for the proposedsystem that can be interpreted by software programmers. Steps in thisphase include analyzing the results from interviews, developing mock ups11

and use cases, and translating the results into sequence diagrams, activitydiagrams, state diagrams. Another activity that’s prevalent is this stage isthe refinement of the user interface design to include more details. At theend of this phase the development team should decide on the direction forimplementing the best solution that responds to the business problemoutlined in the initiation phase.3. ImplementationThe main objective of this phase is to create a working application using theanalysis and design recommendations from the previous steps. Steps in thisphase include the actual coding of the information system by programmers,preliminary testing and debugging to ensure that everything is working asexpected. User functionality is tested through user acceptance testing,Quality Assurance testing, load testing, and other types of technical testing.The end result of this phase is the integration of the completed system intothe production environment.4. Operations/MaintenanceIn this stage the system is live in the production environment; the mainobjective now is to make sure that it continues to function as planned. Inorder to ensure that the system remains functional preventative andmaintenance steps must be performed in a structured way. Steps in thisphase include implementing patches, and correcting bugs that arediscovered along the way. It does not include functionality upgrades oradditions; those must follow the normal development phases starting frominitiation. As long as the system exists in a production environment it mustbe maintained. The end result of a proper implementation of this phase is adependable system that runs with minimal interruptions.12

5. DispositionThe main objective of this phase is to remove the system from theproduction environment in a structured way. This occurs once the system’sfunctionalities are longer needed or a replacement system has been created.Steps in this phase include archiving the existing system, and performing aswitch to a new system by minimizing downtime. The end result of thisphase is the complete removal and retirement of the system.2.4 SDLC ModelsThere are many ways of implementing the Software Development Life Cycle(SDLC) in an organization. Each organization has its own set of realities so astandard one fits all SDLC is not realistic. Often times in order to respond totheir specific needs organizations implement their own version of SDLC. TheSoftware Development Life Cycle can be carried out in a number of differentways and these ways are called models. The SDLC models have evolvedover the years as technological advances have shown the limitation andweaknesses of older models. From the linear-sequential models such as theWaterfall, through the iterative models, newer agile models have drawn fromand improved on the best aspects of older models creating models thatprovide flexibility and dynamism.A software life cycle model depicts the significant phases or activities of asoftware project from conception until the product is retired. It specifies therelationships between project phases, including transition criteria, feedbackmechanisms, milestones, baselines, reviews, and deliverables. Software lifecycle models describe the interrelationships between software developmentphases. The common life cycle models are (Bezroukov, 2009):13

Waterfall ModelThe Waterfall Model is the oldest and most well-known SDLC model. Itinvolves a sequential step-by-step process from requirements analysis tomaintenance (Purcell, 2007). The Waterfall model has many advantagesincluding well-defined and understood requirements, an often times thereample time is set aside for the project. The main disadvantage of Waterfallmodel is its lack of flexibility. After project requirements are gathered in thefirst phase, there is no formal way to make changes to the project asrequirements change or more information becomes available to the projectteam. During a normal development process requirements almost alwayschange and the rigidity of the Waterfall model often leads to animplementation of the product that is obsolete as it goes into production.The Waterfall Model should not be used for software development projectswhere requirements are not well-known or understood by the developmentteam, the risk the project will fail is high. Additionally, not all theerrors/problems related to a phase are resolved during the same phase.There is a tendency to push the risk down the line and this result in asituation where major part of the risk happens or rises only towards the endof the project, especially during the implementation phase, where the cost torectify these risks also rises accordingly.Spiral ModelIn the Spiral SDLC Model, the development team starts with a small set ofrequirements and goes through each development phase (except Installationand Maintenance) for those set of requirements. Based on lessons learnedfrom the initial iteration (via a risk analysis process), the development teamadds functionality for additional requirements in ever-increasing "spirals"until the application is ready for the Installation and Maintenance phase14

(production). Each of the iterations prior to the production version is aprototype of the application (Purcell, 2007).The Spiral model was developed to respond to the limitations encountered inthe Waterfall model by introducing a formal way to make changes to theproject as requirements change. The advantages of the spiral model speakto the approach’s ability to lead to continuous refinement. Specifically, theiterative approach used in this model allows development to begin evenwhen all the system requirements are not known or understood by thedevelopment team. User feedback is used to make sure the project remainson track. The risk analysis step provides a formal method to ensure theproject stays on track even if requirements do change. If new techniques orbusiness requirements make the project unnecessary, it can be canceledbefore too many resources are wasted (Purcell, 2007).The implementation of a project using the Spiral model requires highlyskilled people in the many areas such as planning, risk analysis andmitigation, development, customer relation. Often times the process needsto be iterated more than once in order to arrive at the best solution. This canmake the process more time consuming and somehow expensive.Top-Down ModelIn the Top-down SDLC model high-level requirements are documented, andprograms are built to meet these requirements. Then, the next level isdesigned and built (Purcell, 2007). The advantage of the Top-Down model isthe ability to focus on the big picture without getting tied down by a specificdetail of the implementation. By successfully designing the majorcomponents at a high level, the hope is that detail implementation willbecome routine or seamless as thing fall into place. A major problem with15

the Top-down model is that real system functionality is not added andcannot be tested until late in the development process. If problems are notdetected early in the project, they can be costly to remedy later.Bottom-Up ModelIn the Bottom-Up SDLC model, the lowest level of functionality is designedand programmed first, and finally all the pieces are integrated together intothe finished application (Purcell, 2007). The main advantage of the BottomUp model is that the most complex components are developed and testedfirst. There is a level of assurance that the functionality at the lowest levelwork correctly prior to constructing the overall system. The Bottom-upmodel also encourages the development and use of reusable softwarecomponents that can be used multiple times across many softwaredevelopment projects. The problem with the Bottom-Up model is that thereis no assurance that the working components will work together correctly inthe finished system. For this to be the case extreme amount of coordinationis required to make sure that the inputs and outputs of each componentsatisfies the needs of the adjoining component. Lack of coordination can leadto a failed system where the individual working components are unable toprovide the services necessary for the overall system to be functioncorrectly.Hybrid ModelThe Hybrid SDLC model combines aspects of the top-down and bottom-upmodels in order to use the advantages of both models and eliminate thedisadvantages of each. This approach allows the development team to makechanges to the system early in the project if problems occur with the highrisk components. Many of the SDLC models are a variation of the HybridModel.16

Rapid PrototypingThe main idea of this model is to use prototypes built quickly to present tothe application users as a starting point for an iterative developmentprocess. The Rapid Prototyping model is used for graphical user interface(GUI) applications such as web-based applications (Purcell, 2007). Thismodel is covered in greater detail in Chapter 4 as it is the central aspect ofthe Rapid Application Development methodology.Other ModelsOther SDLC models include Model Driven Development, Chaos Model, AgileProgramming Model, and many others. One significant trend in thedevelopment of new SDLC models is the integration of software design toolsinto the programming environment (Purcell, 2007). Software developmenttools such as Visual Studio are using prepackaged code modules saved inclasses that programmers can reference. These classes containfunctionalities such as databases connection, and login forms thatprogrammers had to build for themselves in years past.2.5 Future TrendsSoftware engineering is a relatively young field that is evolving at anexponential pace with projected future developments that many of us wouldhave considered as science fiction only a few years ago. A lot of the growthcan be attributed to the contribution of the internet which has expanded thehorizon of development possibilities. There are many trends that couldchange the face of business in the upcoming years, and in most casessoftware development in playing a crucial part in the realization. One suchtrend is Cloud Computing. Cloud Computing is a general term for anythingthat involves delivering hosted services over the Internet. These services arebroadly divided into three categories: Infrastructure-as-a-Service (IaaS),17

Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS) (Cross-sitescripting, 2004). Saas is one type of Cloud Computing that is directly affectingSoftware Development. This type of Cloud Computing delivers a singleapplication through the browser to thousands of customers using amultitenant architecture. On the customer side, it means no upfrontinvestment in servers or software licensing; on the provider side, with justone app to maintain, costs are low compared to conventional hosting (EricKnorr, 2010).As an integral part of the business environment, it is critical to ensure thesoftware that we use is protected from any intrusion and disruptions.The increasing dependence on software to get critical jobs done means thatsoftware's value no longer lies solely in its ability to enhance or sustainproductivity and efficiency. Instead, its value also derives from its ability tocontinue operating dependably even in the face of events that threaten it.The ability to trust that software will remain dependable under allcircumstances, with a justified level of confidence, is the objective ofsoftware assurance. Software assurance has become critical becausedramatic increases in business and mission risks are now known to beattributable to exploitable software (McGraw, 2006). We will examine way toensure that the software that we build continue to function as intendeddespite the many risks both internal as well as external to the SDLC.18

CHAPTER THREESOFTWARE SECURITY EXPLOITSGartner report estimates that it costs about 1 million a year on average fora company with 2,500 to 3,000 machines to patch its software and accordingto David Rice, former cryptographer for the NSA and Navy, author ofGeekonomics: The Real Cost of Insecure Software, the total economic cost ofsecurity flaws in software is around 180 billion dollars a year in the U.S(Greenberg, 2008). It is therefore imperative to make sure that the softwarethat is brought to market is reliable and secure. One way of ensuringsecurity is to understand how software can be exploited and to put in placemechanisms to avoid those pitfalls.When developing an application it is important to have an understanding ofthe attacker’s point of view and to understand the limitations of yoursystem. An understanding of the attacker’s tactics allows the developer toimplement effective countermeasures that will make it more challenging forthe attacker to compromise your system. This chapter examines thecommon ways that attackers successful penetrate systems and provides ananalysis of software security by examining threats, vulnerabilities, andattacks.3.1 Threats to Software SecurityComputer systems are constantly under threat, the software that allowsorganizations to function more effectively have also become the point ofattacks. The threat to software security can be categorized into two groups:1. Threats during development (mainly insider threats): A softwareengineer can sabotage the software at any point in its development lifecycle through intentional exclusions from, inclusions in, or19

modifications of the requirements specification, the threat models, thedesign documents, the source code, the assembly and integrationframework, the test cases and test results, or the installation andconfiguration instructions and tools (McGraw, 2006).2. Threats during operation (both insider and external threats):Any software system that runs on a network-connected platform islikely to have its vulnerabilities exposed to attackers during itsoperation. Attacks may take advantage of publicly known butunpatched vulnerabilities, leading to memory corruption, execution ofarbitrary exploit scripts, remote code execution, and buffer overflows.Software flaws can be exploited to install spyware, adware, and othermalware on users' systems that can lie dormant until it is triggered toexecute (McGraw, 2006).In order for a threat to become a danger for an application, there must bevulnerability in the system that it can exploit. Table 3.1 shows somecommon software vulnerabilities and the threats that are associated withthem. During the last few years, the number of vulnerabilities beingdiscovered in applications is far greater than the number of vulnerabilitiesdiscovered in operating systems. As a result, more exploitation attempts arerecorded on application programs. The most "popular" applications forexploitation tend to change over time since the rationale for targeting aparticular application often depends on factors like prevalence or the inabilityto effectively patch (Top Cyber Security Risks , 2009).Table 3.1 Threats by Application Vulnerability Category (Source: (J.D. Meier, 2003))CategoryThreatsInput validationBuffer overflow; cross-site scripting; SQL injection;canonicalizationAuthenticationNetwork eavesd

Rapid Prototyping and Extreme Programming (XP) have increased in popularity among developers. Rapid Application Development like most agile methodologies presents some unique security concerns and most security methodologies are built for traditional development methodologies, which are qualitatively and

Related Documents:

May 02, 2018 · D. Program Evaluation ͟The organization has provided a description of the framework for how each program will be evaluated. The framework should include all the elements below: ͟The evaluation methods are cost-effective for the organization ͟Quantitative and qualitative data is being collected (at Basics tier, data collection must have begun)

Silat is a combative art of self-defense and survival rooted from Matay archipelago. It was traced at thé early of Langkasuka Kingdom (2nd century CE) till thé reign of Melaka (Malaysia) Sultanate era (13th century). Silat has now evolved to become part of social culture and tradition with thé appearance of a fine physical and spiritual .

On an exceptional basis, Member States may request UNESCO to provide thé candidates with access to thé platform so they can complète thé form by themselves. Thèse requests must be addressed to esd rize unesco. or by 15 A ril 2021 UNESCO will provide thé nomineewith accessto thé platform via their émail address.

̶The leading indicator of employee engagement is based on the quality of the relationship between employee and supervisor Empower your managers! ̶Help them understand the impact on the organization ̶Share important changes, plan options, tasks, and deadlines ̶Provide key messages and talking points ̶Prepare them to answer employee questions

Dr. Sunita Bharatwal** Dr. Pawan Garga*** Abstract Customer satisfaction is derived from thè functionalities and values, a product or Service can provide. The current study aims to segregate thè dimensions of ordine Service quality and gather insights on its impact on web shopping. The trends of purchases have

Chính Văn.- Còn đức Thế tôn thì tuệ giác cực kỳ trong sạch 8: hiện hành bất nhị 9, đạt đến vô tướng 10, đứng vào chỗ đứng của các đức Thế tôn 11, thể hiện tính bình đẳng của các Ngài, đến chỗ không còn chướng ngại 12, giáo pháp không thể khuynh đảo, tâm thức không bị cản trở, cái được

Glossary of Social Security Terms (Vietnamese) Term. Thuật ngữ. Giải thích. Application for a Social Security Card. Đơn xin cấp Thẻ Social Security. Mẫu đơn quý vị cần điền để xin số Social Security hoặc thẻ thay thế. Baptismal Certificate. Giấy chứng nhận rửa tội

Le genou de Lucy. Odile Jacob. 1999. Coppens Y. Pré-textes. L’homme préhistorique en morceaux. Eds Odile Jacob. 2011. Costentin J., Delaveau P. Café, thé, chocolat, les bons effets sur le cerveau et pour le corps. Editions Odile Jacob. 2010. Crawford M., Marsh D. The driving force : food in human evolution and the future.