Worried about security issues? Who isn't? Automatically sign up for our free Security Solutions newsletter, delivered each Friday, and get hands-on advice for locking down your systems.
For many small and midsize networks, application security can often be a gray area. Almost all companies test for vulnerable versions (i.e., missing security patches) and default configuration files. But while these steps do address network security, they fail to identify flaws within the applications themselves.
If your organization has a Web server, then it has a deployed network application. If your company has a database server behind its Web presence, then it has twice the risk for application security.
Before investing any time or money in securing or verifying the security of an application, first perform a risk assessment. In particular, if you're dealing with the storage and/or use of sensitive personal or financial information, consider conducting a full code-level review and thoroughly documenting your actions. Not everyone needs this level of security, so measure your risk and take appropriate action.
Companies should conduct application testing from both an authorized user's and an unauthorized user's perspective. This testing should include all systems that make up the application. The complexity of your testing should depend on whether the organization created the application or contracted a reputable vendor to do the work.
Let's look at some main areas to focus on and some key questions to ask when testing.
- Scripting: Can you perform administrative functions remotely from the Internet? Could someone script an attack that overwhelms the application?
- Enumeration: Is it possible to enumerate account information of other users?
- Passwords: Have you changed the default passwords to meet the complexity standard for your network?
- Sessions: Have you based tokens on some easily re-created variable, such as sequential or time and date?
- Error handling: Does your application reveal any useful information about the products used to create the application?
- Field variables: Have you fixed SQL injection and buffer overflows that take advantage of system calls to unauthorized programs?
- Code commenting: Have you cleansed HTML source code of all comments and metadata that doesn't serve an end-user function?
- Session time-out: Do sessions expire after a reasonable period of time?
- Session cache: Does information expire to prevent someone from replaying a session?
- Network parameters: Have you thoroughly documented ports and protocols and filtered them for content and source origination?
These are just a few of the areas you should pay special attention to when deploying a network application. Keep in mind that application development is a complex process, and it must incorporate security checks as development occurs. Going back after the fact to fix a security flaw can sometimes cost more than the original development of the application.
All of this might sound like a lot of high-tech speak that seemingly has little bearing on your network. However, it's actually a relatively simple process, and it's one you should perform for every box on your network.
Take steps to secure the platform the application resides on, and test and secure the application from an authorized user's perspective—and a hacker's perspective. Make sure you find problems before they find you.
Mike Mullins has served as a database administrator and assistant network administrator for the U.S. Secret Service. He is a network security administrator for the Defense Information Systems Agency.