Dark Reading is part of the Informa Tech Division of Informa PLC

This site is operated by a business or businesses owned by Informa PLC and all copyright resides with them.Informa PLC's registered office is 5 Howick Place, London SW1P 1WG. Registered in England and Wales. Number 8860726.

Vulnerabilities / Threats

10:00 AM
Anita D'Amico
Anita D'Amico
Connect Directly
E-Mail vvv

5 Human Factors That Affect Secure Software Development

With the move to remote work, it's especially important to understand how to support, discourage, and monitor conditions for development teams.

Human factors are the psychological, physiological, and environmental properties that are both intrinsic to people and also influence their interaction with the world. Scientific evidence shows that certain human factors — such as fatigue, time of day, distractions, and even visual display formats — affect human performance and impact safety in industries such as aviation, trucking, healthcare, manufacturing, and nuclear power. 

The National Transportation Safety Board's investigative processes consider the human factors that contribute to an accident, beyond mechanical failures. The FAA's Dirty Dozen lists the 12 common causes of mistakes in the aviation workplace due to human factors. 

Related Content:

3 Ways Companies are Working on Security by Design

2020 State of Cybersecurity Operations and Incident Response

New on The Edge: What Is End-to-End Encryption?

Safety and security are closely linked; after all, security breaches can provide unauthorized access to safety-critical systems. You've probably read of attackers gaining remote access to medical infusion pumps or shutting down automobile safety systems. And software, which is a major component of most safety-critical systems, is notoriously insecure. 

What can software engineering learn from human factors research in safety-critical systems? 

Where App Security Meets Psychology
I set out to answer this question with my research partners at Secure Decisions and Rochester Institute of Technology. If we could identify the human factors that play a role in software security, then development managers could use that knowledge to reduce the accidental introduction of vulnerabilities in code. And security teams could locate code that was more likely to be vulnerable.  

We reviewed the scientific literature and conducted our own research. We looked at factors like team size, level of focused attention, physical separation of developers, time of day when code is written, and hours worked per day and assessed their relationships to vulnerabilities found in the software.

Through the research, we were able to identify a number of human factors that are associated with insecure software. With the move to remote work, it is especially important to understand the human factors that managers need to support, discourage, and monitor to create ideal working conditions for remote teams. Here is a high-level summary of some of our key findings. 

Developers Need Focused Attention 
Unfocused contribution rises when a developer is modifying multiple files or when the number of unique contributors to a file increase. Unfocused contribution is associated with a greater number of vulnerabilities. This suggests that development managers should think twice before assigning two many separate tasks to a single developer. And developers should situate themselves in an environment that is relatively free from distractions.

Bigger Teams Correlate to Less Secure Code
Larger teams mean more weaknesses and vulnerabilities. It’s hard to say what the ideal team size is. But research shows that Chromium files with 9 or more developers were 68 times more likely to have a vulnerability, and Apache web server files with 9 or more developers were 117 times more likely. So, my advice is to keep development teams relatively small and focused. 

Excessive Work Hours Affect Performance 
Research-based guidelines in aviation and medicine indicate that people engaged in safety-critical work should not work more than 11 hours per day. It is well-known that human performance degrades significantly as people work long periods of time. We should apply this to software developers and limit their sustained work to no more than 11 hours per day. Software "death marches" should be avoided not applauded.

The Time of Day Code Is Written Matters 
Code churned between midnight and 8 AM and noon to 4 PM have files with more vulnerabilities. This maps to our circadian rhythms, which are cyclical changes in our mental alertness and physiological arousal over the course of a day. Most humans' alertness wanes between midnight and 6 am, and many also sustain reduced alertness around 2 pm. It is prudent for software engineers to not code in the wee hours of the morning, and to take a break in the early afternoon.

Team Location Does Not Influence Code Security 
Research conducted by Microsoft found no difference in software security between teams in the same building, cafeteria, campus, locality, or even continent. Distributed teams and co-located teams had essentially the same number of post-release failures. This is good to know as we now live in a remote working environment. 

Studying human factors gives us a new way to identify source code that is more likely to contain vulnerabilities based on what we know about the developers and the teams that wrote the code. For example, analysts and developers could choose to first triage static analysis findings or perform code reviews on code that was built by a team of nine developers where most of the code was committed at 2 am in the morning. 

Understanding human factors is especially important as we develop new models for remote work. Managers could use human factors research to shape a remote work environment with fewer sustained work hours and fewer concurrent projects that in turn fosters more secure development practices.

Anita D'Amico, PhD is CEO of Code Dx Inc., which provides solutions that automate application security workflows within a DevOps environment.  Prior to becoming CEO, she led the development of innovative cybersecurity technologies for over 20 years, initially as the head ... View Full Bio

Recommended Reading:

Comment  | 
Print  | 
More Insights
Newest First  |  Oldest First  |  Threaded View
NSA Appoints Rob Joyce as Cyber Director
Dark Reading Staff 1/15/2021
Register for Dark Reading Newsletters
White Papers
Cartoon Contest
Write a Caption, Win an Amazon Gift Card! Click Here
Latest Comment: Hunny, I looked every where for the dorritos. 
Current Issue
2020: The Year in Security
Download this Tech Digest for a look at the biggest security stories that - so far - have shaped a very strange and stressful year.
Flash Poll
Assessing Cybersecurity Risk in Today's Enterprises
Assessing Cybersecurity Risk in Today's Enterprises
COVID-19 has created a new IT paradigm in the enterprise -- and a new level of cybersecurity risk. This report offers a look at how enterprises are assessing and managing cyber-risk under the new normal.
Twitter Feed
Dark Reading - Bug Report
Bug Report
Enterprise Vulnerabilities
From DHS/US-CERT's National Vulnerability Database
PUBLISHED: 2021-01-21
Kubernetes Secrets Store CSI Driver Vault Plugin prior to v0.0.6, Azure Plugin prior to v0.0.10, and GCP Plugin prior to v0.2.0 allow an attacker who can create specially-crafted SecretProviderClass objects to write to arbitrary file paths on the host filesystem, including /var/lib/kubelet/pods.
PUBLISHED: 2021-01-21
Kubernetes Secrets Store CSI Driver versions v0.0.15 and v0.0.16 allow an attacker who can modify a SecretProviderClassPodStatus/Status resource the ability to write content to the host filesystem and sync file contents to Kubernetes Secrets. This includes paths under var/lib/kubelet/pods that conta...
PUBLISHED: 2021-01-21
Kubernetes CSI snapshot-controller prior to v2.1.3 and v3.0.2 could panic when processing a VolumeSnapshot custom resource when: - The VolumeSnapshot referenced a non-existing PersistentVolumeClaim and the VolumeSnapshot did not reference any VolumeSnapshotClass. - The snapshot-controller crashes, ...
PUBLISHED: 2021-01-21
Kubernetes Java client libraries in version 10.0.0 and versions prior to 9.0.1 allow writes to paths outside of the current directory when copying multiple files from a remote pod which sends a maliciously crafted archive. This can potentially overwrite any files on the system of the process executi...
PUBLISHED: 2021-01-21
Kubernetes API server in all versions allow an attacker who is able to create a ClusterIP service and set the spec.externalIPs field, to intercept traffic to that IP address. Additionally, an attacker who is able to patch the status (which is considered a privileged operation and should not typicall...