nono-cli'scregistry pack verification can fail open when provenance metadata is absent
Registry-installed nono packs are expected to be verified from local provenance metadata before they are used. Two files are relevant:
~/.config/nono/packages/lockfile.json~/.config/nono/packages/<namespace>/<pack>/.nono-trust.bundleTesting shows that nono fails closed when a pack has a trust bundle but no lockfile entry. However, if the trust bundle is also absent, the same pack can load successfully. Deleting security metadata should not make a pack easier to run.
Observed with always-further/claude:
1. Delete ~/.config/nono/packages/lockfile.json.
Result:
```text
nono: Package verification failed for always-further/claude: pack 'always-further/claude' has a trust bundle but no lockfile entry - reinstall with: nono pull always-further/claude --force
```
2. Delete ~/.config/nono/packages/always-further/claude/.nono-trust.bundle.
Result: the profile loads successfully.
3. Restore .nono-trust.bundle while the lockfile is still absent.
Result:
```text
nono: Package verification failed for always-further/claude: pack 'always-further/claude' has a trust bundle but no lockfile entry - reinstall with: nono pull always-further/claude --force
```
If both the lockfile entry and trust bundle are absent, nono may accept an installed registry pack without artifact hash verification or provenance verification.
This is especially important for pack-provided session hooks, because session hooks execute on the host outside the sandbox. A pack that contributes host-executed code should not run unless nono can verify that the code is a locked and trusted pack artifact.
verify_profile_packs treats the lockfile entry as optional. Existing code fails when a trust bundle exists without a matching lockfile entry, but when the trust bundle is absent too, there is no equivalent hard failure.
That creates a fail-open state:
For any registry pack selected for execution, require both:
1. A matching lockfile entry in ~/.config/nono/packages/lockfile.json.
2. A present and valid .nono-trust.bundle in the installed pack directory.
If either is missing, fail closed with a reinstall instruction, for example:
```text
reinstall with: nono pull <namespace>/<pack> --force
```
This keeps verification monotonic: removing provenance metadata cannot downgrade a verification failure into a successful launch.
This issue can be reached with local access to the system, attack complexity is low, an attacker needs low-level privileges on the target. A user must be tricked into taking some action. The scope is unchanged, so the impact stays within the vulnerable component. Rated impact: confidentiality high, integrity high, availability none.
GHSA-hc4m-q9jh-xw4j is classified as CWE-636: Not Failing Securely ('Failing Open'). When the product encounters an error condition or failure, its design requires it to fall back to a state that is less secure than other options that are available, such as selecting the weakest encryption algorithm or using the most permissive…
GHSA-hc4m-q9jh-xw4j is recorded against 1 package.
Published on 28 July 2026. No public exploit is currently recorded for this entry. Record sourced from OSV.
github.com (Web)
github.com (Web)
github.com (Package)
github.com (Web)
Details
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N
Affected Packages
| Software | From version | Fixed in |
|---|---|---|
| nono-cli | — | — |
References
Similar Threats
Free Vulnerability Check
BotEraser helps you identify potentially vulnerable plugins and themes by checking your installation against GHSA-hc4m-q9jh-xw4j and other known CVE records.
Scan My Site Free →No credit card required · Results in minutes
ⓘ Data Notice: The information presented above has been compiled from publicly available internet sources. Boteraser aggregates this data solely for informational purposes and does not independently classify, evaluate, or endorse any findings about the vulnerabilities listed. The accuracy and completeness of this information is the sole responsibility of the original publishers. Boteraser and its operators accept no liability for any decisions made based on this data.
Stay up to date with the latest from Boteraser.
We use cookies to improve your experience on our site. By using our site, you consent to cookies.
Manage your cookie preferences below:
Essential cookies enable basic functions and are necessary for the proper function of the website.
CloudFlare provides web performance and security solutions, enhancing site speed and protecting against threats.
Service URL: developers.cloudflare.com (opens in a new window)
These cookies are needed for adding comments on this website.
These cookies are used for managing login functionality on this website.
Statistics cookies collect information anonymously. This information helps us understand how visitors use our website.
Google Analytics is a powerful tool that tracks and analyzes website traffic for informed marketing decisions.
Service URL: policies.google.com (opens in a new window)
You can find more information in our Cookie Policy and Privacy Policy.