{"id":"GHSA-h5fq-653g-gxrm","aliases":["GO-2026-5413"],"url":"https://o3.security/vulnerability/GHSA-h5fq-653g-gxrm","summary":"ots has a negative expire override that can bypass its secret retention policy","details":"## Summary\n\nThe `/api/create` endpoint accepted negative `expire` query values. For the memory storage backend, negative values were passed to secret creation as a negative duration and treated as no expiry, allowing callers to create secrets that persisted longer than intended.\n\n## Impact\n\nUnauthenticated users could bypass configured retention expectations for secrets they create by sending `POST /api/create?expire=-1`.\n\nThis does not allow reading or modifying secrets created by other users. Secrets remain one-time-read and, in the normal web flow, client-side encrypted.\n\n## Affected versions\n\nVersions up to and including v1.21.4 are affected.\n\n## Patched versions\n\nFixed in v1.21.5.\n\n## Workarounds\n\nDisable expiry overrides via `disableExpiryOverride: true` until upgrading.\n\n## Credit\n\nReported by Chai Cheng Xun via email.","published":"2026-05-05T17:20:36Z","modified":"2026-07-21T14:49:20Z","cvss":{"score":5.3,"severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N"},"epss":null,"cisaKev":null,"exploitsKnown":0,"affectedPackages":[{"ecosystem":"Go","name":"github.com/Luzifer/ots","fixedVersion":"1.21.5"}],"fix":{"url":"https://github.com/Luzifer/ots/commit/3511bd18a2bec75bd9c6b4d513f2a90ccf4209b7","label":"Luzifer/ots@3511bd1"},"references":[{"type":"WEB","url":"https://github.com/Luzifer/ots/security/advisories/GHSA-h5fq-653g-gxrm"},{"type":"WEB","url":"https://github.com/Luzifer/ots/commit/3511bd18a2bec75bd9c6b4d513f2a90ccf4209b7"},{"type":"PACKAGE","url":"https://github.com/Luzifer/ots"},{"type":"WEB","url":"https://github.com/Luzifer/ots/releases/tag/v1.21.5"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-07-21T14:49:20Z"}}