AWS CLI: cli_history database does not restrict file permissions on Unix systems

Description

Summary
AWS CLI is a command line tool for interacting with AWS services. When the cli_history feature is enabled, the history database file is created with default permissions, potentially allowing other local users on a multi-user system to read the file.

Impact
When cli_history is enabled, AWS CLI stores command history including command parameters and API request/response data in a local SQLite database. On multi-user Unix systems, the default file permissions may allow other local users to read this file, potentially exposing sensitive information. This issue only affects users who have explicitly enabled cli_history, which is disabled by default.

Impacted versions: 1.13.0 - 1.44.37 (v1), 2.0.0 - 2.33.20 (v2)

Patches
This issue has been addressed in the latest versions 2.33.21 and 1.44.38 of AWS CLI. We recommend upgrading to the latest version and ensuring any forked or derivative code is patched to incorporate the new fixes.

Workarounds
Users can manually set restrictive permissions on the history database file. Alternatively, disable cli_history by removing cli_history = enabled from the AWS config file.

Resources
If there are any questions or comments about this advisory, contact AWS Security via the vulnerability reporting page or directly via email to [email protected]. Please do not create a public GitHub issue.

Basic information

Type
reviewed
Severity
medium
Advisory on GitHub
Open advisory ↗
Repository advisory
Open repository advisory ↗
Source code
Browse source ↗
Published (advisory)
2026-02-27 15:50:32 UTC
Updated
2026-02-27 15:50:33 UTC
GitHub reviewed
2026-02-27 15:50:32 UTC

CVSS Scores

Base score Version Severity Vector
5.9 3.1
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L 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:N)
No account or special rights needed—anonymous or random user is enough.
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:L)
Some sensitive info could get out, but not a total data dump.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:L)
Might cause slowdowns, glitches, or partial disruption—not a full brick.

Identifiers

Type Value
GHSA GHSA-747p-wmpv-9c78 ↗

CWEs

CWE id Name
CWE-276 Incorrect Default Permissions

Affected packages (1)

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

Ecosystem Package Vulnerable range First patched Vulnerable functions
pip awscli >= 1.13.0, < 1.44.38 1.44.38

References

cvelogic Threat Intelligence