Developer Security

JetBrains Plugin Security Verification: Protecting Your IDE

IDE plugins run with the same privileges as your IDE. A malicious IntelliJ plugin has access to your source code, credentials, and development environment.

Yukti Singhal
Security Researcher
5 min read

JetBrains IDEs, IntelliJ IDEA, PyCharm, WebStorm, and the rest, are the primary development environment for millions of developers. The JetBrains Plugin Marketplace hosts thousands of plugins that extend IDE functionality. These plugins run with full access to the IDE process, which means they can read your source code, access your credentials, modify your files, and communicate with external servers.

A malicious JetBrains plugin is a supply chain attack against your development environment. It is the equivalent of a compromised npm package, but with direct access to everything a developer touches.

The Plugin Trust Model

Marketplace Review

JetBrains reviews plugins submitted to the Marketplace. The review process checks for policy compliance, malware signatures, and basic quality standards. However, the review is not a comprehensive security audit. A plugin that follows Marketplace guidelines but exfiltrates source code through an obfuscated network call could pass review.

Plugin Signing

Since 2021, JetBrains requires plugins to be signed by their developers. Plugin signing provides integrity verification (the plugin has not been tampered with after signing) and attribution (you can verify who signed the plugin). It does not guarantee that the plugin is safe.

Update Mechanism

Plugins update automatically by default. An update to a trusted plugin can introduce malicious functionality. The updated version goes through Marketplace review, but the review may not catch subtle changes in a large codebase.

What Plugins Can Access

JetBrains plugins run within the IDE's JVM process. They have access to the full JetBrains Platform API, which includes:

Source code: Plugins can read and modify every file open in the IDE and every file in the project.

Version control credentials: Git credentials, SSH keys, and repository configurations are accessible through the IDE's VCS integration.

Environment variables: Any environment variable visible to the IDE process, including API tokens and database credentials set for development.

Network access: Plugins can make arbitrary network requests, including sending data to external servers.

File system: Beyond the project, plugins can access any file the IDE process can access, which typically means the entire user home directory.

Clipboard: Plugins can read and write the system clipboard.

Security Risks

Data Exfiltration

A malicious plugin can silently collect source code, credentials, and configuration data, then transmit it to an external server. The traffic may look innocuous, resembling telemetry or update checks.

Credential Theft

Developers frequently store API keys, database passwords, and cloud credentials in environment variables or configuration files accessible to their IDE. A malicious plugin has trivial access to these credentials.

Source Code Modification

A plugin can subtly modify source code in ways that introduce backdoors. If the modification is small enough, it might not be noticed during code review, especially if the plugin modifies code after the developer has reviewed it but before it is committed.

Build System Manipulation

Plugins that integrate with build systems can modify build configurations, inject dependencies, or alter build outputs. A plugin that adds a malicious dependency to your Gradle build file compromises every build that follows.

Verification Steps

Audit Installed Plugins

Review every plugin installed across your development team. For each plugin, check who developed it, how many downloads it has, when it was last updated, whether it is open source, and what permissions or capabilities it requires.

Remove plugins that are no longer maintained, have few downloads, or are from unknown developers.

Review Plugin Source Code

For critical plugins, review the source code if available. Many popular JetBrains plugins are open source on GitHub. Verify that the published Marketplace version matches the source repository.

Monitor Network Activity

Monitor network connections from IDE processes. Unexpected connections to unknown servers warrant investigation. Tools like Little Snitch (macOS) or Windows Firewall with Advanced Security can provide this visibility.

Restrict Plugin Installation

In enterprise environments, restrict which plugins developers can install. JetBrains provides toolbox administration features that allow IT teams to manage plugin allow lists.

Use a Plugin Proxy

Run a JetBrains Plugin Repository proxy that mirrors only approved plugins. Configure developer IDEs to use this proxy instead of the public Marketplace. This ensures that only vetted plugins are available for installation.

Enterprise Plugin Management

Centralized Plugin Policy

Define an organizational policy for plugin usage. Specify which plugins are approved, which are prohibited, and the review process for new plugin requests.

Automated Plugin Auditing

Use scripts or management tools to scan developer workstations for installed plugins. Compare installed plugins against the approved list and flag deviations.

Incident Response for Plugin Compromise

If a plugin you use is found to be compromised, your response plan should include identifying all developers who have the plugin installed, revoking any credentials that were accessible to the IDE, reviewing recent code changes for unauthorized modifications, and scanning build artifacts for tampering.

How Safeguard.sh Helps

Safeguard.sh extends supply chain visibility to your development environment, including the plugins and extensions that developers rely on. It helps organizations inventory the tools in their development pipeline, assess the security posture of third-party integrations, and maintain a comprehensive view of the software supply chain from development through deployment. When a development tool or plugin is compromised, Safeguard.sh helps assess the blast radius across your organization.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.