Skip to content

[Security] [Dependabot] Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching #551

@care-taker-bot

Description

@care-taker-bot

🟡 Severity: MEDIUM
Type: Dependabot security advisory
Package / Rule: picomatch
Alert: 184

Summary

Impact

picomatch is vulnerable to a method injection vulnerability (CWE-1321) affecting the POSIX_REGEX_SOURCE object. Because the object inherits from Object.prototype, specially crafted POSIX bracket expressions (e.g., [[:constructor:]]) can reference inherited method names. These methods are implicitly converted to strings and injected into the generated regular expression.

This leads to incorrect glob matching behavior (integrity impact), where patterns may match unintended filenames. The issue does not enable remote code execution, but it can cause security-relevant logic errors in applications that rely on glob matching for filtering, validation, or access control.

All users of affected picomatch versions that process untrusted or user-controlled glob patterns are potentially impacted.

Patches

This issue is fixed in picomatch 4.0.4, 3.0.2 and 2.3.2.

Users should upgrade to one of these versions or later, depending on their supported release line.

Workarounds

If upgrading is not immediately possible, avoid passing untrusted glob patterns to picomatch.

Possible mitigations include:

  • Sanitizing or rejecting untrusted glob patterns, especially those containing POSIX character classes like [[:...:]].

  • Avoiding the use of POSIX bracket expressions if user input is involved.

  • Manually patching the library by modifying POSIX_REGEX_SOURCE to use a null prototype:

    const POSIX_REGEX_SOURCE = {
      __proto__: null,
      alnum: 'a-zA-Z0-9',
      alpha: 'a-zA-Z',
      // ... rest unchanged
    };

Resources

Remediation

Resolution steps for @copilot:

  1. Review the alert at https://github.com/ianlintner/Example-React-AI-Chat-App/security/dependabot/184
  2. If this is a dependency vulnerability: bump picomatch to a patched
    version; update lockfile.
  3. If this is a code-scanning finding: fix the flagged code pattern.
  4. If this is a secret exposure: rotate the credential immediately and
    remove it from git history.
  5. Open a pull request with the fix and reference this issue.
  6. Ensure CI passes before requesting review.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions