Security and the Twelve-Factor App - Step 7
A blog series by WhiteHat Security
April 08, 2019

Eric Sheridan
WhiteHat Security

The previous blog in this WhiteHat Security series recommended executing the app as one or more stateless processes by using small programs that communicate over the network. From a security standpoint it’s key to always assume that all process inputs are controlled by hackers, and create one or more processes that are dedicated exclusively to security services.

Start with Security and the Twelve-Factor App - Step 1

Start with Security and the Twelve-Factor App - Step 2

Start with Security and the Twelve-Factor App - Step 3

Start with Security and the Twelve-Factor App - Step 4

Start with Security and the Twelve-Factor App - Step 5

Start with Security and the Twelve-Factor App - Step 6

Step 7 of the Twelve-Factor App focuses on exporting services via port binding, and what to apply from a security point of view. Here is some actionable security-focused advice which developers and ops engineers can follow during the SaaS build and operations stages.

Defining Port Binding in the Twelve-Factor App

In this seventh step, the Twelve-Factor methodology encourages the integration of the network handling traffic code inside your running application. To explain, web apps are sometimes executed inside a web server container. For example, PHP apps might run as a module inside Apache HTTPD, or Java apps might run inside Tomcat.

The twelve-factor app is completely self-contained and does not rely on runtime injection of a webserver into the execution environment to create a web-facing service. The web app exports HTTP as a service by binding to a port, and listening to requests coming in on that port.

The challenge is that these modules must still be configured, which can lead to security risks if an app is bound to privileged ports or protected with poor passwords.

Applying Security to Step 6

To elevate security risks, bind your app to an unprivileged port and make use of port forwarding facilities. Unprivileged ports are any port number greater than 1024. Binding to a port above 1024 will not require system or root level privileges, thus allowing your app to run with least privilege. Port forwarding can then be used to transfer production traffic from a well-known privileged port, such as port 443, to a non-privileged port being used by your app. This can be achieved at the operating system level, often using firewall configurations. For example, the IP Tables firewall is commonly used to achieve port forwarding on Linux operating systems.

In the next blog we’ll chat through Step 8, which recommends scaling out via the process model, and two simple processes that can be incorporated to enhance security.

Read Security and the Twelve-Factor App - Step 8

Eric Sheridan is Chief Scientist at WhiteHat Security
Share this

Industry News

July 01, 2020

JFrog announced the launch of ChartCenter, a free, security-focused central repository of Helm charts for the community.

July 01, 2020

Kong announced a significant upgrade to open source Kuma, Kuma 0.6, available today.

July 01, 2020

Compuware Corporation, a BMC company, announced new capabilities that further automate and integrate test data and test case execution, empowering IT teams to achieve high-performance application development quality, velocity and efficiency.

June 30, 2020

Couchbase announced the general availability of Couchbase Cloud, a fully-managed Database-as-a-Service (DBaaS).

June 30, 2020

Split Software announced new capabilities designed to accelerate the adoption of feature flags in large-scale organizations.

June 30, 2020

WhiteHat Security announced a discounted Web + Mobile Application Security bundle to help organizations secure the digital future.

June 29, 2020

Puppet introduced the public beta availability of Relay, an event-driven automation platform.

June 29, 2020

D2iQ introduced KUDO for Kubeflow to simplify and accelerate machine learning (ML) deployments on Kubernetes.

June 29, 2020

Codefresh announced $27M in new funding led by Red Dot Capital Partners.

June 25, 2020

Micro Focus announced the general availability of Visual COBOL 6.0 and Enterprise Suite 6.0, providing versatile application, process and infrastructure modernization solutions for today’s enterprise developer.

June 25, 2020

SaltStack announced new features available in SaltStack Enterprise 6.3 that integrate best-of-breed IT monitoring and vulnerability management solutions, including Splunk, Tenable, Qualys, Rapid7, and Kenna Security.

June 25, 2020

Keysight Technologies has completed the acquisition of Eggplant from The Carlyle Group.

June 24, 2020

JFrog unveiled new capabilities to address the growing problem of software distribution bottlenecks. The newly introduced CDN-based and Peer-to-Peer software package distribution mechanisms empower companies to overcome the challenge of frequently delivering large volumes of artifacts to internal teams and external clients.

June 24, 2020

Copado announced its Summer 20 release to accelerate, optimize and measure innovation delivery on the Salesforce platform.

June 24, 2020

Bugsnag launched Stability Center, a centralized location that offers a holistic view into stability stats and trends across releases for multiple client and server-side applications.