Software Development Security Blind Spots Part 1
Michelle Jones
Secure By Design Practitioner | Value with Velocity Professional | MSc IT (Distinction) | BSc MIS (Hons) | Product Security Architect | Application Security Champion | DevSecOps Specialist | Multi-Skilled Analyst
In the current landscape of accelerated technological advancement and widespread digitalisation, software development faces the daunting challenge of balancing rapid delivery with robust security. In the not too distant past, conducting security assessments at the end of the development lifecycle was deemed sufficiently adequate, with limited negative repercussions. However, in the current landscape, this approach significantly increases the risk of exposure to cybersecurity threats.
Organisations are now facing a new breed of sophisticated attacks aimed at compromising developer workstations, infiltrating build and release pipelines, and exploiting test environments to gain unauthorized access to sensitive production data. This strategic shift by hackers demands a corresponding evolution in our security mindset and practices, extending robust protection to every stage of the software development process.
In this article, I will be examining a critical yet often overlooked blind spot in the software development lifecycle: the integrity of the developer's work environment. This aspect, while crucial for security, is frequently met with resistance. One can almost picture the developers' collective eye-roll and exasperated sighs echoing through the office at the mere suggestion of additional security protocols encroaching upon their sacred coding realms. "Nothing will work! It's cramping my style! It slows down velocity! My creativity is stifled!" are just a few of the anticipated rebuttals.
Let's be clear: ensuring that developers remain happy and productive is an essential goal that should never be overlooked. Their productivity is intrinsically linked to their autonomy in choosing work methods and environments. Typically, developers prioritize high-performance, customizable workstations and often require elevated privileges, such as root or administrator access, in their work environments. However, keeping them happy and productive doesn't mean granting them carte blanche permissions in their work environments.
Cyber threats are now more pervasive and sophisticated than ever, making the hardening of developer environments a matter of urgency. This is crucial not only to protect the end product but the integrity of the entire software development process. Let's delve into a few security pitfalls in developer environments to understand why:
1. Package Typosquatting
Attackers are now exploiting packages with names that closely resemble popular ones. They create these misleading packages (e.g., "loadash" instead of "lodash"), and developers may accidentally install them due to typos or mistakenly believe the misspelled name is correct. To safe-guard against this, always double-check package names, use package lockfiles and implement a Software Bill of Materials (SBOM). The modern threat landscape demands that these protective measures evolve from optional considerations to mandatory safeguards—developers must integrate more stringent security practices into their daily workflow.
Why Use a Package Lockfile?
Why Use a Software Bill of Materials (SBOM)?
2. Fake or Compromised Development Tools
Compromised versions of compilers, build tools, or SDKs also pose a severe threat to developer environments. These compromised tools can introduce malicious code into software projects without the developer's knowledge. At its most severe, malicious tools can result in a company-wide breach. Whenever a developer unknowingly uses a compromised tool, every application they compile or build could be infected, creating a ripple effect that impacts end-users and entire software supply chains. All tools used in the SDLC spanning from pipeline automation to code validation and repositories, serve as critical access points for potential cyber threats. A prevalent scenario involves attackers compromising company code prior to its deployment in production environments, thereby circumventing established security checkpoints. It therefore behooves developers to be vigilant about the origins and sources of downloads for tools, plugins and extensions. These threats are particularly common from the following sources:
Cyber criminals have astutely recognised that the software supply chain and insecure software design now represent the most exploitable weak points in many organisations' defenses. To mitigate against the threat of compromised developer tools, the following strategies can be employed:
领英推荐
3. Impersonation of Powerful Developer Identities
As I alluded earlier, developers often think that they are immune to social engineering tricks and this overconfidence can actually make them more vulnerable to sophisticated attacks. Their technical expertise, while valuable, can lead to a false sense of security. Let's explore a real-world scenario that highlights the gravity of this risk.
The Company:
In a large software company, there is a development team that consists of 20 members, including junior developers, senior developers, and team leads. They have separate development and User Acceptance Testing (UAT) environments, both containing sensitive customer data for testing purposes.
The Process:
An attacker decides to target this company and begins with reconnaissance. They may use various social platforms to gather information on the company structure especially the hierarchy within the development team. The Lead Developer is now away on vacation, the attacker learns this from their Instagram post. The attacker also knows that the team uses Slack for communication as it was tweeted by an employee on X.
The attacker creates a fake Slack account mimicking the Lead Developer's handle, with a nearly identical username and using this fake account, the attacker messages a junior developer, Alex: "Hey Alex, it's me. I'm checking in quickly during my vacation because I forgot to push a critical update before I left. Could you please give me access to the UAT server? I need to make an urgent fix."
The junior developer, deduced to be the most impressionable, trusts the Lead Developer and wanting to be helpful, doesn't verify the request through other channels. He shares the login credentials for the UAT server. The attacker now armed with these credentials, has access to the UAT environment, including all the sensitive data it contains.
The attacker can then use this access to find vulnerabilities or backdoors in the application, potentially even planting malicious code that could make its way into the production environment.
Like all human-beings, developer's are susceptible and prone to their fare share of "authority bias" which is the tendency to be more influenced by the opinions and judgments of authority figures. Authority bias though can make software developers particularly vulnerable to social engineering attacks and they can exploit this psychological tendency by impersonating trusted figures in the development community, such as renowned security experts, senior management, or representatives from respected tech companies. They could masquerade as a prominent open-source contributor, suggesting the immediate integration of a "security patch" that actually contains malicious code and there are scores of developers who will comply without thoroughly verifying the request's authenticity. Therefore, having an established protocol to check and verify access to development and test environments is crucial for mitigating this type of risk. The established protocol should include multi-factor authentication, peer review processes for significant changes, and regular security awareness training to help developers recognize and resist social engineering tactics, regardless of the perceived authority of the requestor.
Stay tuned for the next installment in this series, there much more to share and discover! In the next article, I will be looking at development practices that are actually anti-patterns to security. I hope you enjoyed this one!