
# cronjob_vuln.yaml - CronJob that checks current time without external validation
apiVersion: batch/v1
kind: CronJob
metadata:
name: backup
spec:
schedule: "0 2 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: backup
image: alpine
command: ["/bin/sh", "-c", "if [ $(date +%H) -eq 2 ]; then echo doing backup; fi"]
restartPolicy: OnFailure
Kubernetes CronJob 依赖节点的系统时钟来决定是否运行。具有节点级权限的攻击者可以操纵时钟以强制提前执行,从而可能触发计划任务(例如备份),并产生意想不到的后果。
(模拟)拥有节点 root 权限时,运行:
python exploit_cronjob_time.py
如果 cronjob 容器信任主机时间,它将执行该任务。