June 24th, 2024

More Memory Safety for Let's Encrypt: Deploying ntpd-rs

Let's Encrypt enhances memory safety with ntpd-rs, a secure NTP implementation, part of the Prossimo project. Transitioning to memory-safe alternatives aligns with broader security goals, supported by community and sponsorships.

Read original articleLink Icon
More Memory Safety for Let's Encrypt: Deploying ntpd-rs

Let's Encrypt has taken steps to enhance memory safety within its infrastructure by deploying ntpd-rs, a memory-safe Network Time Protocol (NTP) implementation. Concerned about vulnerabilities stemming from unsafe languages like C and C++, Let's Encrypt initiated the Prossimo project in 2020 to secure critical Internet software. ntpd-rs, developed by Project Pendulum, replaces traditional NTP implementations and has been integrated into Let's Encrypt's production environment. This move aligns with Let's Encrypt's broader goal of transitioning to memory-safe alternatives for key components like Rustls for OpenSSL, Hickory for DNS, River for Nginx, and sudo-rs for sudo. By prioritizing memory safety, Let's Encrypt aims to bolster overall security across its infrastructure. The organization relies on community support and sponsorships to sustain its services and advance a more secure and privacy-conscious web.

Related

The Pre-Scheme Restoration

The Pre-Scheme Restoration

The Pre-Scheme Restoration project, funded by NLnet foundation, aims to modernize the Pre-Scheme compiler, a subset of Scheme, for a new functional programming language. Led by Andrew Whatson, the project focuses on compatibility, tooling, and documentation.

My experience crafting an interpreter with Rust (2021)

My experience crafting an interpreter with Rust (2021)

Manuel Cerón details creating an interpreter with Rust, transitioning from Clojure. Leveraging Rust's safety features, he faced challenges with closures and classes, optimizing code for performance while balancing safety.

Memory sealing for the GNU C Library

Memory sealing for the GNU C Library

The GNU C Library introduces mseal() system call for enhanced security by preventing address space changes. Adhemerval Zanella's patch series adds support, improving memory manipulation protection in upcoming releases.

Vulnerability in Popular PC and Server Firmware

Vulnerability in Popular PC and Server Firmware

Eclypsium found a critical vulnerability (CVE-2024-0762) in Intel Core processors' Phoenix SecureCore UEFI firmware, potentially enabling privilege escalation and persistent attacks. Lenovo issued BIOS updates, emphasizing the significance of supply chain security.

SquirrelFS: Using the Rust compiler to check file-system crash consistency

SquirrelFS: Using the Rust compiler to check file-system crash consistency

The paper introduces SquirrelFS, a crash-safe file system using Rust's typestate pattern for compile-time operation order enforcement. Synchronous Soft Updates ensure crash safety by maintaining metadata update order. SquirrelFS offers correctness guarantees without separate proofs, quickly verifying crash consistency during compilation. Comparative evaluations show SquirrelFS performs similarly or better than NOVA and WineFS.

Link Icon 13 comments
By @NelsonMinar - 4 months
I like the idea of NTPD in Rust. Is there anything to read about how well ntpd-rs performs? Would love a new column for chrony's comparison: https://chrony-project.org/comparison.html

Particularly interested in the performance stats, how well the daemon keeps time in the face of various network problems. Chrony is very good at this. Some of the other NTP implementations (not on that chart) are so bad they shouldn't be used in production.

By @ComputerGuru - 4 months
Unlike say, coreutils, ntp is something very far from being a solved problem and the memory safety of the solution is unfortunately going to play second fiddle to its efficacy.

For example, we only use chrony because it’s so much better than whatever came with your system (especially on virtual machines). ntpd-rs would have to come at least within spitting distance of chrony’s time keeping abilities to even be up for consideration.

(And I say this as a massive rust aficionado using it for both work and pleasure.)

By @cogman10 - 4 months
This seems like a weird place to be touting memory safety.

It's ntpd, it doesn't seem like a place for any sort of attack vector and it's been running on many VMs without exploding memory for a while now.

I'd think there are far more critical components to rewrite in a memory safe language than the clock synchronizer.

By @mre - 4 months
I spoke with Folkert, one of the developers on this project, on the 'Rust in Production' podcast. Some of you might find it interesting: https://corrode.dev/podcast/s01e05-tweede-golf/
By @akira2501 - 4 months
Why does your ntpd have a json dependency?
By @hcfman - 4 months
If you want to setup a chrony time server that maintains accuracy to within a microsecond and doesn’t do this with a network connection then you could try my sbts-aru project and just not use the audio recorder parts of it.

https://github.com/hcfman/sbts-aru

It installs with a single command on all Raspberry Pi versions and takes care of all the dependencies, configuration and startup order details to install and start working with one command.

It’s a sound localizing audio recorder platform and that’s why it also sets up accurate time.

It’s using GPS to get its time from.

By @_joel - 4 months
Reading this reminded me of ntpsec, anyone actually use that?
By @xvilka - 4 months
BGP probably should be the next.
By @nubinetwork - 4 months
The problem with ntp isn't the client, it's the servers having to deal with forged UDP packets. Will ntpd ever become TCP-only? Sadly I'm not holding my breath. I stopped running a public stratum 3 server ~10 years ago.
By @hoseja - 4 months
Free pair of knee-high socks with every cert.