Kubescape
v4.0.17SecurityA feature-rich maintenance release adds MCP, scanning, reporting, and output capabilities while improving correctness, deterministic behavior, input validation, and performance. Operators should note that `accountID` now requires a UUID in `config set` and `config validate`.
Action needed (1)
breakingUUID requirement for
accountIDaccountIDnow requires a UUID inconfig setandconfig validate.
Check if affected (5)
securitySpreadsheet formula injection protection in summary CSV output
Applies when generating summary CSV output.
Summary CSV output now neutralizes spreadsheet formula injection.
securitySpreadsheet formula injection protection in CSV output
Applies when generating CSV output.
CSV output now neutralizes spreadsheet formula injection.
securityURI credential exposure suppression for variable references
Applies when URI parts are variable references.
The MCP server now suppresses URI credential exposure when URI parts are variable references.
securitySpreadsheet formula injection protection in CSV report output
Applies when generating CSV report output.
CSV report output now neutralizes spreadsheet formula injection.
securitySpreadsheet formula injection protection in CSV output
Applies when generating CSV output.
CSV output now neutralizes spreadsheet formula injection.
All 151 other recorded changesfixes 113 · additions 26 · value changes 6 · constraints 4 · defaults 1 · removals 1
fixes (113)
- * bed990c8c36d03b1cd2f171e8b85be0bcad071ca Fix/cel variable cycle detection (#4315)
- * 94760feb32797a3a106c58522edf2919a9376e8b Fix/rbacgraph workload controller serviceaccount (#4181)
- * 233a5c8b4eb1fd9db12773cee33444e5afe151de Fix/runtime profile drift safety (#4169)
- * 6acf0bbdb41e07ab27888665095965c4fa4ce895 Fix/scan reject include and exclude namespaces (#4194)
- * 60e6fcf46cd09c6e3c92221e9d7f9ddb8ea55b7d fix(analysis): honor automatic namespace name labels (#4174)
- * 512c1305e0f097a308535cb7c89fb9f5cad6f402 fix(attackpath): preserve ServiceAccount index snapshot semantics (#4295)
- * a9ca4015c435818973df607a0c00abfaa6c1a891 fix(cautils): carry delete/review paths and fix command into v1 reports (#3985)
- * 2d37c41e5df5499ac427cc929c29ee2b5a13e368 fix(cautils): correct account ID error typo (#4330)
- * 5ee2e31f5702ccfe9c3438b99f697474072c1fad fix(cel): apply a scoped binding's paramRef to the objects it binds (#4278) (#4279)
- * f98d84ce46650c0da317797be69711b9dac6fa32 fix(cel): normalize namespaceObject nulls like the typed decode (#4303)
- * b393a028179e58156f1a0cfb081993186d44f678 fix(cel): treat empty yaml fields as unset (#4289)
- * 67e5f136919b003eb5f9c84bc443d35dabb7b55f fix(cel): use namespaceselector for binding scope matching (#4326) (#4327)
- * 4639ef2cc9ea9ee25ce35d9d17a3b8c2bb01dd6e fix(cel): warn on validation evaluation errors (#4337)
- * 6f51c4a24a6838458e79401b6cd95da2979c28c7 fix(cli): name the flag and valid range in out-of-range threshold errors (#4343)
- * a6d9db447d0ad6a1f3a2ee1d0fb30d558618221f fix(cmd): propagate root context and cancellation to subcommands (#4079)
- * 73337910bb551bdf658681d63eca4cf179330a51 fix(completion): honor command output and return write errors (#4189)
- * fc205ca7a58769fb830f90f8b7f4e7d199869cbb fix(config): report a failure to delete the cached config (#4384)
- * d455fec79ea847b55117fc8a56af376342962ea0 fix(core): match imagePullSecret registry keys the way the kubelet does (#4396)
- * 583c2d7c91ca37ff7106559c71c92591488bc539 fix(diff): bound and validate report file reads (#4180)
- * 0044760a4b9d18871d2df7dc9de5518696012491 fix(diff): dispatch unreadable report pairings with vulnerability reports to vulnerability loader (#4411)
- * 57521776799730c8b71a19ae998c0ce7bda03a3b fix(diff): distinguish vulnerability package namespaces (#4407)
- * 4bbc84253f033295b81a66124ce42f503acc402c fix(diff): only treat coverage gaps that affect the control as inconclusive (#4258)
- * a0b30e6c980a8c776eeb6a5b41bb6a07a5c5e4dd fix(diff): write a diff file inside a --output directory (#4172)
- * b7035113a04ce7c1d12eec884e2c89c0a2e04d57 fix(exposure): apply framework-scoped exceptions in per-resource output and fix (#4219)
- * b0415d39a9e7f09f47933e5adb387ecda6742e76 fix(exposure): include active Gateway request mirrors (#4175)
- * f8daefeebfa496019b35313be026a617fdceeed8 fix(fleetscan): detect case-insensitive output path collisions across contexts (#4357)
- * cb139aed05b305cfcd5b0b6c35daa9dada0954c0 fix(getter): resolve control section numbers in GetControl (#4263)
- * 667900521619172f517800a3a4124cc5ef7911a8 fix(gitlab-sast): report scan coverage gaps in scan.messages (#4206)
- * db78f2539b02eca751f7aaa155443f28a31f6de5 fix(helm): scan only vendored chart dependencies (#4020)
- * 453576661ccc817fc2897d73bdda2cc7bb760fcc fix(httphandler): keep storing posture results after a build error (#4241)
- * b6b9566e3c835dd230f2392623d8dc47004a3066 fix(httphandler): remove markdown and exceptions results on cleanup (#4254)
- * 764442a7499866af35dda29fe542e1772c1da904 fix(imagescan): clear Azure session state when login fails (#4282)
- * 4ad3285c4f837243e0c47824b9084dca3489121a fix(imagescan): clear ECR session before login attempts (#4292)
- * c1a2c90e634ee32e0a8e50b0a9419b3dde8c548b fix(imagescan): clear GCP session before validating a new login (#4297)
- * 09d0f50e1aebbfb24f94445902eb2f18ede07a34 fix(imagescan): clear GitLab session state when login fails (#4286)
- * 0d3055447a5157ac42e1f6d9530eb2a593fa58fb fix(imagescan): clear Harbor session state when login fails (#4302)
- * b5bff4be39926a7846d989f052271ee1b52ff29b fix(imagescan): exclude closed ECR enhanced findings (#4294)
- * c381e1e22b43b3adbe60348611ed97388b002e27 fix(imagescan): identify GCP vulnerabilities by their Grafeas notes (#4283)
- * 48cff2b70e52e7ef36dd9f8b20dc483cc58709e7 fix(imagescan): keep untriaged findings at unknown severity (#4409)
- * 5532425b81cb7614f5210662386c8cea61bb9b00 fix(imagescan): reject incomplete Harbor vulnerability reports (#4284)
- * 74539dbeb6287ecefc65d9b8174c7a1b627387d8 fix(imagescan): report incomplete Azure vulnerability results (#4416)
- * 2959d982fd75710151d47de4059fd1fb2ff101dd fix(imagescan): report incomplete GCP occurrence results (#4415)
- * 130bd09b37935c54b8ac0de317f24cf5a000c9a2 fix(imagescan): retain partial GitLab vulnerability data (#4204)
- * 2ecf64227f48a2096eae2c6f94f0e1750c80b189 fix(list): reject an unknown --framework instead of listing nothing (#4382)
- * c39cfc8359df63309eb234d161501d030544c486 fix(list): validate controls config target (#4422)
- * 508f2384f3004c5224b443ed683eff11eb2c1004 fix(list): validate format flag upfront before querying policies (#4383)
- * 018c1736cb80efc91e90eb729ae5fdbd9d3a6f0d fix(mapreconcile): account for equivalent exclusion rules (#4235)
- * 7d92c169e58536032490ac6c9abed116cc325c79 fix(mapreconcile): infer immutable namespace-name labels (#4417)
- * 2dc2663a71e1a57cf8514d528353168a394e8b64 fix(mcp): handle marshal errors in advanced tools (#4262)
- * 3beddbc3b31a7eb56eb2892153bc9630f6589496 fix(mcpserver): add missing workload kinds to advanced tools (#4223)
- * 955138fa1ed8b908cf593025a74e1336a3fd1318 fix(mcpserver): classify RBAC escalation list failures (#4317)
- * fba406bf6221ef5a7e518929270ea18191553c12 fix(mcpserver): classify advanced tool API errors correctly (#4322)
- * 80f68203d3494271b190a0b2993fca8c91a69a6a fix(mcpserver): classify errors in list admission policies (#4387)
- * 5f81a18b33bb9e81c2890f8432e1c5c8e6f88cee fix(mcpserver): classify forbidden and timeout errors in analyze_mutating_admission_policy_impact (#4318)
- * 92e6fa9eda0e3ecbfba9eee73dba38885d530a27 fix(mcpserver): detect secrets in ConfigMap binary content (#4265)
- * 0385707ec105bfc7b2bb4183d439d49949db91d6 fix(mcpserver): find the namespace by name in get tools when none is given (#4306)
- * 7d8d968caa5c6a3c255105058981b43a62b04d10 fix(mcpserver): keep vulnerability package URLs distinct (#4313)
- * 137d07d0605e198a50b772b2b1229abaaefef3c2 fix(mcpserver): shut down the SSE transport gracefully on SIGINT/SIGTERM (#4178)
- * 3c815b3c198864abb2e7257df3257cceabba542d fix(mcpserver): support patch_type in dry_run_remediation (#4321)
- * 87f16a6296f82ec29e9e9dab915fe7ffdb397752 fix(mcpserver): switch scan response to cautils.ResourceStatus (#4350)
- * f7cd3a9b3517f4ca0de3c0defc1a94b639b8d58a fix(mcpserver): use structured argument helpers in analyze_rbac_escalation_paths (#4221)
- * 081b11d8abd0811a20651f9ffe8eb4b46c016798 fix(mcpserver): validate mutating policy impact arguments (#4197)
- * acd1322751be3bdd93a40c092e22d31dd5a9efe7 fix(patch): allow omitted format flag in patch command (#4345)
- * 2e5d64bdadfb5c3e84b71334f2011cd6df234fce fix(policy): load YAML fixtures regardless of extension casing (#4421)
- * 806933db00fdc376a7c443a3702949b5e643f5e1 fix(policy): sort equal-path fixes by value during fixture comparison (#4388)
- * 5e4e7c853881389d0d2b687248420d997d3bfb87 fix(predict): report the running kubescape version in PSS SARIF output (#4419)
- * 125740818397385b3b28469d9688717a1496fe4f fix(printer): break attack tree score ties by resource ID (#4296)
- * f5e8b008d5b1bfed24b133a1489f51131cfcbc89 fix(printer): ensure deterministic output ordering in pretty and markdown printers (#4190)
- * 28ea38505154dda46ee6870c8d14a13220829cc3 fix(printer): fallback to Source.Path when RelativePath is empty in JUnit and resource table (#4222)
- * ff2a474af5d7a947e45cd1e5bb781ff55f4f12a4 fix(printer): fix HTML report table syntax and ensure deterministic resource ordering (#4173)
- * 7fdeb9dbc17b68caba175a449507ff61aac91c72 fix(printer): keep parent components of a --output directory (#4177)
- * b76920243a88d6cb568196bcf267e18385c09f82 fix(printer): preserve symlink parent paths in GetWriter and GetWriterNoStdoutFallback (#4233)
- * 8e6726d1b217d7e87ba395f8a3b3f5d559020a36 fix(printer): reject mixed GitLab posture and image reports (#4157)
- * 509ec235ee289d89b00b46c0c280f0a5b2628420 fix(printer): resolve JSON/YAML evidence from delete and review paths (#3984)
- * a1c110aa4bbeaffa900752515253c4aeb516e08e fix(printer): return GitHub Actions output write errors (#4156)
- * 0e5db029e5a23ab23584889bf32cdfa3910fdfbb fix(printer): write the default report inside a --output directory (#4166)
- * 81e6a13988e65bf7887fd4e266de35e570d81edc fix(prometheus): emit control, framework, and multi-image metrics in deterministic order (#4287)
- * 33f04a941b9ddc816c1f59304d1478e925d9487b fix(prometheus): emit resource and image metrics in deterministic order (#4285)
- * c668dba9472dedf3e051ad3d9d16867625f509e9 fix(pss): decode local manifests case-sensitively (#4331)
- * 65c6ea31ef27d02ef3dafd76a8991a04990d5ca4 fix(pss): evaluate every workload in local JSON streams (#4237)
- * 244e836611c32b45d4273c1a549e48072d0c4a90 fix(pss): evaluate local ReplicationController and PodTemplate manifests (#4391)
- * 7806de9940e4891311a02d056dba48e1e96f4896 fix(pss): follow workload list continuation tokens (#4205)
- * d00573291fb49ec569f148da0106974f610566a1 fix(pss): preserve distinct child workload violations (#4266)
- * 3f54029beb474847dccc3e2e8dd2d32e9a78fef0 fix(pss): preserve workload namespaces in prediction reports (#4312)
- * 1f12120be7efac5954bf6aa29351c053f4617484 fix(pss): reject empty container specs during decoding (#4276)
- * de2ae28860afb1040b41f203e588321985fe43e3 fix(pss): reject malformed Kubernetes List members (#4311)
- * e4a2b72851a61737b91ce138ae57908b8663333b fix(pss): scope owner deduplication to the workload namespace (#4293)
- * 70e29c1fe7f69b8808bef1f4990a47d4cb9c15f7 fix(rbac): separate impersonation targets from permission grants (#4176)
- * 6ddc0f37fd4c5057d226643f39c0e141d1842487 fix(report): emit v1 ControlReports and RuleReports in deterministic order (#4185)
- * 709280a3d0f461309b44ad5a5d98b33ee59bf321 fix(reports): preserve int64 values during anonymization and decryption (#4408)
- * d4f079bbcb1d0a9824cb9b7c7a675e3184a5f26d fix(resourcehandler): collect APIServerInfo on every cluster scan (#4272)
- * 3927b797babc61d38ddc51ec341bad0cd8446e39 fix(resourcehandler): preserve independent manifest sources (#4335)
- * baa50edf3bb38cfe5c41848730e9199c9f790d07 fix(resourcehandler): resolve a wildcard version to the registered one instead of an empty one (#4290)
- * 48952bda362e1abc704d4c778b7787248e7359d2 fix(scan): check every output path before opening any report file (#4342)
- * 773f28ec61f80f29a65896a8e3c2ba7cfe8c72ee fix(scan): detect output path collisions when output is whitespace or directory (#4307)
- * 26b2d357e67f225935adebeefc803682d89271e8 fix(scan): do not dereference a nil envelope returned by NewObject (#4325)
- * 1c6f9abe4c591f761986b8c9e902ebfbac266b5a fix(scan): exclude computed status lookups from incremental caching (#4236)
- * b9fb80c61fe0f5140ea9515628803ccbcafd16d9 fix(scan): reject a whitespace-only --format (#4354)
- * d32d8ca9a68306b8d3f03045c511fe5750ad9331 fix(scan): resolve exclusion roots above wildcard directories (#4348)
- * 6dbe65bc47b7bc9a3b01d85ee80fbcc42364a424 fix(scan): validate empty and whitespace-only policy names in framework and control args (#4424)
- * a490ed9c0ce33dd4a43d6796032eee3ea5240c02 fix(scan): validate items only in Kubernetes list envelopes (#4351)
- * 36edcbd5372c1fff778d0d017dbe68f38afc083f fix(scancache): isolate cached control verdicts (#4203)
- * 6239750b7c972e8171bfc10742c5b20766a959e4 fix(storage): delete posture records the latest full scan no longer reports (#4267)
- * 9560b80e31099d98fae8260634443aec6c8b6019 fix(v2): add nil safety guards for vulnerability metadata (#4339)
- * 8288ae571771fe7de75a0d0f73d2e078ed1873de fix(v2): add nil-safety guards for summary and report objects (#4328)
- * 46ccc146764a9d83b3615c048381b491c9172a39 fix(vap): use GetWriterNoFallback in writeOutput (#4268)
- * b948f861a8467d05dc7d2838505c926cb45f1789 fix(vapreconcile): evaluate control status with framework awareness in coverage (#4359)
- * f8ac0d164dec88b1fa937963768f4363c1098b56 fix(vapreconcile): honor policy selectors in resource coverage (#4291)
- * 605a496d988315727943f056693750d6822548c1 fix(vapreconcile): resolve immutable namespace-name selectors (#4277)
- * e68ab6dcc6cd7c6a39592e91050d7f88914ea923 fix: isolate framework-scoped exceptions in scan results (#3867)
- * f99ced514203d3d9d85cd3c045e50751573ab9e0 fix: keep scores below 100 from printing as 100 (#4244)
- * 009338452f7d68dde937ecd88dce152f0aab46ab fix: reject extra fix command arguments (#4256)
- * 62e62ff736b0b137300b07fbc97d8cdd55c2bd9d fix: trim whitespace in severity thresholds (#4240)
additions (26)
- * 5a9d63bcc6cc42a6fe1b2056c035fbfbce723613 Feat/mcp apply remediation report items from posture reports (#4163)
- * f3baa42e2bd644c45f6fdb2aa105fdfc4d46aa02 feat(attackpath): Phase 1 – shared input adapter and resolvers (no CLI changes) (#3944)
- * 57b15bd971848dd335ada41bd2e23ae050361905 feat(clustercomponents): build a normalized inventory of cluster components (#4216)
- * 4319ba413347d2666acea0ff8d3a2ce156181706 feat(diff): add semantic ANSI color highlights to image vulnerability diff output (#4376)
- * 8ade5fcdd620723183fd445d54279b691bd187e6 feat(diff): add semantic ANSI colors to human-readable output (#4310)
- * d5e05562f3b7c86caa23fb5fb3e1b0162ccbfa33 feat(exposure): evaluate Gateway API ReferenceGrants for cross-namespace backends (#4217)
- * fb0cc235016c752adeb8ade7f35e539b52c4dd72 feat(fix): add Helm --output-post-renderer and harden overlay staging & boundaries (#4393)
- * 404dd3519d5d0eab115fadc7182a3bddbfa2b01b feat(fix): emit Kustomize JSON6902 patches for Helm-rendered resources (#4034)
- * 7f277d4f1fe57ec90766bda0f32d4bf39cc45888 feat(fleet): graded exit codes for fleet runs (#4184)
- * c5c79f41bf115c37f856e594509f5d13151be172 feat(fleet): read fleet settings from a config file [lfx 2026] (#4288)
- * 178654652fc78eba48cfbf0a7ae25f2a107e5d5d feat(imagescan): expose package-list matching for non-image scans (#4215)
- * 43022aa310eb3b0e5adb66d20d47d70d8b193313 feat(k8scveindex): attribute Kubernetes CVEs to components using the official feed (#4225)
- * 3caf513d66a2501a5ad0114d32bbd6e553280c7b feat(list): add semantic ANSI colors to list tables and configurations (#4324)
- * da0d55de26995bcd7e03da37fe2f979e3eed2369 feat(mcp): add include_identity to analyze_vulnerability_exposure (#4191)
- * 11b6cfff20d41b4d09a730c03ed7c1fe0d511f50 feat(mcpserver): add create_admission_policy_binding tool (#4260)
- * 32da7c733db298b2f3af4163772f1514ab2d0685 feat(mcpserver): add list_configuration_security_scan_summaries (#4301)
- * 3daca05db256de184c39740cdc69cd1b514cf3ac feat(mcpserver): add list_sboms and list_sbom_packages tools (#4229)
- * 46d70144351ec41a00b331f156334805af38526d feat(mcpserver): add validate_scan_selection and share control resolution (#4281)
- * ce7ffee4ccaa5050c7faf0f975ed0703ec4be41d feat(mcpserver): filter and page list_vulnerabilities_in_manifest (#4187)
- * bc0d49635ac80ee22b2e9134aa34eaeceecb9896 feat(mcpserver): filter controls in get_configuration_security_scan_manifest (#4199)
- * 5ed7634a3237214b5826abbf6cac363362e73336 feat(mcpserver): filter list_controls by framework (#4212)
- * 76defa3b7123ec113549c5597b84aec13ceb0c42 feat(mcpserver): paginate list_controls responses (#4389)
- * d338e4573f84650352823e68c654ffe7f0e66641 feat(opa): let C-0236 look up signatures in a configured Rekor (#4403)
- * f797d06e05f3df0d5fd888386ff5fa7dbcabc2c4 feat(policy): add semantic ANSI colors to policy test and init commands (#4361)
- * eb7028f567a19dd7339a419c78c70df5f0c59811 feat(printer): show CISA KEV and EPSS in image scan output (#4207)
- * 1af7686de68645fd10a905c21a1d34bdda71cf98 feat(scan): add --notify webhook support for image scans (#4230)
value changes (6)
- * 4f0d4f9f2ce99f77a3abf57bd3fb2154b43615ae chore(deps): bump github.com/kubescape/backend to v0.0.53 (#4259)
- * f1b17fcde2beedf16de13483b0a10c04b1aad13a feat(helm): render charts for the newest Kubernetes version their kubeVersion allows (#4162)
- * fce8115a2c49b1324e87005dae904269f0b39f8e feat(mcpserver): count unchanged findings in diff_reports and list them only on request (#4270)
- * dd3df9aac7a829ab35064c5e595dd4c4c8352020 feat(sarif): keep exception audit trail in SARIF results (#4208)
- * 2ced2f387bdb6298f195155cdd5b64fab4e39277 perf(core): skip redundant k8s dial in getInterfaces when account ID is provided (#4008)
- * 0e6ca711388ae4ed664451759050632c7e48d757 perf(mcpserver): deduplicate concurrent secret exposure analysis (#4158)
constraints (4)
- * b92d6c6b6e67ff5247e1d8f430057572604c042a feat(predict): read local manifests from stdin with "-" (#4418)
- * 49a9b2bbd819558b8aa519fa826b3157160b44cc fix(diff): accept .yml extension case insensitively in diffOutputPath (#4238)
- * d8f0778e7a7076a6e20bb6e7761ccd17a21d8d20 fix(download): match the --output .json extension case-insensitively (#4274)
- * cd54dd835463973eb4cbfa8c9d9b4b9227dca6f4 fix(mcpserver): support dot-separated keys in secret exposure detection (#4308)
defaults (1)
- * 46e58428d481db93487c7382ce4f32b6ef113c12 fix(mcpserver): list configuration scans in all namespaces by default (#4299)
removals (1)
- * 172c1a7c418aacb13d7c6853246301e1eb4b250c fix(fix): drop a placeholder fix that shadows a concrete fix (#4183)
A weekly email arrives when a release needs action. Like the security patches and breaking changes in this release.