
이 저장소는 CVE-2024-21626에 취약한 앱을 위한 코드 예제와 공격 시도를 탐지하는 eBPF 가젯을 포함하고 있습니다.
이 저장소는 이 블로그 게시물의 일부로 작성되었습니다.
이 취약점을 탐지하는 데 사용되는 가젯 프로그램은 데모 목적으로만 제공됩니다. 이는 CVE-2024-21626의 완전한 탐지가 아닙니다.
CVE-2024-21626은 runc 컨테이너 런타임의 취약점으로, v1.1.12 이전 버전에 존재합니다. 이 취약점은 runc가 컨테이너 내에서 명령을 생성하거나 실행할 때 "유출된" 파일 디스크립터를 적시에 닫지 않아, 컨테이너가 해당 파일 디스크립터를 상속받아 호스트 파일 시스템에 접근할 수 있게 되는 점을 이용합니다.
이 취약점을 악용하는 방법은 여러 가지가 있습니다. 이 저장소는 런타임 시 이 취약점을 어떻게 악용할 수 있는지 보여줍니다.
자세한 내용은 여기에서 확인할 수 있습니다.
이 데모가 작동하려면 머신에서 runc 버전 1.1.11 이하를 실행 중인지 확인해야 합니다.
leaky-app은 잠재적으로 유출된 파일 디스크립터에 대한 심볼릭 링크를 생성하는 Go 앱입니다. 도커 이미지를 빌드하려면:
make leaky-app
eBPF 가젯을 빌드하려면 [ig] 도구가 필요합니다.
다음을 사용하여 가젯을 빌드할 수 있습니다:
make gadget
둘 다 빌드되면, 다음 명령으로 가젯을 실행합니다:
IG_EXPERIMENTAL=true sudo -E ig run trace-symlink:latest
다른 셸을 열고 leaky-app 컨테이너를 시작합니다:
docker run --rm --name leaky-app leaky-app
가젯이 symlink 시스템 콜을 호출한 컨테이너를 출력하는 것을 볼 수 있습니다.
이 저장소는 CVE-2024-21626 탐지를 시연하기 위해 설계된 데모 애플리케이션을 포함하고 있습니다. 이 데모는 교육 목적으로만 제공되며 실제 탐지 도구로 간주되어서는 안 됩니다. 이 데모에 구현된 탐지 메커니즘은 모든 시나리오를 다루지 않으며 이 취약점 탐지의 복잡성을 정확히 반영하지 않습니다.