On macOS, the Claude CLI keychain credential refresh path constructed a shell command to write the updated JSON blob into Keychain via security add-generic-password -w .... Because OAuth tokens are user-controlled data, this created an OS command injection risk.
The fix avoids invoking a shell by using execFileSync("security", argv) and passing the updated keychain payload as a literal argument.
openclaw (npm)<= 2026.2.13>= 2026.2.14 (next release)main):
9dce3d8bf83f13c067bc3c32291643d2f1f10a0666d7178f2d6f9d60abad35797f97f3e61389b70cb908388245764fb3586859f44d1dff5372b19cafThanks @aether-ai-agent for reporting.
{
"github_reviewed": true,
"github_reviewed_at": "2026-02-18T17:39:00Z",
"nvd_published_at": "2026-02-21T10:16:13Z",
"severity": "HIGH",
"cwe_ids": [
"CWE-78"
]
}