Latest News

How Safe Are Your Application Designs?

If you build your own applications, or do so for others, read on.

Why is application security so important for enterprises in today’s business environment?

Gone are the days when security breaches could be pushed aside and dealt with behind closed doors. Security breaches of all flavors have made front-page news since the beginning of 2005–several of which can be blamed on the insecure applications rolled out by organizations to enable online activities for customers and end-users.

Organizations are building more complex applications to run their online businesses, while consumers continue to entrust organization with very sensitive data. Here are the questions your company needs to ask when designing, or even using, application software:

Who should be concerned with application security?

Architects, developers, and project managers developing third-party applications should place emphasis on application security principles. However, vulnerabilities within custom in-house applications are more common and pose significant risk to sensitive information, such as consumers’ personal financial information.

What are the inherent security risks in the application design process?

Developers need to build in secure coding techniques, such as encryption, authentication, and passwords. Until recently, many of these techniques have not been taught in college classes for software developers. Therefore, many software engineers writing code are not educated about these techniques and are not aware of potential problems. For example, there are standard pieces of the C/C++ programming language that are insecure and should be used with great caution, or omitted from the process altogether.

What are some of the most common vulnerabilities in enterprise applications?

Common vulnerabilities can include authorization bypass, SQL injection vulnerabilities, buffer overflow, and information leaks and can affect both commercial and custom applications. Authorization bypass occurs when a normal user is able to access information from a Website or other application that was meant for an administrator or select group of individuals.

SQL injection is used for exploiting Web applications that use client-supplied data in SQL queries without removing potentially harmful characters first. There are quite a few systems connected to the Internet that are vulnerable to this type of attack. In this situation, data provided by a user, such as account number and username, is used to look up additional data on the SQL database. A knowledgeable attacker can provide SQL commands which get passed to the database and executed. The attacker can then inject commands and manipulate the database to do what it wants, such as providing user account information and details.

Buffer overflow is another example of a vulnerability that has plagued the commercial software industry and can also appear in custom applications. A buffer overflow occurs when a program or process tries to store more data on a buffer (temporary data storage area) than it was intended to hold. Since buffers are created to hold a limited amount of information, the extra data can spill over into adjacent buffers, corrupting and deleting the valid data held in them.

When do vulnerabilities find their way into the application design process?

Vulnerabilities typically find their way into applications during two phases of development–application design and application implementation. It is best to identify vulnerabilities during the design, rather than discovering issues during implementation and going back to re-design pieces of the application.

How can developers address security from the beginning of application development and design?

A holistic approach to building security into the development lifecycle will save time and money. Problems identified early in the process and addressed at each step are much easier to solve. Security practices should be in place during requirements planning, design time, implementation, and testing time in order to catch the majority of problems as early in the cycle as possible.

It is less expensive and less disruptive to discover design-level vulnerabilities during the design than it is during implementation or testing. For example, if proper authentication of administrators is not built into the program from the beginning, it is much more time consuming and risky to fix during the final quality assurance (QA) phase.

What is involved in the testing phase for vulnerability identification?

Application testing should be conducted by QA people who understand the importance of testing security as well as functionality. QA should apply security testing processes that test that the security features are working properly. Additionally, they should perform negative testing to determine how the application handles unexpected data such as long strings, special characters, and error conditions.

QA should use a problem tracking system to prioritize security issues alongside other program defects so that security issues can be fixed just like any other program flaw. Common methods to test applications include load testing tools and tools that will generate input data for cross-site scripting, SQL injection, and buffer overflows testing.

What are other threats and countermeasures for mitigating application security risks?

Threat modeling and countermeasures are important steps in the secure development lifecycle, ideally done when the application’s design is near completion. Threat modeling is an exercise in which developers identify the assets or pieces of sensitive information that the application houses which need protecting.

Countermeasures can be used to test the application to ensure it does not leave private information vulnerable to potential attackers. Input filtering–one example of a countermeasure–is a technique used by programmers to protect an application from attack by limiting the size and format of input to exactly what the application is expecting.

For example, if an application is designed to accept a username that is all alphabet characters and a maximum length of eight characters, the application should reject all input that is longer than eight characters. This will help protect the application from performing unintended operations from unexpected input. Developers should also closely examine bandwidth, CPU time, and disk space in order to mitigate denial of service risks.

Developers should employ a thought process in which they imagine themselves as an attacker who knows everything about what the application can do. Then they should enumerate and categorize those threats to come up with ways to mitigate the risks. If there aren’t ways to mitigate the threats, the design should be changed and re-implemented.

What are common information leaks and how can hackers use information for malicious purposes?

Information leaks can also pose a threat to applications. A single information leak is often not a serious problem, but has the potential to provide an attacker with access to more serious vulnerabilities.

For example, if a user enters a long string of text, rather than an eight-digit account number, a vulnerable application will come back with a string of information about what came back from the SQL server, often providing information to the attacker about what version of SQL is being used and how the system is constructed.

What are some best practices for application development?

All software developers should be educated on the fundamentals of secure application development. Developers should also take a more holistic approach to application development, building countermeasures into the design process, as well as rigorous QA testing. While there is not one silver bullet for building secure applications, developers can employ multiple processes that examine vulnerabilities in different ways to ensure application security before production.

Do organizations need third-party validation for security of applications?

Some organizations need to comply with regulatory requirements, particularly in the financial services industry. If regulatory compliance is an issue, organizations should consider enlisting a third party for a penetration test, which will provide validation of the application’s security.

Chris Wysopal is director of development for Symantec Security Response.

Leave a comment

seks shop - izolasyon
basic theory test book basic theory test