Basically, application security is the security
profile of application level software and communication. So what does
that mean? and what does that look like? and really, who cares?
Well,
let’s start from the first question and work our way backward.
Applications are becoming much more important as initial attack vectors
into systems. Over the past decade or so, operating system vendors and
developers have become much more conscious of the security of the
systems they deliver. They’re spending much more time reviewing the code
they deliver and becoming more disciplined in refining what exactly
they deliver. They’re also incorporating more and more advanced
cyber-security techniques into delivered operating systems everyday. In
fact, Microsoft Windows, once the butt of just about every
cyber-security joke told, is arguably the most secure baseline operating
system on the market today - certainly much more secure than it was
five years ago. As operating systems and related systems become more
secure, attackers need to begin to look at other areas to exploit. More
and more of these attackers are looking, today, at applications.
So
who cares? Well, attackers really care. They’re really interested in
finding applications that are running with open network connections,
with system privileges, and with security flaws. Really, they don’t care
that much about the authority the applications run with - the more the
better, but any foothold is better than nothing. And since attackers
care, application vendors need to care, and because the vendors care, we
developers need to pay attention too.
It
doesn’t look like things are going to change anytime soon in this regard
either. Today, companies are beginning to be held liable for
information leakage. We’ve seen lawsuits brought against companies,
we’ve seen C-Level executives fired, and we’ve seen profound differences
with respect to how liability for cyber-security negligence is
determined today when compared to event a few years ago. The stakes are
higher, and people way above our pay grade are paying attention.
Application
software isn’t clearly defined, really, but we can do a little better
than that. Fortunately, operating systems and network communication
models have this nifty application layer that runs on top of the
software delivered by infrastructure and operating system vendors. The
OSI model has it, Windows has it, Linux and Unixes have it, and TCP/IP
has it. So from a network communication perspective, anything that runs
in the application layer is fair game for an application security
analysis. HTTP, for example, is an ubiquitous application level
protocol. I mean, it’s everywhere. If you ever look at a typical packet
capture, it is just riddled with HTTP traffic. And applications use HTTP
for just about everything today. Need RPC? use REST/JSON. Need to send
information for storage? POST or PUT that information to an HTTP
endpoint. Need to grab some data? go GET it from a web server. It’s
absolutely everywhere. And there’s other cross-platform application
protocols too, like Apache Thrift or Avro, or Google’s Protocol Buffers.
In fact, from the perspective of the TCP/IP stack, if you’re above the
TCP layer, you’re in application space.
Likewise,
any program that runs in userland is an application too. This isn’t
limited to third-party programs either. Anything from any vendor that
runs above the kernel is fair game for application security reviews. On
linux or windows, this includes everything from in-house enterprise
applications to word processors and utilities to unix commands like ls
or ssh. On mobile devices, this includes apps in Swift or Objective-C on
iOS and Java or C++ on Android. It doesn’t include drivers, kernel
modules, network infrastructure firmware, or anything like that.
originally published on DZone
originally published on DZone