eBPF 함정: Linux 커널 6.9+의 FRED

2025-03-01

Linux 커널 6.9+는 x86_64 아키텍처에서 CONFIG_X86_FRED 구성 옵션을 도입하여 작업의 커널 스택 하단에 16바이트의 패딩을 추가합니다. 이로 인해 커널 스택과 pt_regs 구조체에 직접 액세스하는 eBPF 프로그램이 손상되어 쓰레기 데이터를 반환합니다. 저자는 커널 6.11로 업그레이드한 후 자신의 eBPF 도구인 xcapture-next에서 이 문제를 발견했습니다. 분석 결과 FRED에 의한 스택 오프셋이 원인임을 알아냈습니다. 스택 주소 계산을 조정하기 위한 동적 FRED 감지 메커니즘이 제시되어 문제를 해결합니다. 이 문서는 특히 원시 커널 스택 조작을 수행하는 eBPF 개발자에게 매우 중요합니다.

개발