Debian Debug Kernel in Action

Speaker: Yunseong Kim

Track: 임베디드 및 커널

Type: 워크샵

Room: 누리관 1층 2125호

Time: Nov 22 (Sat): 14:00

Duration: 1:40

먼저 디버그 커널을 지원하는 주요 배포판과 syzbot의 디버그 설정 모범 사례를 살펴보고, 레퍼런스 패치를 적용하여 개발자가 직접 데비안 커널을 빌드하는 과정까지 설명하려 합니다.

가장 영향력 있는 커뮤니티 배포판 중 하나인 데비안은 아직 공식적인 디버그 커널 이미지를 제공하지 않고 있습니다. 데비안 리눅스 커널의 보안과 안정성을 달성하기 위한 핵심 요소는 KASAN, UBSAN 등 강력한 메모리 검사 도구(Sanitizers)가 활성화된 디버그 커널의 활용입니다. RHEL, Fedora, SUSE와 같은 엔터프라이즈 배포판들은 공식 kernel-debug 패키지를 보안 전략의 핵심으로 사용하고 있습니다. 커스텀으로 빌드한 디버그 커널은 일관성 부족으로 인한 커널 버그 재현 및 검증의 어려움이 발생합니다. 그리고 이는 데비안 커널의 선제적 강화를 저해하며, 특히 자동화된 퍼징 시스템인 syzbot과의 통합을 불가능하게 만듭니다. 현재 개발자나 보안 연구자들은 필요에 따라 직접 디버그 커널을 빌드해야 하지만, 이는 일관성 부족, 빌드 시간 소요, 보안 환경(Secure Boot)에서의 배포 제약 등 여러 문제를 야기합니다.

본 발표에서는 먼저 주요 배포판과 syzbot이 디버그 커널 설정을 어떻게 관리하고 어떤 옵션들을 활성화하는지 모범 사례를 살펴봅니다. 이어서, 데비안 환경에서 사용자가 직접 필요한 디버그 옵션을 활성화하여 커스텀 커널을 빌드하는 구체적인 방법을 실습 중심으로 설명합니다. 특히 데비안 커널 빌드 시스템의 구조와 debian/config를 이용한 설정 추가 방법, 그리고 아래 명령어를 사용한 효율적인 빌드 과정을 자세히 다룹니다.

마지막으로, 데비안이 공식 디버그 커널을 제공해야 하는 필요성과 현재 직면한 인프라 제약(빌드 시간, 스토리지 부하)에 대해 설명하고, 이를 해결하기 위한 지속 가능한 구현 전략에 대한 논의를 공유합니다.

  1. 서론: 왜 디버그 커널이 중요한가? (Introduction: The Importance of Debug Kernels)
    • 발표자 소개 및 동기
    • 디버그 커널의 정의: KASAN, UBSAN 등의 Sanitizers 및 기타 디버깅 설정의 역할
  2. 현황 분석: 배포판 및 syzbot의 디버그 커널 지원 (The Current Landscape)
    • 엔터프라이즈 배포판: RHEL, Fedora, SUSE의 kernel-debug 운영 전략 및 주요 활성화 옵션 비교
    • syzbot(syzkaller 프로젝트): 자동화된 커널 퍼징 시스템이 요구하는 필수 디버그 설정 분석
    • 데비안의 현주소: dbgsym(디버그 심볼)은 제공되나, Sanitizer 활성화된 공식 이미지는 부재
  3. 데비안의 도전 과제 (The Challenges Facing Debian): 일관성 부족으로 인한 커널 버그 재현 및 검증의 어려움
    • syzbot 통합 불가 및 취약점 탐지 지연
    • 수동 빌드의 비효율성 및 신뢰 사슬(Chain of Trust) 문제
    • 근본 원인: 커뮤니티 기반 프로젝트의 인프라 제약 (빌드 서버 용량, 스토리지 비용, 광범위한 아키텍처 지원 부담)
  4. 실전: 데비안 커스텀 디버그 커널 빌드하기 (In Action: Building Your Custom Debian Debug Kernel)
    • systemd-nspawn 위에서 데비안 커널 소스 확보 및 빌드 환경 구성
    • 데비안 커널 빌드 시스템 및 설정 구조 이해
    • 커스텀 디버그 설정 추가: debian/config 디렉토리 활용 및 아키텍처 공용 설정 적용 방법
    • 참고 사례 분석: config.rt 예시
    • 필수 디버그 옵션 활성화 및 빌드한 커널 설치 및 테스트
  5. 향후 방향 및 제안 (Future Directions and Proposals)
    • 지속 가능한 구현 전략 모색: 인프라 제약 극복 방안
    • 단계적 출시 전략 (예: amd64/unstable 우선 적용)
    • 별도 저장소(debug-archive)를 통한 배포 고려
    • 빌드 시스템 최적화 및 타 배포판 사례 벤치마킹
  6. 결론 및 Q&A (Conclusion and Q&A)
    • 요약: 현재의 해결책(커스텀 빌드)과 미래의 목표(공식 지원)
    • 커뮤니티 논의 참여 및 질의응답