Kubescape
v4.0.21SecurityA feature-rich maintenance release expands scanning, remediation, policy, and reporting capabilities while correcting behavior across RBAC, dependencies, and scan results. Security hardening covers bounded file reads, safer file handling, anonymization, and analysis.
Action needed (16)
securityBounded Helm template file reads
Helm template file reads are now bounded and validated in
cautilsto address CWE-400.securityBounded Kustomization file reads
Kustomization file reads are now bounded and validated in
cautilsto address CWE-400.securityBounded Terraform file reads
Terraform file reads are now bounded and validated in
cautilsto prevent denial of service through CWE-400.securityBounded artifact file reads in
setUseArtifactsFromArtifact file reads in
setUseArtifactsFromare now bounded and validated incautilsto address CWE-400.securityBounded ignore file reads in
LoadIgnoreFilePatternsIgnore file reads in
LoadIgnoreFilePatternsare now bounded and validated incautilsto address CWE-400.securityBounded report file reads
Report file reads are now bounded and validated in
decryptto prevent denial of service through CWE-400.securityBounded manifest file reads in
GetFileStringManifest file reads in
GetFileStringare now bounded and validated infixhandlerto address CWE-400.securityBounded manifest reads in
applyFileChangesandreadManifestapplyFileChangesandreadManifestnow bound manifest reads and reject non-regular files infixhandler, addressing CWE-400.securityBounded policy file reads
Policy file reads are now bounded and validated in
getterto prevent denial of service through CWE-400.securityBounded exception file reads
Exception file reads are now bounded and validated in
imageto prevent denial of service through CWE-400.securityBounded YAML manifest decoding in
NewPathLocationResolverNewPathLocationResolvernow bounds YAML manifest decoding and validates regular files inlocationresolver, addressing CWE-400.securityBounded policy test case file reads
Test case file reads are now bounded and validated in
policytestto address CWE-400.securityBounded workload manifest reads
Workload manifest reads are now bounded and validated in
pssto prevent denial of service through CWE-400.securityBounded custom rule file reads
Custom rule file reads are now bounded and validated in
rulesto prevent denial of service through CWE-400.securityUpdated image dependencies and
Go toolchainVulnerable image dependencies and the
Go toolchainwere updated.breakingThe Cluster prefix fallback, removed
The Cluster prefix fallback was removed from
vapreconcile.
Check if affected (3)
breakingRequired binding paths for role rewrite grants
Applies when processing role rewrite grants.
Binding paths are now required for role rewrite grants in
rbacgraph.breakingRejected fleet dry runs
Applies if you use
--dry-runfor fleet dry runs.Fleet dry runs are rejected when
--dry-runis used.breakingShallow remote git repository clones by default
Applies if you use remote git repositories.
Remote git repositories are now shallow-cloned by default during scans.
All 103 other recorded changesfixes 86 · additions 14 · value changes 2 · constraints 1
fixes (86)
- * c6061d6611e3817dbb08a1d83152404f1a54f02a fix(anonymizer): anonymize RBAC relatedObjects to prevent ID leaks (#4793)
- * d23ff8dd76a3a229b2a7c8477658972e135e4773 fix(anonymizer): hide RBAC binding subject and role references (#4841)
- * 5ea0b36555d4c725600f4fe14333fdce335bc0f3 fix(anonymizer): hide and encrypt the exception audit (#4733)
- * bf12f2a45605522ced0a37967649e86999b1a3a7 fix(anonymizer): hide skipped manifest paths (#4734)
- * 32c20b8937cac618ee0c924bfa7ad7716c5e3e51 fix(anonymizer): keep each resource's identity through transactional anonymization (#4771)
- * 4d2702270e1953a9edde3e807c16d76b424ed95a fix(anonymizer): preserve empty evidence path resource IDs (#4788)
- * bad361c20e8b3537a02bedd2370585d8d13d2331 fix(cautils): fail the scan with the cause when the scanned Helm chart cannot be loaded (#4792)
- * 7d38c3cf5915c5502112626b65bdeff34f9664de fix(cautils): keep large integers exact in the YAML 1.1 fallback (#4807)
- * 7180566322ccbc0c41f0cc888d9037822310d758 fix(cautils): re-read an invalid file-scan manifest the way kubectl does (YAML 1.1) (#4758)
- * cac8639d6a670ad8a52dc734bffec35494157a4b fix(cautils): stop scanning raw templates of Helm charts that fail to render (#4770)
- * a0c17d217cf6c98b92d881c6993365f04e575e99 fix(cel): match "<resource>/*" admission rules against the object itself (#4830)
- * af2b3ef3c2a27e36ef8c8590898756d512e0f869 fix(cel): skip a validation whose variable does not compile, like any other compile error (#4643)
- * b21a7e59e822381c5f4797e61aaf1a14a38acb07 fix(cli): remove backticks that replace the value placeholder in flag help (#4631)
- * 0bffab627656fce1c5891f17af5b455e9870c390 fix(cmd/patch): clarify digest-pinned image error and validate whitespace flags (#4852)
- * 8e4a38b2661f14ec40669b7eb5f5ffba6969ebbe fix(config): bound file reads and reject non-regular inputs in scancontract and fleetconfig loaders (#4628) (#4630)
- * 28551669c8ec1843a5f1339b00c0a5af92d83aae fix(core): bound manifest and controls input reads in scan validation and incremental cache (CWE-400) (#4827)
- * 5a963bb5e51899542cd994b1a73a1c95c43ca5e0 fix(core): prevent nil pointer dereference in Diff, Download, Patch, and List (#4853)
- * b0bde3f2fe00d813ead357e3e737754f94fbc684 fix(diff): accept a scan report that has no results (#4730)
- * 4f2119a54e35caa13090a26240e9fc44793e374e fix(diff): preserve bare Windows drive output paths (#4787)
- * 97661e72a42ba1fa200db3067951991d7c311cae fix(diff): preserve true base and head statuses for incomparable findings (#4867)
- * b8b833a702bd12638bc3c175044ea2f0cf828e21 fix(diff): validate output flag and prevent silent fallback to stdout (#4781)
- * 6156367e74b20910f38baddc8e6bf4f86d2dbdd5 fix(exceptions): match merged exception scopes like the processor does (#4728)
- * 87b3655897b9187dd6dc7524b1ceefa3b46a6276 fix(exposure): don't report externalIPs on headless or ExternalName Services (#4633)
- * c763655c84efe210b9e0f3268ac34edc11088fd7 fix(exposure): exclude redirect-only HTTP backends (#4677)
- * db3ddfcb14662a20d361b57c6daf1a572b7d01d6 fix(exposure): guard nil index with undetermined exposure in ServiceExposure and safe receiver methods (#4780)
- * efb8d208fa8538e3b2ef67dc566aa285a18a4522 fix(fix): accept 'yes' in Kustomize overwrite confirmation prompt (#4650) (#4651)
- * f92debc0e98f05a227c556cffbc993275ab651ef fix(fix): load the --verify controls config before any write and print every verdict (#4791)
- * 361cefdd3149c0786dce8d8f9cb3222347ed4897 fix(fix): validate empty and whitespace output flags (#4795) (#4796)
- * d1560c4ee0de33bfe99206192d406a55f97a3d8c fix(fixhandler): guard autofix against stale manifests (#4625)
- * 8c361655b8c489a3b204cb0eb4f2ce674afe9595 fix(fixhandler): normalize a padded base path before storing it (#4822)
- * 2d4ed8f51cc441520f383f3c49a86bed385b503a fix(gitlab): type image-scan identifiers by their advisory, not always as CVE (#4843)
- * 1292904dbcbdbe130c145928d5a351133027179c fix(helm): resolve chart dependencies against values before rendering (#4703)
- * 7d7cf669f76220e06e6d0ea149c97da11dc224ee fix(httphandler): don't let an unparsable KS_ENABLE_HOST_SCANNER disable host sensor auto-detection (#4848)
- * 14d01893bf5f36115018de34798f185aedcd5256 fix(image): validate output safety upfront before pulling or scanning images (#4706)
- * 9a9e659c0d17439369f3d75308dbb2f2ff51cd30 fix(k8scveindex): bound local CVE feed file reads and reject non-regular files (CWE-400) (#4824)
- * a558d4b56f11c5b356a456efa7756d980a132131 fix(kustomize): restrict scanned file loads to their root (#4804)
- * 60706b4e3cc161301c3e1d449bcd290788b81bb9 fix(mapreconcile): never match an objectSelector on a CONNECT request (#4635)
- * c802361455d19db6d339f93cb159cfcb7361faea fix(mapreconcile): skip resources the apiserver exempts from all policies (#4637)
- * aaf3adb336213637ae6f648f8c9084874db6dc04 fix(mcpserver): anchor workspace reads to root (#4863)
- * caaa43fb7eb276dfa9e4ad260d145623e805dd25 fix(mcpserver): confine report_path, base_path and diff reports to --workspace (#4826)
- * 870c18de02893c2c4caf9e36834c0a0b6513fd85 fix(mcpserver): include Deployment revision exposure (#4763)
- * 3752275ca5567bf2388f4874284c499ea61f5e45 fix(mcpserver): keep a JSON manifest JSON in apply_remediation (#4732)
- * d385ab5017561813622f36cbc68884095661bc2a fix(mcpserver): keep envFrom ConfigMap exposure when an optional env ref may not resolve (#4660)
- * 84ead130c9904a31e58fdcac7688a167114ca985 fix(mcpserver): match Services that select one StatefulSet Pod by its identity labels (#4662)
- * 4e177f3ce160e9c8d2a00b0f574291f470fc5169 fix(mcpserver): reject a subresource passed inside resource (#4656)
- * 88cd1c46025429d48d8a9d476c67cfd98b116cae fix(mcpserver): report finite bind and escalate grants in analyze_rbac_escalation_paths (#4718)
- * 8525dc9168d673b1df3d580b33479bd661ba87f9 fix(networkpolicy): ignore fully excluded ipBlocks in ingress exposure (#4640)
- * 57b8375d15ee5e79888671e37dba5e2969b42dd5 fix(networkpolicy): rate open-ended namespace selectors as any-namespace (#4829)
- * 4accdec90688126fc3043b5ecedde42d258d04e9 fix(networkpolicy,exposure): read resources in ID order, not map order (#4658)
- * 6aa6ad5a015493a4cc5a19c30c0114c47dbc4b9f fix(networkpolicy,vulnexposure): guard nil index with default-allow reachability and ingress exposure (#4663)
- * 779c93b0a9d10eb0710596f6bf639883b6c9c584 fix(opa): restrict control Rego capabilities (#4803)
- * f30072c676b13c0df4caf16898c2258a2b28d57b fix(opaprocessor): evaluate C-0302 against the whole cluster when streaming (#4812)
- * 59583c3dd63e769051f6da50e4789885df7992a3 fix(opaprocessor): redact secrets in container args, probe headers and annotations (#4783)
- * ee7cf887029d46ea9b35968ce54a9d3b9285d93d fix(opaprocessor): redact the related objects a rule attaches to its result (#4857)
- * e9d55589825f4b254405e80ad51a7c705a9beff8 fix(opaprocessor): skip a control whose rule errors instead of failing the whole scan (#4832)
- * 5d72ece23bfec1a49246020efe0856ee1234be81 fix(patch): use secure temporary file for intermediate scan report (#4645) (#4647)
- * a46f7f08971730f151f61ec8ffb2684cb7451ccf fix(policy): propagate policy test output errors (#4646)
- * cc03e4df247250e5b0d2717a0f86858fd872462c fix(predict): enforce Cobra argument bounds on kubescape predict root command (#4667)
- * a61fd7b2403c943b4b75e9b3995cae9155085ece fix(printer): don't label file scans with the ambient kube context (#4821)
- * 9a1e4cadeba544cbfc55324ce20d6e6347940e2d fix(printer): include exception audit and namespace summaries in YAML output (#4719)
- * 8ab01ea5eb2d90595f95e3a5e21e0bdfffedce48 fix(printer): return an error when CSV or JSON has no posture report (#4862)
- * a29f14d7e005e506f42da0d23fc8d2249a2dfc25 fix(printer): show redacted instead of the scan's XXXXXX placeholder in evidence (#4670)
- * 9655e1cc369bcb133356cfd48fe3c927eea4a98b fix(prometheus): emit one resource series per RBAC subject in cluster scans (#4721)
- fix(prometheus): label resource metrics with their source file so copies stay distinct (#4678)
- fix(rbacgraph): model bind combined with an update of an existing binding (#4716)
- fix(reportcrypto): restore typed resource envelopes in DecryptReport (#4810)
- fix(resultshandling): guard against nil dereference in score, result, and output writers (#4858)
- fix(rules): count a create through resourceNames [""] in two RBAC rules (#4831)
- fix(rules): don't count a create narrowed by resourceNames as a create (#4762)
- fix(rules): match RBAC subjects that carry neither namespace nor apiGroup (#4800)
- fix(rules): match create and patch on a common resourceName and across roles (#4806)
- fix(rules): report get on pods/exec in weak-namespace-pod-rce-v1 (#4638)
- fix(rules): scope impersonation grants made through RoleBindings (#4675)
- fix(rules): treat list and watch on secrets as reading them (#4666)
- fix(sarif): give each image run its own category when there are several (#4723)
- fix(scan): check selector-resolved image paths alongside literal paths (#4743)
- fix(scan): prevent nil pointer panic on --dry-run
- fix(scan): prevent scan output from overwriting input manifests, baselines, and configuration files (#4606)
- fix(scan): reject image-only SBOM formats upfront on posture scans (#4856)
- fix(scan): retain literal manifest paths and reattach ScanImageContext docstring (#4736)
- fix(scan): stop a passing --dry-run from writing and gating an empty report (#4234)
- fix(vap): validate output flag and prevent silent fallback to stdout (#4664)
- fix(vapreconcile): do not over-credit binding coverage for namespaced resources lacking metadata.namespace (#4642)
- fix(vapreconcile): honor binding resource rules in coverage (#4724)
- fix: collect ownerless pods with hash labels (#4752)
- * ba790281450d5272e3196382e9328a1ab5bb188c fix(helmprovenance): resolve values paths in with blocks (#4582)
additions (14)
- * 2b04fbf1534aed6032299413045ef3c94b0cb5ce feat(core): reuse released policy store across scans (#4805)
- * c8ae6a9ce0be655aaef8cbb86c99cfe740b9d6af feat(fix): add --verify to check each fixed control with a rescan (#4765)
- * 7abce96b62c907a00c7c1d20e365e0c48139a2b1 feat(fix): export remediation changes as a unified diff with --output patch (#4753)
- * 599024ebad5b5d108adc92faf78ab0faeda64bab feat(kustomize): attribute each rendered resource to the file Kustomize read it from (#4797)
- * 682fd3daed85f0486c72c86d3a2bb6388b880f0d feat(mcpserver): add verify_remediation tool for local IaC (#4707)
- * 1d4f71bc3259e8109314b3dde1b86a810a0f5549 feat(policy): select the cases policy test runs with --run (#4778)
- * 3f3b7deea03b790d6d397468aef3d4e9158201a3 feat(policy): write policy test results as a JUnit XML report (#4814)
- * 471cae950dbb139e8ac7166bd38481f1890bf493 feat(printer): mark delete and review paths that do not resolve as unresolved under -E (#4794)
- * 803f6fa57c5a338cf2c4d747a61438e69bb979e6 feat(printer): print a kubectl command for each evidence path on clus… (#4754)
- * 3421c7e30bb12bb0b4bf64b2cef0993956a4a1a5 feat(printer): show current values for delete paths in --show-evidence (#4623)
- * 51cbf0eacd49d5fc6330395e28377dec93638eaf feat(watch): add a file watcher and a debounced, sequential scan scheduler (#4865)
- * 96fc884296dd92844b7f8c50fab6c00649af5dfe feat(watch): compare local manifest scans by stable resource identity (#4709)
- catalog ecosystem cluster-scoped kinds (#4726)
- * fb757b93b4be68049ca1ced29d78e6fcad52056f feat(fleet): add json schema for the fleet report (#4624)
value changes (2)
- fix(score): bump opa-utils to v0.0.318 to keep scoring past an unscorable framework (#4750)
- perf(opaprocessor): early cleanup of raw resource payloads during streaming evaluation (#4665)
constraints (1)
- * ffbbaa117c3263285f40c49438b896bec1ad1fd7 feat(scan): support user-authored ValidatingAdmissionPolicy YAML in --custom-rules (#4838)
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.