{"uuid": "371096cb-638b-428b-9bdc-eebffe073ac7", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2026-31431", "type": "published-proof-of-concept", "source": "https://t.me/makebreakreflect/326", "content": "#aws #eks #kubernetes #bottlerocket #troubleshooting #security #linux #CVE\n\n\u0421\u043e\u0440\u0440\u0438 \u0437\u0430 \u0447\u0430\u0441\u0442\u044b\u0435 \u043f\u043e\u0441\u0442\u044b \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u2614\ufe0f\n\n\u041f\u043e\u043a\u0430 \u044f \u0431\u044b\u043b \u0432 \u043e\u0442\u043f\u0443\u0441\u043a\u0435 \u0438 \u0441\u043f\u0430\u043b, \u0441\u043d\u043e\u0432\u0430 \u0441\u043b\u043e\u043c\u0430\u043b\u0438 \u0432\u0441\u0435 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u044b.\n\n\u0412 \u043c\u0430\u0435 2026 \u0432\u044b\u0448\u043b\u0430 \u043f\u0430\u0440\u0430 \u0441\u0432\u0435\u0436\u0438\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u044f\u0434\u0440\u0430 linux \u0432 \u043e\u0441\n- \u043f\u0435\u0440\u0432\u0430\u044f: CVE-2026-31431, \u043e\u043d\u0430 \u0436\u0435 Copy Fail \nhttps://copy.fail \n- \u0432\u0442\u043e\u0440\u0430\u044f: Dirty Frag, \u0441\u043c\u0435\u0436\u043d\u0430\u044f \u043a \u043f\u0435\u0440\u0432\u043e\u0439\nhttps://github.com/V4bel/dirtyfrag \n\n\u041e\u0431\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 (LPE). \n\u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u043a\u043e\u0434 \u043d\u0430 \u0432\u0430\u0448\u0435\u0439 \u043d\u043e\u0434\u0435, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u0440\u0443\u0442\u043e\u043c. \n\u0412 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Kubernetes \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0430 \u0445\u043e\u0441\u0442.\n\n\u041f\u0435\u0440\u0432\u044b\u043c \u0434\u0435\u043b\u043e\u043c \u043f\u043e\u0448\u0451\u043b \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u0430 \u0432\u043e\u043e\u0431\u0449\u0435 \u043c\u044b \u0443\u044f\u0437\u0432\u0438\u043c\u044b \u0438\u043b\u0438 \u043d\u0435\u0442.\n\u0421\u043f\u043e\u0441\u043e\u0431 1: \nkubectl debug node/&lt;\u0438\u043c\u044f_\u043d\u043e\u0434\u044b&gt; -it --image=busybox -- sh\n\u0412\u043d\u0443\u0442\u0440\u0438:\nchroot /host modprobe algif_aead\n\n\u0415\u0441\u043b\u0438 \u0432 \u043e\u0442\u0432\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0435:\nmodprobe: ERROR: could not insert 'algif_aead': Operation not permitted\n\u0412\u044b \u043d\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u044b \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u044f AMI \u0441\u0442\u0430\u0440\u0430\u044f.\n\u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043b\u0441\u044f \u0431\u0435\u0437 \u043e\u0448\u0438\u0431\u043e\u043a, \u0443\u044f\u0437\u0432\u0438\u043c\u044b, \u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430\u043b\u044c\u0448\u0435.\n\n\u0421\u043f\u043e\u0441\u043e\u0431 2: \u0447\u0435\u0440\u0435\u0437 SSM \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043d\u0430 \u043d\u043e\u0434\u0443 (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Bottlerocket)\n\u042d\u0442\u043e \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0434\u043b\u044f Bottlerocket. \n\u042f \u043f\u0438\u0441\u0430\u043b \u043e\u0431 \u044d\u0442\u043e\u043c \u043d\u0435 \u0440\u0430\u0437, \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u043e \u0442\u0435\u0433\u0443  #bottlerocket\n\n\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043a \u043d\u043e\u0434\u0435 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438:\ncat /proc/modules | grep -E 'algif_aead|esp4|esp6|rxrpc'\n\u0415\u0441\u043b\u0438 \u043f\u0443\u0441\u0442\u043e, \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b.\n\u041f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e:\nmodprobe algif_aead\n\u0415\u0441\u043b\u0438 Operation not permitted, \u043d\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u044b.\n\n\u041f\u043e\u0447\u0435\u043c\u0443 \u0443 \u043d\u0430\u0441 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u0445\u043e\u0442\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u044f\u0434\u0440\u0430 \u0441\u0442\u0430\u0440\u0430\u044f\n\u0423 \u043d\u0430\u0441 EKS \u0441 Bottlerocket AMI. \nBottlerocket \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0441 \nkernel.lockdown = integrity.\n\u0412 \u044d\u0442\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 modprobe \u0438\u0437 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u0430.\n\u0422\u043e \u0435\u0441\u0442\u044c Copy Fail + Dirty Frag \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c algif_aead (\u0438\u043b\u0438 esp4/esp6/rxrpc \u043a\u0430\u043a \u043e\u0431\u0445\u043e\u0434), \u043d\u043e lockdown \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0434\u0430\u0451\u0442 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.\n\n\u042d\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0441\u0441\u043b\u0430\u0431\u0438\u0442\u044c\u0441\u044f. \n\u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0439 \u0437\u0430\u0449\u0438\u0442\u044b. \nDefence-in-depth \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043d\u044b\u0439 \u0441\u043b\u043e\u0439 \u0438 \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u044f\u0434\u0440\u043e.\n\n\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435: \u044f\u0432\u043d\u043e \u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u0438\n\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u044b \u0432\u044b \u0438\u043b\u0438 \u043d\u0435\u0442, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u044f\u0432\u043d\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u044d\u0442\u0438\u0445 \u043c\u043e\u0434\u0443\u043b\u0435\u0439. \n\u041e\u0434\u0438\u043d lockdown \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u043e \u044f\u0432\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u0435\u0442 \u043b\u0443\u0447\u0448\u0435.\n\nBottlerocket (Terraform, launch template + user data):\n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 bottlerocket.tpl:\n[settings.kernel]\nlockdown = \"integrity\"\n\n[settings.kernel.modules.algif_aead]\nallowed = false\n\n[settings.kernel.modules.esp4]\nallowed = false\n\n[settings.kernel.modules.esp6]\nallowed = false\n\n[settings.kernel.modules.rxrpc]\nallowed = false\n\u042d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 Bottlerocket API. \n\u041e\u043d \u0441\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0443\u0436\u043d\u044b\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 /etc/modprobe.d/ \u043f\u0440\u0438 \u0441\u0442\u0430\u0440\u0442\u0435 \u043d\u043e\u0434\u044b.\n\n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 Karpenter, \u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0432 NodeClass \u0438\u043b\u0438 EC2NodeClass \u0432 \u0441\u0435\u043a\u0446\u0438\u044e userData \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u0431\u043b\u043e\u043a \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e distro. \n\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 Terraform-\u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f \u043d\u043e\u0434-\u0433\u0440\u0443\u043f\u043f, \u0442\u043e \u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0433\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f user_data \u0434\u043b\u044f launch template. \n\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u0442\u0443\u0434\u0430 \u0431\u043b\u043e\u043a \u0432\u044b\u0448\u0435. \n\u041f\u0430\u0442\u0442\u0435\u0440\u043d \u043e\u0434\u0438\u043d \u0438 \u0442\u043e\u0442 \u0436\u0435, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430.\n\n\u041a\u0430\u043a \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0442\u043e \u0432\u0441\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c\n\u0414\u043b\u044f Bottlerocket \u0435\u0441\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431: \u0447\u0435\u0440\u0435\u0437 apiclient \u043f\u0440\u044f\u043c\u043e \u0441 \u043d\u043e\u0434\u044b, \u0431\u0435\u0437 debug \u043f\u043e\u0434\u043e\u0432 \u0438 \u0431\u0435\u0437 sheltie. \n\u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 SSM send-command \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u043c\u0435\u0441\u0442\u0430 \u0433\u0434\u0435 \u0435\u0441\u0442\u044c aws cli.\n\n\u0423\u0437\u043d\u0430\u0451\u043c instance ID:\nkubectl get node &lt;\u0438\u043c\u044f_\u043d\u043e\u0434\u044b&gt; -o jsonpath='{.spec.providerID}' | sed 's|.*\\/||'\n\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 SSM:\naws ssm send-command \\\n  --instance-ids  \\\n  --document-name \"AWS-RunShellScript\" \\\n  --parameters 'commands=[\"apiclient get settings.kernel\"]' \\\n  --region us-east-1\n\n\u0421\u043c\u043e\u0442\u0440\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:\naws ssm get-command-invocation \\\n  --command-id  \\\n  --instance-id  \\\n  --region us-east-1 \\\n  --query 'StandardOutputContent' \\\n  --output text\n\u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043b\u043e\u0441\u044c, \u0443\u0432\u0438\u0434\u0438\u0442\u0435:\n{\n  \"settings\": {\n    \"kernel\": {\n      \"lockdown\": \"integrity\",\n      \"modules\": {\n        \"algif_aead\": { \"allowed\": false },\n        \"esp4\":       { \"allowed\": false },\n        \"esp6\":       { \"allowed\": false },\n        \"rxrpc\":      { \"allowed\": false }\n      }\n    }\n  }\n}\n\n\u0415\u0441\u043b\u0438 \u043f\u0430\u0442\u0447 \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d, \u0442\u043e\u043b\u044c\u043a\u043e lockdown, \u0431\u0435\u0437 modules:\n{\n  \"settings\": {\n    \"kernel\": {\n      \"lockdown\": \"integrity\"\n    }\n  }\n}\n\n\u042d\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0435\u0433\u043e \u0432\u0438\u0434\u0438\u0442 \u0441\u0430\u043c\u0430 OS. \n\u041b\u0443\u0447\u0448\u0435 \u0447\u0435\u043c \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0440\u0443\u043a\u0430\u043c\u0438.\n\u041c\u043e\u0436\u043d\u043e \u0441\u043f\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 \ud83d\udecc", "creation_timestamp": "2026-08-30T00:00:53.904306Z"}