CVE-2026-66902 PUBLISHED

Google::Auth versions before 0.06 for Perl run a command named in an external_account credentials JSON via an ungated system call

Assigner: CPANSec
Reserved: 28.07.2026 Published: 04.08.2026 Updated: 04.08.2026

Google::Auth versions before 0.06 for Perl run a command named in an external_account credentials JSON via an ungated system call.

The Pluggable subclass reads credential_source.executable.command from the credentials JSON and runs it as system($command), a single argument call that passes the whole string to /bin/sh -c. The executable's environment_variables map from the same JSON is copied into %ENV first. No opt-in gate guards the call. make_creds selects the Pluggable subclass whenever credential_source.executable is present, so the path is reached from the standard Application Default Credentials flow, including a "type": "external_account" configuration read from the file named by GOOGLE_APPLICATION_CREDENTIALS. Configurations without credential_source.executable do not select this subclass and do not reach the call.

Any caller that builds credentials from a configuration it does not fully control runs the embedded command with the privileges of the application process.

Product Status

Vendor CJCOLLIER
Product Google::Auth
Versions Default: unaffected
  • affected from 0 to 0.06 (excl.)

Workarounds

For deployments that cannot upgrade to 0.06, apply the upstream fix commit, or ensure that every credentials configuration reaching the Application Default Credentials flow comes from a trusted source.

Solutions

Upgrade to Google-Auth 0.06 or later, which throws unless the environment variable GOOGLE_EXTERNAL_ACCOUNT_ALLOW_EXECUTABLES is set to 1.

References

Problem Types

  • CWE-78 Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') CWE
  • CWE-829 Inclusion of Functionality from Untrusted Control Sphere CWE