6P by neo 3달전 | favorite | 댓글 1개
  • 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의 경우도 예외가 아님.
  • 기술 도입 시 고려사항: 새로운 기술을 도입할 때는 기존 시스템과의 호환성, 학습 곡선 등을 고려해야 함.
  • 보안 강화의 필요성: 인터넷 인프라의 보안을 강화하는 것은 전체 인터넷 생태계의 안전성을 높이는 데 기여함.
Hacker News 의견
  • NTPD를 Rust로 구현하는 아이디어: NTPD를 Rust로 구현하는 아이디어에 관심이 있음. 성능에 대한 자료를 찾고 있으며, 특히 네트워크 문제 상황에서 시간 동기화 성능에 관심이 있음. Chrony와의 비교도 보고 싶음.
  • NTP 문제의 복잡성: NTP는 아직 완전히 해결된 문제가 아니며, 메모리 안전성보다 성능이 더 중요함. Chrony가 시스템 기본 제공 NTP보다 훨씬 나아서 사용 중임.
  • Rust 애호가의 의견: Rust 애호가로서, ntpd-rs가 Chrony의 성능에 근접해야 고려할 가치가 있음.
  • 메모리 안전성 논의: 메모리 안전성을 강조하는 것이 이상하게 느껴짐. NTPD는 공격 벡터가 적고, 메모리 문제 없이 잘 작동 중임. 더 중요한 컴포넌트를 메모리 안전한 언어로 재작성하는 것이 필요함.
  • JSON 의존성 질문: 왜 NTPD에 JSON 의존성이 있는지 궁금함.
  • BGP 재작성 제안: 다음으로 BGP를 메모리 안전한 언어로 재작성하는 것이 좋겠음.
  • NTPsec 사용 여부: NTPsec을 실제로 사용하는 사람이 있는지 궁금함.
  • NTP 서버 문제: NTP의 문제는 클라이언트가 아니라 위조된 UDP 패킷을 처리해야 하는 서버에 있음. NTPD가 TCP 전용이 될 가능성에 대해 회의적임. 10년 전부터 공용 stratum 3 서버 운영을 중단함.