v0.12.0
Security release
Six findings from a full security review — one HIGH and five MEDIUM. Two carry behaviour changes; see Upgrade notes below before upgrading.
Fixes
- Vault secrets no longer cached in cleartext (HIGH, #216).
%vault(id)%references in site configuration were resolved eagerly when TYPO3 loaded the site configuration, and TYPO3 persists that array into its on-diskcorecache — so decrypted secrets landed invar/cachein cleartext, with the per-principal access check applied only once, at cache-warm time. Resolution is now caller-driven, at read time. - CSV formula injection in audit-log exports (#218). Attacker-controlled audit fields (
User-Agent, request id, identifiers) reached CSV exports without neutralizing spreadsheet formula leaders (= + - @, tab, CR); all four export sinks now neutralize them. - Secret leaked into the audit log (#217). A query-parameter-placed secret surfaced in an outbound-request error message that was logged verbatim; the URL query is now stripped before the message is sealed into the audit row.
- Audit hash chain hardened against downgrade forgery (#221). Verification accepted a uniform relabel to keyless epoch-0 SHA-256, and the HMAC migration re-sealed the chain without verifying it first. Verification now enforces a configured-epoch floor, and the migration refuses to re-seal a chain that fails verification.
- Delete access control on
tx_nrvault_secret(#220). Deleting a secret via DataHandler (FormEngine, list module) enforced no vault ACL; it now requires owner / admin / system-maintainer. - Secret and master-key files created
0600from the start (#219).vault:retrieve --outputandvault:initleft a world/group-readable window between the write and thechmod.
Upgrade notes
- Site-configuration
%vault()%references now resolve at read time, not automatically on load (#216, ADR-030). Code that read$site->getConfiguration()[…]and received a decrypted value must now callSiteConfigurationVaultProcessor::processConfiguration($config, $site)explicitly. AuditLogServiceInterfacegainedverifyChainForReseal()and averifyHashChain()$minEpochparameter (#221); external implementers of the interface must implement the new method.vault:retrieve/vault:initnow abort on a failedchmod(#219), and a vault-ACL-denied delete now preserves the record and logsaccess_deniedinstead of soft-deleting (#220).
Installation
composer require netresearch/nr-vaultPublication status
- TER: extensions.typo3.org/extension/nr_vault — 0.12.0 verified
- Packagist: packagist.org/packages/netresearch/nr-vault — 0.12.0 verified
- Documentation: docs.typo3.org/p/netresearch/nr-vault/0.12/en-us/ — render verified
Security
All release artifacts are signed with Sigstore keyless signing.
Verify signatures
cosign verify-blob \
--bundle nr-vault-0.12.0.zip.sigstore.json \
--certificate-identity-regexp "https://github.com/netresearch/.*" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
nr-vault-0.12.0.zipVerify checksums
sha256sum -c checksums.txtSoftware Bill of Materials (SBOM)
SBOMs are provided in both SPDX and CycloneDX formats for supply chain transparency.