Application security is getting a twist with the rise of serverless architectures, which introduce a new way of developing and managing applications - and a new wave of related security risks.
Serverless architectures, also known as Function as a Service (FaaS), let businesses build and deploy software without maintaining physical or virtual servers. That's the job of providers like Amazon, Microsoft, Google, and IBM, which run popular serverless architectures AWS Lambda, Azure Functions, Google Cloud Functions, and IBM BlueMix Cloud Functions, respectively.
A common use case for serverless applications is altering media files. If someone uploads a file to an AWS S3 bucket, an application can invoke a function to automatically resize the image. If someone sends an SMS in a chatbot application, a separate function could send a return SMS.
Businesses are looking to serverless architectures to drive simplicity and reduce cost. Applications built on these platforms scale as cloud workloads grow, so developers can focus on product functionality without worrying about the operating system, application server, or software runtime environment, explains Ory Segal, PureSec CTO.
"You can stitch together applications that are events-driven, and at the same time you don't have to manage any of the infrastructure - it automatically scales," says Segal. "If there's one event, one function will get evoked. If there's [more], then the provider is responsible for [supporting] as many functions as you need events."
Billing is based on CPU time, he says of the cost benefit. If there's no computing being done, the organization doesn't pay for anything. Vendors charge per 100 milliseconds of compute. "It's very simple to develop in serverless, it's very cheap to develop in serverless," he adds.
The Security Risks of Serverless
However simple and cost-effective, this architecture has its security issues. Serverless applications are still at risk for breaches and traditional security solutions are not relevant in this space, says Segal. Users hand over the responsibility of security patches to providers.
PureSec today published its "Serverless Architectures Security Top 10," a list of security risks in these services. Researchers compiled scans from more than 5,000 serverless projects on GitHub, serverless projects using algorithms created by PureSec, and partner data and insights.
"There's a big chunk of IT security that is now the responsibility of the cloud provider," he explains, adding that security admins can't install tools like antivirus, firewalls, and IDS. "You don't control the environment. You don't control the network, you don't control the servers."
Major security issues include a larger attack surface. Serverless functions pull data from a broad range of event sources (HTTP APIs, cloud storage, IoT device communications), which increases the attack surface when messages can't be scanned by Web application firewalls. Given the newness of serverless architecture, the attack surface can also be complex to understand.
PureSec's Top 10 list digs into specific risks. The first, and most critical, is Function Event-Data injection. Injection flaws are a common risk, but in serverless architecture they're not limited to direct user input. Serverless functions can take input from any type of event source (cloud storage, SQL database) and each input could be controlled by an attacker.
The second most-critical risk is Broken Authentication. Serverless applications can pack dozens to hundreds of different functions. Some may glue processes together; others may consume events of different source types. Applying robust authentication is necessary and complicated. Users must secure the serverless function and the applications with which it interacts.
"A weak authentication implementation might enable an attacker to bypass application logic and manipulate its flow," the report explains. This could let an attacker execute functions and perform actions that weren't supposed to be exposed to unauthenticated users. PureSec advises businesses to use the authentication tools provided by their serverless environment.
The growth of serverless architecture is introducing a "paradigm shift" in security, Segal says. "If we used to secure the infrastructure, the perimeter, the network, we now have to secure the serverless execution itself." Developers are responsible for designing robust applications and ensuring their code doesn't introduce any vulnerabilities to the application layer.