
Falco Feeds extends the power of Falco by giving open source-focused companies access to expert-written rules that are continuously updated as new threats are discovered.

Kubernetes 1.37 has just been released, bringing 67 enhancements.
In terms of security, we’ve identified 19 changes with security implications spanning new security features to mount volumes, improvements on snapshots, authentication by default on webhooks, and more.
Let’s dig in!
Security changes in Kubernetes 1.37 that may break things
#1710 Speed up recursive SELinux label change
SIG group: sig-storage
Stage: Graduating to Stable
This feature speeds up the mounting of PersistentVolumes when using SELinux. By using the context option at mount time, Kubernetes applies the security context to the entire volume rather than recursively changing the context on the files.
With this optimization, it’s a bit easier for cluster administrators to strengthen their clusters with SELinux.
⚠️ In Kubernetes 1.37, SELinuxMount, the last bit of this enhancement, graduates to stable, meaning that this optimization will be applied to all eligible volumes. This may cause issues in rare cases where Pods with different SELinux labels, or with different privilege levels, share the same volume.
ℹ️ Read more about the SELinuxMount breaking change.
ℹ️ Read more in Kubernetes 1.30 - What’s new?
#5343 Make nftables the default kube-proxy backend
SIG group: sig-network
#5343 Stage: Net New to Alpha
Since 1.33, the nftables backend mode for kube-proxy (#3866) has been considered stable and will be the default in 1.40. In 1.37, users will start seeing a warning if they are currently using iptables as a default.
⚠️ If you are making the transition now, make sure your security tools are covering the new config files.
Related: Also, in this release the ipvs mode is taking its first steps towards deprecation (#5495).
#140226 Kubelet: Static Pods can no longer reference Secrets or ConfigMaps
A bug where static Pods could reference Secrets or ConfigMaps is now fixed, and the related PreventStaticPodAPIReferences feature gate has been removed.
Exposed info in new APIs
As usual, this new Kubernetes release brings several enhancements that expose new data to the API. To name a few:
- #1432 PV Health Monitor Alpha
- #5677 DRA: Resource Availability Visibility Alpha
- #5683 Specialized Lifecycle Management Alpha
- #4188 KEP: New kubelet gRPC API with endpoint returning local pods information Beta
- #5304 DRA: Device Attributes in Downward API Beta
- #4680 Add Resource Health Status to the Pod Status for Device Plugin and DRA Stable
- #4817 DRA: Resource Claim Status with possible standardized network interface data Stable
- #5207 metrics.k8s.io API definition Stable
- #5328 Node Declared Features (formerly Node Capabilities) Stable
This data is usually meant for cluster administrators to help monitor the health of the cluster, make decisions, or troubleshoot issues.
⚠️ However, this extra data may also help attackers to understand your infrastructure better.
✅ Review who has access to the API to ensure they are accessing only the data they need.
Net new security enhancements in Kubernetes 1.37
#4939 Support TLS credentials in gRPC probe
SIG group: sig-node
Stage: Net New to Alpha
Feature Gate: GRPCContainerProbeTLS Default: false
Your Kubernetes 1.37 cluster will be able to probe gRPC health servers that require TLS natively. Before, you would need to work around this by using an exec probe that would execute a command.
ℹ️ Use the new mode field:
livenessProbe:
grpc:
port: 8443
mode: TLS#5502 Add stickyBit support for emptydir volumes
SIG group: sig-storage
Stage: Net New to Alpha
Feature Gate: FOO Default: false
This new enhancement allows you to create an EmptyDirVolumeSource with a permission mode between 0000 and 01777, instead of the default 0777.
ℹ️ Use the new mode field:
volumes:
- name: app-data
emptyDir:
mode: 01777#5823 Pod-level checkpoint/restore
SIG group: sig-node
Stage: Net New to Alpha
Feature Gate: PodLevelCheckpointRestore Default: false
The current Kubelet Checkpoint API can create stateful copies of a running container. However, Kubernetes workloads are a combination of many containers.
Now, cluster administrators can create and restore checkpoints at a Pod level.
This can be useful for speeding up startup. The intended use is first to create checkpoints once the Pod has loaded, then restore it when the Pod is needed again instead of doing a cold start.
Another use case, and the reason why we included this, is recovering a cluster faster from a failure. Recovery time is often a forgotten area of security, but it’s an important part of resilience.
ℹ️ You can set up PodCheckpoints to be created once certain conditions are met:
apiVersion: checkpoint.k8s.io/v1alpha1
kind: PodCheckpoint
metadata:
name: myapp-snapshot-01
namespace: team-a
status:
nodeName: node-1
checkpointLocation:
type: NodeLocal
nodeLocal:
path: checkpoint-myapp_team-a-2026-05-28T10:14:22Z
checkpointedPodTemplate:
metadata:
labels:
app: myapp
spec:
containers:
- name: app
image: registry.example.com/myapp:v1.4.0
# ...scheduling constraints, resources, and security contexts as captured.
conditions:
- type: Ready
status: "True"
reason: CheckpointCompleted
message: "checkpoint archive written successfully"
observedGeneration: 1Then, use them in Pods. Notice the restoreFrom field:
apiVersion: v1
kind: Pod
metadata:
name: myapp-restored
namespace: team-a
spec:
restoreFrom: myapp-snapshot-01
# No nodeName: admission injects a required node affinity for the checkpoint's
# node and the scheduler binds the Pod there.
containers:
- name: app
image: registry.example.com/myapp:v1.4.0
# ...rest of spec must match the spec inside myapp-snapshot-01#5855 Add bind mount options (noexec, nodev, nosuid) support on volumeMounts
SIG group: sig-node
Stage: Net New to Alpha
Feature Gate: VolumeBindMountOptions Default: false
This enhancement introduces a new bindMountOptions field on volumeMounts to define security-related flags such as noexec, nodev, or nosuid.
ℹ️ For example, you could add the noexec flag to a volume mounted on /tmp to stop attackers from running chmod +x to make executable the malicious files they just downloaded (a common technique).
volumes:
- name: tmp
emptyDir: {}
containers:
- name: app
volumeMounts:
- name: tmp
mountPath: /tmp
bindMountOptions: [noexec, nosuid]#5936 Add user fields to atomic write volumes
SIG group: sig-storage
Stage: Net New to Alpha
Feature Gate: AtomicWriteVolumeUserFields Default: false
You can now restrict the ownership of atomic write volumes’ files like those from ConfigMap, Secret, DownwardAPI, and Projected volumes.
This wasn’t possible in clusters implementing restricted pod security and required high-maintenance workarounds for the rest.
ℹ️ Notice the user and defaultUser fields:
volumes:
- name: volA
configMap:
defaultUser: 1000
name: cm1
items:
- key: foo // Owner=defaultUser
path: foo
- key: bar // Owner=user
path: bar
user: 1001#5943 Topology for volume snapshots
SIG group: sig-storage
Stage: Net New to Alpha
Feature Gate: VolumeSnapshotTopology Default: false
Following on the disaster recovery theme, administrators can now include topology data to volume snapshots.
This data can be used both to guide where snapshots are stored so they align with your disaster recovery requirements, and to guide where they are restored so recovery is faster.
ℹ️ Topology information is defined on the allowedTopologies field of a VolumeSnapshotClass:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-aws-vsc
driver: ebs.csi.aws.com
deletionPolicy: Delete
allowedTopologies:
- matchLabelExpressions:
- key: topology.kubernetes.io/region
values:
- us-west-2And then is available on the Node Affinity field of a VolumeSnapshotContent:
Name: snapcontent-123-456-789
[…]
Spec:
[…]
Source Volume Mode: Filesystem
Volume Snapshot Class Name: csi-aws-vsc
[…]
Node Affinity:
- matchLabelExpressions:
- key: topology.kubernetes.io/region
values:
- us-west-2
- key: topology.kubernetes.io/zone
values:
- us-west-2a
- us-west-2b
Status:
Creation Time: 1234567890000000
Ready To Use: true
Restore Size: 4294967296
Snapshot Handle: snap-123456789
Events: <none>#6060 API server authentication to webhooks
SIG group: sig-auth
Stage: Net New to Alpha
Feature Gate: APIServerAuthenticationToWebhooks Default: false
Up until now, kube-apiserver didn’t authenticate to admission webhooks by default. An attacker with network access could probe webhooks for policy information, trigger unintended side effects, or exploit the webhook’s permissions.
This enhancement not only enables this authentication by default (when the feature gate is enabled), but also uses the TokenRequest API so implementing this authentication does not require manual steps.
ℹ️ Check the KEP for implementation details on the JWT payloads and the authentication flows.
Kubernetes 1.37 will enable these security features by default
#2033 Kubelet-in-userns, aka rootless mode
SIG group: sig-node
Stage: Major Change to Beta
Feature Gate: KubeletInUserNamespace Default: true
This enhancement allows you to run the kubelet as a non-root user (in a user namespace), protecting the host from container-breakout vulnerabilities.
It’s been in Alpha since Kubernetes 1.22, and in 1.37 some cleanup work has been done:
- You can check if a node is running in a user namespace by checking the
runningInUserNamespacefield inkubectl get nodes -o yaml. - Kubernetes CI/CD testing now runs on a rootless cluster.
ℹ️ Check the KEP for extra notes, constraints, and caveats.
#5541 Report last used time on a PVC
SIG group: sig-storage
Stage: Graduated to Beta
Feature Gate: PersistentVolumeClaimUnusedSinceTime Default: true
A new condition type, Unused, in the PersistentVolumeClaim status conditions helps cluster administrators identify unused PVCs. Cluster administrators can implement cleanup policies to remove these PVCs, which reduces the attack surface of the cluster.
After one release in Alpha, this enhancement graduates to Beta without major functional changes.
#5793 Manifest-based admission control config
SIG group: sig-api-machinery
Stage: Graduating to Beta
Feature Gate: ManifestBasedAdmissionControlConfig Default: true
Feature Gate: ExcludeAdmissionWebhookVirtualResources Default: true
This change aims to move the admission control configuration, currently stored in etcd, to file-based manifests in the kube-apiserver.
In Kubernetes 1.37, admission webhooks also exclude non-persisted (virtual) authentication and authorization resources, such as TokenReview and SubjectAccessReview. This mirrors the behavior from ValidatingAdmissionPolicy or MutatingAdmissionPolicy, and prevents webhooks from blocking the cluster's own authentication and authorization requests.
✅ Enable the AdmissionConfiguration file by adding:
--admission-control-config-file=/etc/kubernetes/admission-config.yamlℹ️ Read more in Kubernetes 1.36 - New security features
Kubernetes 1.37 changes in other existing features
#4412 Projected service account tokens for Kubelet image credential providers
SIG group: sig-auth
Stage: Major Change to Beta
Feature Gate (kubelet): KubeletServiceAccountTokenForCredentialProviders Default: true
Feature Gate (kube-apiserver): ServiceAccountNodeAudienceRestriction Default: true
This enhancement allows Kubernetes Service Accounts (KASs) to use short-lived credentials for image pulls. Compared to long-lived credentials, these ephemeral ones simplify secret management for developers and admins while also limiting the time a bad actor can use them if they are leaked.
You can configure a provider like so:
apiVersion: kubelet.config.k8s.io/v1
kind: CredentialProviderConfig
providers:
- name: acr-credential-provider
matchImages:
- "*.registry.io/*"
defaultCacheDuration: "10m"
apiVersion: credentialprovider.kubelet.k8s.io/v1
tokenAttributes:
serviceAccountTokenAudience: my-audience
cacheType: Token
# Only invoke the plugin if the pod has a service account
requireServiceAccount: true
# Invoke the plugin if all these annotations are present, and pass the values.
requiredServiceAccountAnnotationKeys:
- domain.io/identity-id
- domain.io/identity-type
# If present, these annotations are also passed.
optionalServiceAccountAnnotationKeys:
- domain.io/some-optional-annotation
- domain.io/annotation-that-does-not-existℹ️ In Kubernetes 1.37, new caching options have been implemented to optimize the fetching of multiple images.
✅ Replace long-lived credentials with short-lived ones whenever possible.
#3257 ClusterTrustBundles (previously Trust Anchor Sets)
SIG group: sig-auth
Stage: Graduating to Stable
The ClusterTrustBundle objects are cluster-scoped containers for X.509 trust anchors (root certificates). Pods can mount these objects using the clusterTrustBundle projection to validate signers.
ℹ️ Learn more in the ClusterTrustBundle documentation.
#4317 Pod certificates
SIG group: sig-auth
Stage: Graduating to Stable
This enhancement allows you to use the certificate signing request API to provide certificates for your workloads.
ℹ️ Read more in Kubernetes 1.36 - New security features
#4762 Allows setting any FQDN as the pod's hostname
SIG group: sig-network
Stage: Graduating to Stable
With HostnameOverride, developers can set an arbitrary Fully Qualified Domain Name (FQDN) as the hostname of a pod.
This is useful for older services, like the Kerberos replication daemon (kpropd), which need to handle hostname resolution for authentication accurately.
#5295 KYAML
SIG group: sig-cli
Stage: Graduating to Stable
KYAML is a safer and less ambiguous subset of YAML designed for Kubernetes config files. As a subset, it was already supported as an input. However, this enhancement adds the option to request outputs in KYAML in addition to json or yaml.
✅ Use KYAML when possible to avoid misconfigurations driven by ambiguous values.
ℹ️ Keep an eye on the Kubernetes blog; an upcoming post will cover KYAML and the ambiguities it solves in detail.
Wrapping things up
If you liked this, you might want to check out our previous “What's new in Kubernetes” editions:
Get involved with the Kubernetes project:
- Visit the project homepage.
- Check out the Kubernetes project on GitHub.
- Get involved with the Kubernetes community.
- Meet the maintainers on the Kubernetes Slack.
- Follow @Kubernetes.io on Bluesky.