GHSA-xq7h-vwjp-5vrh: @grackle ai/powerline @grackle-ai/powerline Runs Without Authentication By Vulnerability

MODERATE
CWE-306
Published
Advisory Summary

GHSA-xq7h-vwjp-5vrh is a MODERATE @grackle-ai/powerline runs without authentication by vulnerability (CWE-306: Missing Authentication for Critical Function) affecting @grackle ai/powerline libraries in the npm ecosystem. The issue involves @grackle-ai/powerline runs without authentication by default. Remediation is available by upgrading affected packages to version 0.70.1.

GHSA-xq7h-vwjp-5vrh at a Glance

CVE Identifier N/A
GHSA Identifier GHSA-xq7h-vwjp-5vrh
Severity MODERATE
CVSS v3.1 Base Score N/A
CWE Classification CWE-306: Missing Authentication for Critical Function
Affected Product @grackle ai/powerline
Package Ecosystem npm
Published Date
Last Updated

How to Fix GHSA-xq7h-vwjp-5vrh

To remediate this vulnerability, upgrade all affected @grackle ai/powerline dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

@grackle-ai/powerline fixed: 0.70.1
npm install @grackle-ai/powerline@0.70.1
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

npm ls @grackle-ai/powerline

How to Check if You Are Affected

To determine whether your Node.js application is affected by GHSA-xq7h-vwjp-5vrh, inspect your project dependencies using npm:

npm ls @grackle-ai/powerline

Analyze the terminal output to locate any version of @grackle ai/powerline in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.70.1), your application is affected.

Note: The npm ls @grackle-ai/powerline command inspects dependencies declared in your package.json and lockfile; it does not perform automated runtime dynamic scanning.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-306: Missing Authentication for Critical Function, where the product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources. In @grackle ai/powerline, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Impact When `--token` is not provided and `GRACKLE_POWERLINE_TOKEN` is not set, the PowerLine gRPC server runs with **zero authentication**. A warning is logged (`"NO AUTH (development only)"`) but nothing prevents deployment in this state. Any client that can reach the PowerLine port can spawn agent sessions, access credential tokens, and execute code. The default binding is `127.0.0.1` (loopback only), which limits exposure to the local machine. However, if PowerLine is accidentally exposed on a network (e.g., in a container or via port forwarding), the impact is critical. **Affected code:** - `packages/powerline/src/index.ts:46` — token defaults to empty string - `packages/powerline/src/index.ts:63-76` — auth interceptor is only added when token is truthy ### Patches 0.70.1 **Fix:** Require an explicit `--no-auth` flag to run without authentication, rather than defaulting to no auth when the token is empty. Throw an error if starting without a token and without `--no-auth`. ### Workarounds Always provide `--token` or set `GRACKLE_POWERLINE_TOKEN` when starting PowerLine. The Grackle server does this automatically when managing PowerLine lifecycle. ### Resources - CWE-306: Missing Authentication for Critical Function - File: `packages/powerline/src/index.ts`

GHSA-xq7h-vwjp-5vrh Affected @grackle ai/powerline Versions

1 component(s)
Fixed Versions:
0.70.1
Product / Package Ecosystem Affected Versions Fixed Version
@grackle-ai/powerline
npm
< 0.70.1
0.70.1

References

Frequently Asked Questions

What is GHSA-xq7h-vwjp-5vrh?
GHSA-xq7h-vwjp-5vrh is a security vulnerability in @grackle ai/powerline involving @grackle-ai/powerline Runs Without Authentication by Default under CWE-306: Missing Authentication for Critical Function.
Which @grackle ai/powerline versions are affected?
Affected versions include releases prior to 0.70.1 across affected packages: @grackle-ai/powerline.
What version fixes GHSA-xq7h-vwjp-5vrh?
Upgrading to 0.70.1 (or the latest patched release for your respective branch) resolves the vulnerability.
Is @grackle-ai/powerline affected?
Yes, @grackle-ai/powerline is affected in releases prior to 0.70.1. Upgrade your dependency to 0.70.1 or later.
What CWE is associated with GHSA-xq7h-vwjp-5vrh?
GHSA-xq7h-vwjp-5vrh is classified under CWE-306: Missing Authentication for Critical Function (The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.).
How can I check npm dependencies for GHSA-xq7h-vwjp-5vrh?
Run the dependency tree command: 'npm ls @grackle-ai/powerline'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-xq7h-vwjp-5vrh",
  "modified" : "2026-03-25T17:30:46Z",
  "published" : "2026-03-25T17:30:46Z",
  "aliases" : [ ],
  "summary" : "@grackle-ai/powerline Runs Without Authentication by Default",
  "details" : "### Impact\n\nWhen `--token` is not provided and `GRACKLE_POWERLINE_TOKEN` is not set, the PowerLine gRPC server runs with **zero authentication**. A warning is logged (`\"NO AUTH (development only)\"`) but nothing prevents deployment in this state. Any client that can reach the PowerLine port can spawn agent sessions, access credential tokens, and execute code.\n\nThe default binding is `127.0.0.1` (loopback only), which limits exposure to the local machine. However, if PowerLine is accidentally exposed on a network (e.g., in a container or via port forwarding), the impact is critical.\n\n**Affected code:**\n- `packages/powerline/src/index.ts:46` — token defaults to empty string\n- `packages/powerline/src/index.ts:63-76` — auth interceptor is only added when token is truthy\n\n### Patches\n\n0.70.1\n\n**Fix:** Require an explicit `--no-auth` flag to run without authentication, rather than defaulting to no auth when the token is empty. Throw an error if starting without a token and without `--no-auth`.\n\n### Workarounds\n\nAlways provide `--token` or set `GRACKLE_POWERLINE_TOKEN` when starting PowerLine. The Grackle server does this automatically when managing PowerLine lifecycle.\n\n### Resources\n\n- CWE-306: Missing Authentication for Critical Function\n- File: `packages/powerline/src/index.ts`",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "npm",
      "name" : "@grackle-ai/powerline"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "0.70.1"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 0.70.0"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/nick-pape/grackle/security/advisories/GHSA-xq7h-vwjp-5vrh"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/nick-pape/grackle"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-306" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-03-25T17:30:46Z",
    "nvd_published_at" : null
  }
}