Find Vulnerabilities in Kubernetes Through Golang Code Auditing
전영현부산소프트웨어마이스터고소프트웨어개발과 2학년부산소프트웨어마이스터고등학교 소프트웨어개발과 2학년에 재학 중인 전영현입니다. BoB 13기 취약점 분석 트랙 과정을 이수하고 있습니다.
현재 여러 Container Orchestration 솔루션 중 Kubernetes는 약 75%의 점유율을 기록하며 업계 표준으로 자리 잡았습니다. Kubernetes는 오픈소스 Container Orchestration 플랫폼으로, 컨테이너를 관리하기 위한 다양한 기능과 옵션을 제공하지만, 복잡한 아키텍처와 방대한 코드베이스로 인해 보안 취약점이 발생할 가능성도 함께 증가하고 있습니다. 본 프로젝트는 Kubernetes의 핵심 컴포넌트와 대표적인 서드파티 도구인 Ingress-nginx를 대상으로 보안 취약점을 탐지하고, Kubernetes의 전반적인 보안성을 강화하며, 버그바운티 프로그램 기여를 목표로 진행되었습니다.
해당 발표에서는 먼저 golang으로 이루어진 코드베이스에서 발생할 수 있는 주요 취약점들을 다룹니다. nil pointer dereference 등의 런타임 오류로 이어질 수 있는 문제, 입력값 검증이 미흡한 os.ReadFile, exec.Command 등의 함수가 초래할 수 있는 보안 리스크, 그리고 Symbolic link 우회 및 Path Traversal과 같은 파일 경로 관련 검증 부족 문제를 중심적으로 다룬 뒤, 이러한 취약한 코드 패턴을 탐지하는 방법론에 대해서 다룰 것입니다.
이후에는 Kubernetes의 특성을 고려하여 API Server, kubelet 등 주요 컴포넌트별로 취약점이 발생할 수 있는 Attack Surface를 판별하고, 해당 코드베이스에서 발생할 수 있는 logical bug로 인한 취약점에 대해서도 다룰 것입니다.