Maven Plugins from Hell: When Your Build Hijacks Your PC
Modern software development relies heavily on build tools like Apache Maven to manage dependencies, compile code, and automate deployments. However, what happens when a seemingly harmless Maven plugin turns out to be malicious?
In recent years, attackers have weaponized Maven plugins to execute arbitrary code, steal credentials, and even mine cryptocurrency on developers’ machines. This article explores:
- Real-world cases of malicious Maven plugins
- How to sandbox Maven builds with Docker
- Using SBOM (Software Bill of Materials) to detect risks
1. The Threat: Malicious Maven Plugins in the Wild
Maven plugins are powerful—they can modify files, download artifacts, and run scripts. Unfortunately, this makes them a prime target for attackers.
Case Study: The “Maven Wagon” Backdoor (2022)
In 2022, security researchers discovered a malicious version of the wagon-ssh plugin in Maven Central. The plugin contained obfuscated code that:
- Exfiltrated SSH credentials from
~/.ssh/ - Connected to a remote C2 server for further payloads
- Remained undetected for months due to its legitimate-looking metadata
How Do These Plugins Spread?
- Typosquatting: Fake plugins with names like
maven-core(vs.maven-core-plugin) - Compromised Developer Accounts: Legitimate plugins hijacked via stolen credentials
- Dependency Confusion: Attackers upload malicious versions to public repos
2. Defending Your Build: Sandboxing Maven with Docker
Running Maven builds in an isolated environment prevents malicious plugins from harming your host machine.
Solution: Dockerized Maven Builds
# Dockerfile for a sandboxed Maven build FROM maven:3.8.6-openjdk-11 WORKDIR /app COPY pom.xml . COPY src ./src # Run build in a restricted environment RUN mvn package -DskipTests
Key Benefits:
✔ No host system access (malicious plugins can’t read /etc/passwd)
✔ Network restrictions (block outbound C2 callbacks)
✔ Ephemeral containers (destroyed after build)
Example Command:
docker build -t maven-safe-build . && docker run --rm maven-safe-build
3. Detecting Threats with SBOM (Software Bill of Materials)
An SBOM lists all components in your software, helping identify risky dependencies.
Tools to Generate SBOMs:
- CycloneDX Maven Plugin
<plugin>
<groupId>org.cyclonedx</groupId>
<artifactId>cyclonedx-maven-plugin</artifactId>
<version>2.7.4</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>makeAggregateBom</goal>
</goals>
</execution>
</executions>
</plugin>
Run with:
mvn cyclonedx:makeAggregateBom
- Dependency-Track (for analysis)
Upload your SBOM to Dependency-Track to check for known vulnerabilities.
4. Best Practices for Secure Maven Usage
- Verify Plugin Signatures
gpg --verify plugin.jar.asc plugin.jar
2. Use Trusted Repositories
<repositories>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
</repositories>
3. Monitor for Suspicious Activity
- Check for unexpected network calls (
tcpdump,Wireshark) - Audit
~/.m2for unknown.jarfiles
Conclusion: Don’t Let Maven Plugins Bite You
Malicious Maven plugins are a real and growing threat, but by:
- ✅ Sandboxing builds with Docker
- ✅ Generating SBOMs for transparency
- ✅ Sticking to verified sources
You can harden your pipeline against supply chain attacks.
Further Reading:
Stay safe—your build system shouldn’t be your weakest link!


