The Quandary of Secure Application Development For Enterprises
In recent years, application code (particularly web and
mobile application code) has been besieged by hackers around the world, thus
catapulting it into the limelight of security regulation boards like the
Payment Card Industry (PCI) Security Council.
While some progress to better secure application code has been made in
over the past 5 years, it still continues to be one of the top attack vectors
for some serious attacks. HP's 2012 Cyber Risk Report reported that 77% of
mobile apps had information leakage vulnerabilities. Cenzic’s Application
Vulnerability Trends Report from 2014 reported even more discouraging news when
it found that 96% of all web/mobile apps contained one or more major
vulnerabilities. Also in 2014, Akamai
Technologies’ State of the Internet report revealed that hacking attacks on
websites went up 75% at the end of 2013. Now that businesses are expanding more
into cloud services and mobile computing the attack surface for application
code is going to continue to expand at an exponential rate.
In today’s society, companies find themselves in the
unenviable position of being highly reliant on applications to forge new
business, while knowing they may have multiple vulnerabilities that could
become the next major data breach headline in tomorrow’s news. To use the
analogy of a new car, would you buy a new car with fatal flaws that could
result in brake failure while driving? No of course not, yet many companies
role out web and mobile applications to the public that could cause the same catastrophic
results. Why would companies be so cavalier with the security of their
applications?
It is not intentional nor is it a desired outcome, but
rather the results of multiple factors coming together and culminating in the
perfect storm. Unfortunately application development is not something that can
be captured and contained in its own one size fits all nicely kept box. Different languages, different development
cycles, different business requirements, and even different developer tools all
complicate the process. Often times, developers are tasked with developing or
maintaining code for solutions that are either outdated and being kept on life
support or are new groundbreaking ideas that have not been fully baked and
therefore all the requirements are unknown. I often hear that the solution is
to apply secure coding methods or to develop processes that involve a Secure
Software Development Life Cycle (SSDLC).
While these items are very much a part of the solution they do not
address the complexities of the problem.
This is because of the different needs and requirements of each
developer for their individual platform or development cycle.
Would you try to operate a PlayStation game on an X-Box
console? No of course not; the two mediums just are not compatible. Developers find themselves in a similar
situation of trying to determine how to apply processes or code that may work
in one instance to similar and dissimilar situations. Sometimes it works and
sometimes it doesn't.
To illustrate it may be best to use the analogy of cooking a
plate of Italian Spaghetti. You have a cookbook, but the cookbook is in a
foreign language you do not fully comprehend. There are some nice pictures
though, and you have a general idea of what the spaghetti should look like so
you set off to cooking your spaghetti. As you are preparing your sauce, you
discover that you only have pizza sauce and not true spaghetti sauce. To
further complicate things the only noodles you have to cook with are Ramen
noodles. While the finished product may look somewhat similar to spaghetti, I
believe we can all agree it is not spaghetti.
Application development is very much the same way, even when using the
same coding language like Java, there are still enough variations in styles and
types of Java to make it impossible to apply similar standards across the
board.
So what is the solution? I believe the solution cannot truly
be resolved at the enterprise level, but at the team or platform level. Sure
some things can be applied to ease the process, much the same way similar
things can be applied to most types of spaghetti, but in the end it is the
chefs, or in this case the development teams that must determine how to
implement the general guidelines into specific recipes for their team.
Some form of SSDLC has to be applied to the development
process to ensure that security is built into the code (not bolted on later),
which helps avoid costly vulnerabilities and remediation later on. This may
require a discovery project, training, and new tools. The one thing that it
will most assuredly require is adaptability. The environments in which
applications are forced to survive have become more treacherous, which has
forced developers into unfamiliar territory where they must evolve. This evolution
is not one that has to occur internally to the developer teams alone, but it
can actually be assisted by other teams that specialize in security. In short,
there is hope for the future.
Comments
Post a Comment