- Let's Encrypt는 운영 체제와 네트워크 인프라의 많은 부분이 C와 C++ 같은 안전하지 않은 언어로 작성된 것에 대해 우려 해왔음
- CA 소프트웨어는 메모리 안전한 Golang으로 작성되었지만, OS/네트워크 부분은 메모리 안전성이 부족하여 패치가 필요한 취약점이 일상적으로 발생
- 2020년에 Prossimo 프로젝트를 시작하여 중요한 소프트웨어 인프라를 메모리 안전하게 만드는 것을 목표로 함
Prossimo 프로젝트의 주요 성과
- Rustls TLS 라이브러리, Hickory DNS, River 리버스 프록시, sudo-rs, Linux 커널의 Rust 지원, ntpd-rs 등 다양한 소프트웨어 구성 요소에 투자함
- 최근 Let's Encrypt 인프라에 Prossimo의 첫 번째 메모리 안전 소프트웨어인 ntpd-rs를 배포함
ntpd-rs의 중요성
- 대부분의 운영 체제는 정확한 시간을 결정하기 위해 네트워크 시간 프로토콜(NTP)을 사용함
- 시간 트래킹은 OS의 중요한 작업이며, 인터넷과 상호작용하게 되므로 NTP 구현의 보안은 중요함
- 2022년 4월 Prossimo는 메모리 안전하고 더 안전한 NTP 구현인 ntpd-rs 작업을 시작
- 2024년 4월 ntpd-rs가 Let's Encrypt의 스테이징 환경에 배포되었고, 현재는 프로덕션 환경에서 사용 중
향후 계획
- 향후 몇 년 동안 Let's Encrypt 인프라에서 C 또는 C++ 소프트웨어를 메모리 안전한 대안으로 교체할 계획
- OpenSSL과 그 파생 제품을 Rustls로 교체.
- DNS 소프트웨어를 Hickory로 교체.
- Nginx를 River로 교체.
- sudo를 sudo-rs로 교체.
GN⁺의 의견
-
메모리 안전성의 중요성: 메모리 안전한 언어로 작성된 소프트웨어는 보안 취약점을 줄이는 데 큰 도움이 됨.
-
Rust의 장점: Rust는 메모리 안전성을 보장하면서도 높은 성능을 제공하여 많은 보안 민감 소프트웨어에 적합함.
-
커뮤니티의 역할: 오픈 소스 프로젝트는 커뮤니티의 기여가 중요하며, Let's Encrypt의 경우도 예외가 아님.
-
기술 도입 시 고려사항: 새로운 기술을 도입할 때는 기존 시스템과의 호환성, 학습 곡선 등을 고려해야 함.
-
보안 강화의 필요성: 인터넷 인프라의 보안을 강화하는 것은 전체 인터넷 생태계의 안전성을 높이는 데 기여함.