@axonflow/openclaw fix introduces plugin cache and credential-file permission hardening

Description

Summary

Two related permission defects in this AxonFlow plugin allowed registration credentials and cache state to be readable by other local users on hosts where the calling user's home directory was at the conventional 0755 mode.

Affected versions

Versions 1.3.2 and below.

Impact

  1. Cache and config directory mode. The plugin's directories under ~/.config/axonflow/ and ~/.cache/axonflow/ were created with the umask-derived default mode (often 0755) on first use and not subsequently re-validated. On systems where ~/.config/ is itself 0755, the plugin's registration record (including a hashed credential and instance_id) was traversable by other local users.
  2. Credential file mode at load time. The plugin loaded its try-registration.json credential file without validating that the file mode was 0600. A registration file written by a misconfigured tool, copied across systems, or restored from backup could end up world-readable, and the plugin would silently use it.

The fix restores 0700 on all plugin directories on every plugin invocation (not only first creation) and refuses to load credential files with non-0600 modes.

Remediation

Upgrade to the patched plugin version listed under Vulnerabilities. On startup the plugin will repair existing directory modes; existing credential files with overly permissive modes will be refused, requiring the user to re-register or chmod 0600 the file.

Credit

Identified by AxonFlow internal security review.

Basic information

Type
reviewed
Severity
medium
Advisory on GitHub
Open advisory ↗
Repository advisory
Open repository advisory ↗
Source code
Browse source ↗
Published (advisory)
2026-05-06 23:23:25 UTC
Updated
2026-05-06 23:23:26 UTC
GitHub reviewed
2026-05-06 23:23:25 UTC

CVSS Scores

Base score Version Severity Vector
5.5 3.1
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N Click to expand
Attack vector (AV:L)
They already need access on the box, or another person has to do something wrong; it’s not a remote drive-by.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:L)
A normal user session is enough; they don’t have to be admin.
User interaction (UI:N)
Nobody has to click “OK” or open a trap file; it can work without a victim helping.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:H)
Serious risk that confidential data gets exposed in a big way.
Integrity (I:N)
Data isn’t meaningfully altered or forged.
Availability (A:N)
Service keeps running; no real outage angle.

Identifiers

Type Value
GHSA GHSA-cqmh-pcgr-q42f ↗

CWEs

CWE id Name
CWE-552 Files or Directories Accessible to External Parties
CWE-732 Incorrect Permission Assignment for Critical Resource

Affected packages (1)

Vulnerable version ranges and first patched releases as published by GitHub.

Ecosystem Package Vulnerable range First patched Vulnerable functions
npm @axonflow/openclaw < 2.0.0 2.0.0

References

cvelogic Threat Intelligence