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.

Final thoughts

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.