cks

3.21 Syscalls (strace)

Detalhamento do uso de strace para analisar syscalls em containers (CKS).

O que é

O strace intercepta as system calls de um processo (Linux). No CKS isso aparece em cenários de “runtime security”: um pod está fazendo uma syscall proibida (ex.: kill, ptrace) e você precisa identificar qual processo/container e, se for malicioso ou indesejado, encerrar o workload (ex.: scale do deployment para 0).

Fluxo típico no exame

  1. Identificar o pod que está gerando o alerta (ex.: Falco ou enunciado).
  2. No nó onde o pod está rodando, localizar o PID do processo dentro do container (via crictl + ps ou top).
  3. Rodar strace nesse PID para ver as syscalls (ex.: procurar kill, ptrace, etc.).
  4. Se for o processo ofensor: scale do deployment para 0 para parar o pod.

Comandos no nó

# Listar pods (crictl)
crictl pods --name <deploy-name>

# Listar containers do pod
crictl ps --pod <pod-id>

# No nó: listar processos (achar PID do processo do container)
ps aux | grep <process-name>

# Anexar strace ao PID
strace -p <PID>

Encerrar o workload ofensor

A partir de um host com kubectl configurado:

kubectl scale deploy <name> --replicas=0 -n <namespace>

Isso remove os pods do deployment que estava executando a syscall proibida.

Resumo para o exame