최근 SSH 취약점 이후, Systemd가 의존성을 줄이다
최근 sshd/xz 백도어(CVE-2024-3094)는 systemd의 libsystemd에서의 위험을 드러내며, 의존성 축소에 대한 논쟁을 불러일으켰습니다.
최근 사건들을 고려할 때, systemd가 간접적으로 관련된 취약점에 대한 중요한 논쟁이 제기되었습니다. 특히 sshd/xz 백도어 사건(CVE-2024-3094)에서는 systemd와 서비스를 통합하는 데 중요한 라이브러리인 libsystemd의 종속성과 관련된 잠재적 보안 위험이 부각되었습니다.
문제의 핵심은 libsystemd가 모든 systemd 서비스 및 systemd와 통신하고자 하는 모든 타사 서비스에 연결됨으로써, 취약점의 원인이 될 수 있는 추가적인 종속성을 도입한다는 관찰에 있습니다.
이 취약점 문제에 대한 제안된 해결책은 libsystemd의 의존성을 libc, 즉 표준 C 라이브러리만 포함하도록 대폭 줄이는 것으로, 잠재적인 보안 위협에 대한 공격 표면을 최소화하는 것입니다. 현재 구현에는 여러 다른 라이브러리가 포함되어 있지만, 이는 핵심 libsystemd 기능을 구현하는 데 반드시 필요하지 않을 수 있습니다.
이러한 우려에 대응하기 위해, libsystemd의 의존성을 libc로 최소화하는 시스템드(systemd) 기능 요청이 제기되었습니다. 이 요청의 이유는 libsystemd를 핵심 기능으로 축소함으로써 시스템 보안을 위협할 수 있는 취약성의 위험을 줄이기 위함입니다.
하지만 이 접근 방식은 libsystemd를 여러 라이브러리로 재구성해야 할 수도 있으며, 각 라이브러리가 특정 API를 지원하고 실제로 필요한 곳에만 필요한 종속성이 포함되도록 해야 할 수도 있습니다.
systemd의 핵심 인물인 Lennart Poettering은 최근의 변화가 일부 보안 우려를 완화한다고 강조하며 이러한 우려에 대해 언급했습니다. 그에 따르면, 최신 git 메인 버전에서는 libsystemd가 더 이상 압축 라이브러리를 필수 의존성으로 요구하지 않습니다.
또한, libsystemd를 더욱 간소화하고 시스템 보안을 강화하기 위해 libgcrypt를 필수 종속성에서 제거하는 계획이 진행 중입니다. 아울러, sshd가 sd_notify() 함수를 독립적으로 구현했음을 언급했으며, Poettering은 이와 같은 성격의 프로젝트에 대해 이러한 접근 방식을 권장합니다.
마지막으로 논의에서는 동적 로딩(dlopen) 정보를 ELF 메타데이터에서 읽을 수 있는 방식으로 공개하는 가능성도 언급되었으며, 이는 의존성을 이해하고 관리하는 보다 투명한 방법을 제공할 수 있습니다.
이 제안서는 패키지 관리자는 물론 시스템 빌더를 포함한 리눅스 생태계의 다양한 이해관계자들의 의견과 지원을 장려하는 협력적 접근 방식을 제안합니다.
전체 논의와 제안의 세부 사항은 프로젝트의 GitHub 저장소에서 확인할 수 있습니다.
