Application Security Chao-Hsien Chu, Ph.D. College of Information Sciences and Technology The Pennsylvania State University University Park, PA 16802 chu@ist.psu.edu IST 515 Castle Analogue We can learn a lot from building Castle. • Build with security in mind • Have defense in depth, not just from the outside • May have to give up some efficiency to have good security • Hard to add on later, if don’t start first Objectives • Understand the principles related to designing secure information system / applications. • Understand the security and controls that should be included in system development process, databases, data warehousing, knowledge-based systems, and web applications. • What are the proper and secure means of designing and controlling applications. • Understand malicious code and software, such as computer viruses and how they can be introduced into the computing environment. • Understand mechanisms that can be used to prevent, detect, and correct malicious code and their attacks. Readings (1) • Tipton, H. and Henry, K. (Eds.), Official (ISC)2 Guide to the CISSP CBK, Domain 8 - “Application Security,” (Required). By Robert M. Slade. Auerbach, 2007. • Amer, S. H., Humphries, J. W. and Hamilton, Jr, J. A., “Survey: Security in the System Development Life Cycle,” Proceedings of the 2005 IEEE Workshop on lnfomation Assurance and Security, United States Military Academy, West Point, NY, pp. 310-316. (Required). • Baskerville, R., “Information Systems Security Design Methods: Implications for Information Systems Development,” ACM Computing Surveys, Vol. 25, No 4, December 1993, pp. 375414. • Wikipedia, “Application Security.” (Required) http://en.wikipedia.org/wiki/Application_security. Readings (2) • Wikipedia, “Software engineering.” http://en.wikipedia.org/wiki/Software_engineering. • Wikipedia, “Capability Maturity Model.” http://en.wikipedia.org/wiki/Capability_Maturity_Model. • Wikipedia, “Systems Development Life Cycle.” http://en.wikipedia.org/wiki/Systems_Development_Life_Cycl e. • Wikipedia, “Object-oriented Programming.” http://en.wikipedia.org/wiki/Object-oriented_programming • Wikipedia, “Buffer Overflow.” http://en.wikipedia.org/wiki/Buffer_overflow. Readings (3) • Wikipedia, “Covert Channel.” http://en.wikipedia.org/wiki/Covert_channel. • Wikipedia, “Malware”. http://en.wikipedia.org/wiki/Malware • The Department of Homeland Security and SRI International, “The Crimeware Landscape: Malware, Phishing, Identity Theft and Beyond,” http://www.antiphishing.org/reports/APWG_CrimewareRepo rt.pdf • Wikipedia, “Database security.” http://en.wikipedia.org/wiki/Database_security. Scope of Application Security The domain covers the following topics: • The processes and activities regarding the planning, programming and management of software and systems. • The controls that may be installed within software systems to ensure the confidentiality, integrity and availability of either software or data under processing. • The concepts involved in databases and database management and web applications. • The proper and secure means of designing and controlling applications. • Malicious Software - Malware. Current Situations (1) • Information security has traditionally emphasized the system level access controls, recent has focused attention on applications. • Software security is a major problem. A great many of information security incidents involve software vulnerabilities in one form or another. • Few security professionals have significant systems development or programming background. At the same time, training in programming and development tends to emphasize speed and productivity over quality, let alone considerations of security. Current Situations (2) • A troublesome characteristic of application software may affect the computing and business environment broadly. • Legacy code, as well as design decisions taken decades ago, are still involved in current systems and interact with new technologies and operations in ways that may open additional vulnerabilities. • Malware is much more than a mere nuisance: it is now a major security risk. A recent FBI computer crime survey indicated that malware accounted for a third of the total cost to business of all reported incidents. Threats to the Software Environment • • • • • • • • • Buffer Overflow. Citizen Programmers. Covert Channel. Malicious Code/Malware. Memory Reuse (Object Reuse). Executable Content/Mobile Code. Social Engineering. Time of Check/Time of Use (TOC/TOU). Trapdoor/Backdoor. Buffer Overflow Buffer overflow problem occurs when a program fills up its buffer of memory with more data than the buffer can hold. When the program begins to write beyond the end of the buffer, the program’s execution path can be changed. This can lead to the insertion of malicious code (e.g., patch the kernel) that can be used to destroy data or to gain administrative privileges on the program or machine. How a Buffer Overflow Works • A program that is the target of an attack is provided with more data than the application was intended or expected to handle. • The attacked program (target) overruns the memory allocated for input data, and writes the excess data into the system memory. • The excess data can contain machine language instructions so that when the next step is executed, the attack code, like a Trojan horse or other type of malicious code, is run. Citizen Programmers • Citizen programmers refer to the cases in which casual users are allowed access to programming languages in order to modify the software program. Visual Basic, included in the Microsoft Office suite, is often used by citizen programmers to develop their applications or extend existing ones. • Citizen programmers are unlikely to be trained in, or bound by, system development practices that involve proper application design, change control, and support for the application. Therefore, application development in such a manner is likely to be chaotic and lack any form of assurance in regard to security. Covert Channel • A covert channel or confinement problem is an information flow issue. It is a communication channel allowing two cooperating processes to transfer information in such a way that it violates the system’s security policy. • It is any flow of information -- intentional or inadvertent -- that enables an observer not authorized to have the information to infer what it is or that it exists. This is primarily a concern in systems containing highly sensitive information. Types of Covert Channels • A covert storage channel involves the direct or indirect reading of a storage location by one process and a direct or indirect reading of the same storage location by another process. Typically, a covert storage channel involves a finite resource, such as a sector on a disk that is shared by two subjects at different security levels. • A covert timing channel depends upon being able to influence the rate that some other process is able to acquire resources such as the CPU, memory, or I/O devices. The variation in rate may be used to pass signals. Timing channels are normally considerably less efficient than storage channels because they have reduced bandwidth and are usually more difficult to control. Memory Reuse (Object Reuse) • This is a problem related to memory management. The problem occurs because residual information remain in memory when a section of memory is reassigned to a new process after a previous process is finished with it, a security violation may occur. • Memory management involves sections of memory allocated to one process for awhile, then deallocated, then reallocated to another process. When memory is reallocated, the operating system should ensure that memory is zeroed out or completely overwritten before it can be accessed by a new process. Thus, there is no residual information in memory carrying over from one process to another. Mobile Code • "Mobile Code" is computer code sourced from remote, possibly "untrusted" systems, but executed on your local system. The concept of "mobile code" has been called by many names: mobile agents, mobile code, downloadable code, executable content, active capsules, remote code, and others. All these deal with the local execution of remotely sourced code. • Examples of mobile code include scripts (JavaScript, VBScript), Java applets, ActiveX controls, Flash animations, Shockwave movies (and Xtras), and macros embedded within Microsoft Office documents. • Mobile code can also download and execute in the client workstation via email. Mobile code may download via an email attachment (e.g., macro in a Word file) or via an HTML email body (e.g., JavaScript). For example, the ILOVEYOU, TRUELOVE, and AnnaK email viruses/worms all were implemented as mobile code (VBScript in a .vbs email attachment that executed in Windows Scripting Host). Social Engineering • Social engineering is the act of manipulating a person to accomplish goals that may or may not be in the target’s best interest. This may include obtaining information, gaining access, or getting the target to take certain action. • Every time you try to get someone to do something that is in your interest, you are engaging in social engineering. From children trying to get a toy from their parents to adults trying to land a job or score the big promotion, all of it is a form of social engineering. • Due to the mystery surrounding this dark art many people are afraid of it, or they feel they will never be able to accomplish a successful social engineering test. Time of Check/Time of Use (TOC/TOU) • This is a type of asynchronous attack that occurs when some control information is changed between the time the system security functions check the contents of variables and the time the variables actually are used during operations. • For example, a user logs on to a system in the morning and is fired later in the day. As a result of the termination, the security administrator removes the user from the user database. Because the user did not log off, he or she still has access to the system and might try to disrupt operations or cause damage. Trapdoor/Backdoor (1) A trapdoor or backdoor is a hidden mechanism that bypasses access control measures. It is an entry point into a program that is inserted in software by programmers during the program’s development to provide a method of gaining access into the program for modification if the access control mechanism malfunctions and locks them out. (In this situation, it may also be called a maintenance hook.) Trapdoor/Backdoor (2) They can be useful for error correction, but they are dangerous opportunities for unauthorized access if left in a production system. A programmer or someone who knows about the backdoor can exploit the trapdoor as a covert means of access after the program has been implemented in the system. An unauthorized user may also discover the entry point while trying to penetrate the system Software Engineering • Software development and maintenance is the dominant expenditure in information systems. Because of the expenses associated with software development, industry research began to provide the best methods of reducing costs, which subsequently led to the discipline of software engineering. • Software engineering simply stated that software products had to be planned, designed, constructed, and released according to engineering principles. It included software metrics, modeling, methods, and techniques associated with the designing of the system before it was developed, tracking project progress through the entire development process. Software Capability Maturity Model (CMM) • Developed by Carnegie Mellon Software Engineering Institute (SEI) in 1986. • The SW-CMM framework establishes a basis for evaluation of the reliability of the development environment. • It is assumed that good practices can be repeated. If an activity is not repeated, there is no reason to improve it. • Theory suggests that the more mature the development process, the more likely it is to have more robust and security software. Software Capability Maturity Model • Organizations must commit to having policies, procedures, and practices and to using them so that the organization can perform in a consistent manner. • Practices need to be defined in such a manner as to allow for transfer across project boundaries. • Quantitative objectives are established for tasks. Measures are established, done, and maintained to form a baseline from which an assessment is possible. • Practices are continuously improved to enhance capability (optimizing). Five CMM Maturity Levels • Level 1 - Initiating - Informal processes, ad hoc development, competent people and heroics. • Level 2 - Repeatable - Project management process and practices are institutionalized. • Level 3 - Defined - Integration of technical and management processes, organizational support. • Level 4 - Managed - Product and process improvement, quantitatively controlled. • Level 5 - Optimizing - Continuous process improvement is institutionalized. Benefits of Higher Level CMM • Improved software quality • Reduced life cycle time • More accurate scheduling and meeting milestones • Proactive planning and tracking • Better security, fewer bugs, if institutionalized Software Development Phases • • • • • • • Project initiation and planning Functional requirements definition System design specifications Build (develop) and document Acceptance Transition to production (installation) Operations and maintenance support (postinstallation) • Revisions and system replacement Security in Project Initiation Phase Identify Security Needs: Identify User Needs •Classification and criticality of •information/applications •Basic security objectives •Security controls workload Initial Risk Analysis: Evaluate Alternatives •Threats/Vulnerabilities/Risks •Analyze technical, operational, and economical feasibility of security alternatives •Estimate security-related costs/benefits Identify Security Framework: Select/Approve Approach •Essential security issues and risks •Determination of service level agreements Notice Because of the time constraint, I will not continue to cover the remaining slides. As you can see, there are more materials that we can cover in a class lesson. If you are interested in the topic, please read the materials by yourself Security in Project Initiation Phase • Does particular information have special value or require special protection? • Has the system owner determined the information’s value? What are the assigned classifications? • Will application operation risk exposure of sensitive information? • Will control of output displays or reports require special measures? • Will data be generated in public or semipublic places? Are controlled areas required for operation? Security in Functional Requirements Phase Prepare Project Plan Security Areas in Project Plan: •Configuration and access controls •Audit trails Define Security Requirements: Develop Functional Requirements •Tied into the risk analysis and contingency plan •Threats, vulnerabilities, risks •Security control points •Preliminary contingency planning Preliminary Security Test Plan: Preliminary Test Plan Select Acquisition Strategy Establish Formal Functional Baseline •Test methods and resources •Identify evaluation criteria and controls to be tested Include Security Requirements in RFP and Contracts: •Ensure service level agreement and maintenance contracts meet security •Hardware and software backups and escrow Functional Baseline Has Security Requirements Security in Design Phase Define Security Specifications : Develop Detailed Design •System/subsystem/interface •Program/database/hardware and firmware/ network Update Security Test Plan : Update Testing Goals and Plans Establish Formal Baseline/quality Controls and Requirements •Develop security test procedure •Test security under abnormal and illegal circumstances Include security area in formal baseline documentation and quality assurances Security in Deployment Phase Construct Source Code From Detailed Design Specifications Write or procure and install securityrelated code: Perform and Evaluate Unit Tests Perform unit tests and evaluate security-related code Implement Detailed Design into Final System •Control access to code •Identify/document code Ensure approved security components in formal baseline are included Security in Acceptance Phase Test System Components Test security components Test security in integrated system Validate System Performance Install System • Assess functional operations and performance • Identify test failures • Analyze test results against security requirements Install security code with necessary modifications Document security controls Prepare Project Manuals • User guides must specify access control and protection requirements for sensitive data • Operations/Maintenance manuals Perform Acceptance Test Conduct acceptance test: Accept System Accept/verify project security • Last chance to detect security weakness or vulnerabilities System Development Methods • Waterfall Models: - Structured programming development (SDM). - Spiral Model. - Cleanroom • Iterative Development: - Prototyping. Modified Prototype Model (MPM). Rapid Application Development (RAD). Joint Analysis Development (JAD). Exploratory Model. System Development Methods • Other Methods and Models: - Computer-aided Software Engineering (CASE). Component-based Development. Reuse Model. Extreme Programming. Waterfall Model • The waterfall method is the oldest method for developing software systems. • Each phase contains a list of activities that must be performed and documented before the next phase begins. • The disadvantage of the model is that it demands a heavy overhead in planning and administration, and requires patience in the early stages of a project. Also, because each phase must be completed before the next, it can inhibit a development team from pursuing concurrent phases or activities. Waterfall Model • Usually, this method is not good for projects that must be developed in quick turnaround time periods (generally less than six months). • The waterfall model is considered to be the paradigm for the styles known as noniterative models. • From the perspective of security, noniterative models are preferred for systems development. Waterfall Method SDLC 1. System requirements (Validation) 2. Software requirements (Validation) 3. Analysis (Verification) 4. Program design (Verification) 5. Coding (Unit test) 6. Product Integration (Verification) 7. Implementation (System test) 8. Operations & maintenance (Revalidation) Spiral Model • • • • Progress – Angular dimension Cost – Radial dimension Plans – Lower left quadrant Objectives, means and constrains - Upper left quadrant • Prototyping, modeling and simulations – Upper right quadrant • Final development stages - Lower right quadrant Threats to the Software Environment • • • • • • • • • Buffer Overflow. Citizen Programmers. Covert Channel. Malicious Code/Malware. Memory Reuse (Object Reuse). Executable Content/Mobile Code. Social Engineering. Time of Check/Time of Use (TOC/TOU). Trapdoor/Backdoor. Special Considerations • Java Security • Object-oriented Programming • Distributed Objectoriented Systems • Database Security • Knowledge-based systems security • Web Application Security • Software Protection Mechanisms • Audit Assurance Mechanisms. • Configuration Management • Certification • Accreditation • Security Controls Java Security (1) • The Java programming language implements some specific security provisions. 1. Verifier (or interpreter), which helps to ensure type safety. It is primarily responsible for memory and bounds checking. 2. Class loader, which loads and unloads classes dynamically from the Java runtime environment. 3. Security manager, which acts as a security gatekeeper protecting against rogue functionality. Java Security (2) • Java Certification Path API for building and validating certification paths and managing certificate revocation lists. • Java GSS-API for securely exchanging messages between communication applications using Kerberos. Support for single sign-on using Kerberos is also included. • Java Authentication and Authorization Service (JASS), which enables services to authenticate and enforce access controls upon users. Java Security (3) • Java Cryptography Extension (JCE) provides a framework and implementation for encryption, key generation, and key agreement, and message authentication code (MAC) algorithms. • Java Secure Socket Extension (JSSE) enables secure Internet connections. It implements a Java version of the Secure Socket Layer (SSL) and Transport Layer Security (TLS) protocols and includes functionality for data encryption, server authentication, message integrity, and optional client authentication. Object Oriented Programming • OOP is a programming method that makes a self-sufficient object. • The object is a block of preassembled programming code in a self-contained module. • The module encapsulates both data and the processing instructions that may be called to process the data. Once a block of programming code is written, it can be reused in any number of programs. OO Terms • • • • • • • • • Message Method Behavior Class Instance Inheritance Delegation Polymorphism Polyinstantiation Object-Oriented Security (1) • In object-oriented systems, objects are encapsulated. Encapsulation protects the object by denying access to view what is located inside the object. • Encapsulation of the object does provide protection of private data from outside access. For security purposes, no object should be able to access another object’s internal data. • On the other hand, it could be difficult for system administrators to apply the proper policies to an object if they cannot identify what the object contains. Object-Oriented Security (2) • Some of the security issues can be found in the use of polyinstantiation, polymorphism, and inheritance. • Polyinstantiation allows for iteratively producing a more defined version of an object by replacing variables with values (or other variables). Thus, multiple distant differences between data within objects are done to discourage low-level objects from gaining information at a high level of security. • It is also the technique used to avoid covert channels based on inference by causing the same information to exist at different classification levels. Object-Oriented Security (3) • Polymorphism refers to a programming language’s ability to process objects differently depending on their data type. • The term is sometimes used to describe a variable that may refer to objects whose class is not known at compile time, but will respond at runtime according to the actual class of the object to which they refer. • Even though polymorphism seems straightforward, if used incorrectly, it can lead to security problems. Object-Oriented Security (4) • Inheritance allows a programmer to build a new class similar to an existing class without duplicating all the code. The new class inherits the old class’s definitions and adds to them. This can help decrease program development time — what works for the superclass will also work for the subclass. • Multiple inheritances can introduce complexity and may result in security breaches for object accesses. Issues such as name clashes and ambiguities must be resolved by the programming language to avoid a subclass inheriting inappropriate privileges from a superclass. Key Characteristics of OOP (1) • Encapsulation (Also Known as Data Hiding). A class defines only the data it needs to be concerned with. When an instance of that class (i.e., an object) is run, the code will not be able to accidentally access other data, which is generally seen as positive in terms of security. • Polymorphism. Objects may be processed differently depending on their data type. Unfortunately, this has implications for security that must be carefully assessed. Key Characteristics of OOP (2) • Inheritance. The concept of a data class makes it possible to define subclasses of data objects that share some or all of the main (or super) class characteristics. If security is properly implemented in the high-level class, then subclasses should inherit that security. • Polyinstantiation. Specific objects, instantiated from a higher class, may vary their behavior depending upon the data they contain. Therefore, it may be difficult to verify that inherited security properties are valid for all objects. However, polyinstantiation can also be used to prevent inference attacks against databases, because it allows different versions of the same information to exist at different classification levels. Distributed Object-Oriented Systems • Distributed development architectures allow applications to be divided into pieces that are called components, and each component can exist in different locations. This development paradigm allows programs to download code from remote machines onto a user’s local host in a seamless manner to the user. • Common Object Request Broker Architecture (CORBA), Java Remote Method Invocation (JRMI), Enterprise JavaBean (EJB), and Distributed Component Object Model (DCOM). Software Protection Mechanisms • • • • • • • • Security Kernels. Processor Privilege States. Security Controls for Buffer Overflows. Controls for Incomplete Parameter Check and Enforcement. Memory Protection. Covert Channel Controls. Cryptography. Password Protection Techniques. Software Protection Mechanisms • • • • • • • • • • • Inadequate Granularity of Controls. Control and Separation of Environments. Time of Check/Time of Use (TOC/TOU). Social Engineering. Backup Controls. Software Forensics. Malicious Code/Malware Controls. Virus Protection Controls. Mobile Code Controls. Sandbox. Programming Language Support. Audit and Assurance Mechanisms • Information Integrity. • Information Accuracy. • Information Auditing. • Certification and Accreditation. • Information Protection Management. • Change Management. • Configuration Management. Certification (1) • Certification is the technical evaluation of security compliance of the information system within its operational environment: the endorsement by the users and managers that the system/application meets their functional requirements. • Certification also involves how well the system performs its intended functional requirements. Certification (2) • The certification or evaluation document should contain an analysis of the technical and nontechnical security features and countermeasures and the extent to which the software or system meets the security requirements for its mission and operational environment • The certification process is followed by accreditation. Accreditation • The accreditation process reviews the certification information and grants the official authorization to place the information system into operational use. It is the formal approval by senior management. • The U.S. National Institute of Standards and Technology (NIST) has developed a document (SP 800-37) that recommends a certification and accreditation process and procedures. Vulnerabilities of Certification • Organizations and users cannot count on the certified product being free of security flaws. Because new vulnerabilities are always being discovered, no product is ever completely secure. • Most software products must be securely configured to meet certain protection mechanisms. • Certifications are not the definitive answer to security. Information system security depends on more than just technical software protection mechanisms, such as personnel and physical security measures. Configuration Management • Identifying and controlling components of an every evolving systems – Configuration item – Version – Building – Build list – Software Library Malicious Code/Malware • Software designed specifically to include functions for penetrating a system, breaking security policies, or to carry malicious or damaging payloads. • “… a huge category of unwanted code…. Electronic burglar tools like password crackers, traffic sniffers, keystroke loggers, data scroungers and remote access Trojans (RATs) are being used by attackers both inside and outside organizations to capture passwords, spy on network traffic, record private communications, and stealthily receive and transmit unauthorized commands to and from remote hosts.” Types of Malicious Code • Virus: • File infector or fileinfecting virus. • Boot sector infector or virus. • System infector. • Multipartite virus. • Email virus. • Macro virus. • Script virus. • • • • • • • • • Worms. Hoax. Trojan horses. Remote Access Trojan (RAT). Rootkits. DDoS Zombies Logic Bomb. Spyware and Adware. Pranks. Malware Protection • Do not double-click on attachments. • When sending attachments, provide a clear and specific description as to the content of the attachment. • Do not blindly use the most widely used products as a company standard. • Disable Windows Script Host, ActiveX, VBScript, and JavaScript. Do not send HTMLformatted e-mail. • Use more than one scanner, and scan everything. Malware Protective Tools • • • • • Scanners. Activity Monitors. Heuristic Scanners. Change Detection. Antimalware Policies. Database Vulnerabilities and Threats • Aggregation. • Bypass attacks. • Compromising database views used for access control. • Concurrency. • Data contamination. • Deadlocking. • Denial-of-service. • Improper modification of information. • • • • • • Inference. Interception of data. Polyinstantiation. Query attacks. Server access. Time of check/time of use (TOC/TOU). • Web security. • Unauthorized access. DBMS Controls Lock Controls: Access Controls: • Page locking: an entire memory page is locked. • Table locking: an entire table is locked. • Row locking: a row of data is locked. • Field locking: the single field that is being changed is locked. • Discretionary Access Controls (DACs). • Mandatory Access Controls (MACs). • Access Matrix. • View-Based Access Controls. • Grant and Revoke Access Controls. Aggregation and Inference • Aggregation - users combine individual pieces of information • Inference - using the clues to figure out the larger story Preventing Aggregation and Inference in databases • Containers - placing data in logical containers and controlling access rights • Cell Suppression - hiding cells that contain sensitive info (Salary) • Partitioning - implementing views with limited info • Noise and perturbation – Putting false/misleading info in database • Context dependent access control - looks at previous access and try to detect inference possibilities before allowing other access • Zero Knowledge Proof - make sure information given does not give up other information Knowledge Management • The application of artificial intelligence techniques to decision support. • Workflow management. • Business process modeling. • Document management. • Databases and information systems. • Knowledge-based systems. • Knowledge discovery in databases (KDD). • Online analytical processing (OLAP). Artificial Intelligence • Expert systems - mimic human experts, based on knowledge of experts – Cannot learn on own – Need to make sure they don’t give away to much information • Neural networks - based on human brain structure (neurons), pattern recognition – Can apply more weights to different scenarios – Can piece together patterns humans might miss Security Controls for KM • Protecting the knowledge base as you would any database. • Routinely verifying the decisions based on what outcomes are expected from specific inputs. • If using a rule-based approach, changes to the rules must go through a change control process. • If the data output seems suspicious or out of the ordinary, perform additional and different queries to verify the information. • Making risk management decisions because decisions that are based on data warehouse analysis techniques may be incorrect. • Developing a baseline of expected performance from the analytical tool. Web Application Threats • Web applications are subject to all of the threats and protection mechanisms discussed elsewhere. • Web applications are specifically vulnerable because of their accessibility, access to database information, or transaction processing. • Most attacks are conducted at the application level, either against the Web server application itself, in-house scripts, or common front-end applications used for E-commerce. Web Application Protection • Having a particular assurance sign-off process for Web servers. • Hardening the operating system used on such servers (removing default configurations and accounts, configuring permissions and privileges correctly, and keeping up to date with vendor patches). • Extending Web and network vulnerability scans prior to deployment. • Passively assessing intrusion detection system (IDS) and advanced intrusion prevention system (IPS) technology • Using application proxy firewalls, and disabling any unnecessary documentation and libraries. Web Application Protection • Ensure that administrative interfaces are removed or secured appropriately. • Only allow access from authorized hosts or net works, and use strong (possibly multifactor) user authentication. • Do not hard code the authentication credentials into the application itself and ensure the security of the credentials. • Use account lockout and extended logging and audit, and protect all authentication traffic with encryption. • Ensure that the interface is at least as secure as the rest of the application, and most often secure it at a higher level. Web Application Protection • Ensure that the proxies are able to deal with problems of buffer overflows, authentication issues, scripting, submission of commands to the underlying platform, encoding issues (such as Unicode), and URL encoding and translation. • The proxy firewall may have to address issues of data submission to in-house and custom software, ensuring validation of input to those systems. • Cookies or URL data, which must be both protected and validated. If using cookies, always encrypt them. • Validate all input and output. • Fail secure (closed). Web Application Protection • • • • • • • • • • Make your application or system as simple as possible. Use secure network design. Use defense in depth. Do not cache secure pages. Confirm that all encryption used meets industry standards. Monitor your code vendors for security alerts. Log any and all critical transactions and milestones. Handle exceptions properly Do not trust any data from the client. Do not automatically trust data from other servers, partners, or other parts of the application.