Subscribe to the Non-Human & AI Identity Journal

What breaks when a malicious IDE extension can load native code?

Native code inside an extension breaks the assumption that the extension sandbox contains runtime behaviour. Once a compiled binary runs, it can access local files, processes, and command execution paths with the host’s permissions. That turns a simple add-on into a platform for persistence, propagation, and secret theft.

Why This Matters for Security Teams

A malicious ide extension that can load native code is no longer constrained by the extension sandbox. It inherits the host user’s trust boundary and can move from data access into process injection, file system probing, command execution, and credential harvesting. That changes the risk from “bad plugin behavior” to full workstation compromise, especially when developer environments hold cloud tokens, SSH keys, package signing material, and CI/CD access.

This is not a theoretical edge case. NHIMG research on Hard-Coded Secrets in VSCode Extensions and JetBrains Marketplace AI Plugin Campaign shows how quickly an extension channel can become a supply chain path for secret theft. Once native code is permitted, traditional plugin review is not enough because the real payload may be delivered through compiled modules, not just script logic. NIST guidance on access control and software security expectations in NIST SP 800-53 Rev. 5 Security and Privacy Controls reinforces the need to treat high-trust developer tooling as a privileged environment.

In practice, many security teams encounter this only after credentials, source code, or signing keys have already been accessed through a plugin path that appeared harmless during review.

How It Works in Practice

Native code breaks the assumptions that make IDE extension sandboxes useful. Script-based extensions are often constrained by runtime permissions, interpreter guards, and package-manager visibility. A compiled binary can bypass much of that model by loading shared libraries, invoking operating system APIs, and interacting directly with local processes. At that point, the extension is not merely “extending the IDE” but executing with the same local authority as the developer session.

Security teams should treat this as an identity and execution problem, not just a code-review problem. The practical control set usually includes:

  • Restricting or disabling native module loading in extensions where the platform supports that policy.
  • Allowing only signed, reviewed, and allowlisted extensions from trusted sources.
  • Running IDEs in isolated workspaces or hardened VDI images with minimal local secrets.
  • Protecting developer credentials with short-lived tokens, device-bound auth, and separate admin workflows.
  • Monitoring for unusual child processes, outbound connections, file access, and token enumeration from the IDE process.

That model aligns with NHIMG findings that secrets often live in vulnerable locations inside developer tooling, as shown in Code Formatting Tools Credential Leaks and the JetBrains breach coverage. The operational lesson is that the IDE becomes part of the trusted computing base when native code is allowed, so endpoint controls and identity controls must be evaluated together. Current guidance suggests pairing software allowlisting with least-privilege workstation access and continuous process telemetry, rather than relying on marketplace review alone. These controls tend to break down in developer laptops with broad local admin rights and long-lived cloud credentials because the extension can harvest secrets before detection catches up.

Common Variations and Edge Cases

Tighter extension controls often increase friction for developers, requiring organisations to balance productivity against the risk of local code execution. That tradeoff becomes sharper in polyglot shops, offline environments, and teams that depend on custom internal extensions or language servers.

One edge case is when native code is technically “allowed” but only for performance-critical features. In that situation, best practice is evolving, and there is no universal standard for fine-grained trust at the binary level. Teams may need to distinguish between verified native helpers and third-party native payloads, with extra scrutiny for package download chains, post-install hooks, and dynamic library loading. Another edge case is agentic or AI-enabled IDE tooling, where the extension can trigger tool calls or generate commands on the user’s behalf. In those environments, NHI Mgmt Group’s Ultimate Guide to NHI is useful for framing the identity and secret lifecycle problem around the actual execution surface, not just the visible UI.

For policy design, the safe assumption is simple: if an extension can load native code, it can usually escape the “just a plugin” mental model. That is especially true when the workstation already has access to cloud CLIs, source repositories, or build signing keys.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP Non-Human Identity Top 10, OWASP Agentic AI Top 10 and CSA MAESTRO address the attack and risk surface, while NIST AI RMF and NIST CSF 2.0 set the governance and control requirements practitioners need to meet.

Framework Control / Reference Relevance
OWASP Non-Human Identity Top 10 NHI-01 Native code in extensions expands NHI exposure through secret theft and privileged local access.
OWASP Agentic AI Top 10 A-03 Autonomous tool use and command execution mirror agentic abuse of trusted execution paths.
CSA MAESTRO TRUST-04 Trusted plugin and tool chains need explicit evaluation when code can run outside sandbox assumptions.
NIST AI RMF AI RMF is relevant where IDE extensions automate actions that affect security and data exposure.
NIST CSF 2.0 PR.AC-3 Local privilege misuse by an extension is an access control failure at the endpoint layer.

Inventory extension-related non-human identities and restrict their credentials to the minimum needed.