You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
secure_time: true can never sync — guest chrony is built without NTS #745
Guest images ship /etc/chrony/chrony.conf with every time server set to NTS (server <host> iburst nts), but chronyd is compiled without NTS support. Chrony therefore has zero usable sources and never synchronizes.
Any app with secure_time: true — the manifest default (default_true) — then blocks in dstack-utilsystem_setup.rs on chronyc waitsync, which bails → boot.error → reboot. On SEV-SNP this is a hard loop (cpus are not resettable, terminating → VMM restarts forever); on TDX it's a boot failure.
Confirmed from inside a running CVM:
chronyd 4.8 starting (... -NTS ...)
Missing NTS support
Can't synchronise: no selectable sources (10 unreachable sources)
chronyc authdata shows Cook=0 for all servers (NTS-KE never attempted), and the clock was already correct (stepped 0.000000s) — so it's not a network, clock, or platform issue.
It has gone unnoticed because every real deployment sets secure_time: false; the broken NTS sync is silent until the strict gate is enabled.
Fix
In meta-dstack, recipes-core/chrony/chrony%.bbappend adds DEPENDS += "gnutls" and an NTS config but never enables the NTS build flag. Upstream chrony_4.8.bb gates it behind PACKAGECONFIG[nts]. Add:
PACKAGECONFIG:append = " nts"
Then chronyd is built with NTS and secure_time: true can actually sync.
Separately, single-node/no-gateway deploys (no trusted time source) should default secure_time: false.
Root cause confirmed: after the Yocto/meta-openembedded upgrade, chrony's NTS support became gated by PACKAGECONFIG[nts] = ",--disable-nts,gnutls". Our bbappend only added gnutls to DEPENDS, but did not enable nts, so bitbake passed --disable-nts and chronyd was built with -NTS.
The PR explicitly adds:
PACKAGECONFIG:append=" nts"
Local check now shows PACKAGECONFIG includes nts and PACKAGECONFIG_CONFARGS no longer contains --disable-nts.
Disposition: security feature bug. The fix landed in Dstack-TEE/meta-dstack#76. Keep this issue open until the dstack-side release or guest image consumption path is validated.
Activity
kvinwang commentedon Jun 29, 2026
Opened a meta-dstack fix: Dstack-TEE/meta-dstack#76
Root cause confirmed: after the Yocto/meta-openembedded upgrade, chrony's NTS support became gated by
PACKAGECONFIG[nts] = ",--disable-nts,gnutls". Our bbappend only addedgnutlstoDEPENDS, but did not enablents, so bitbake passed--disable-ntsandchronydwas built with-NTS.The PR explicitly adds:
Local check now shows
PACKAGECONFIGincludesntsandPACKAGECONFIG_CONFARGSno longer contains--disable-nts.h4x3rotab commentedon Jun 30, 2026
Maintainer triage update: this remains open intentionally and is listed in the security roadmap/hardening table: https://github.com/Dstack-TEE/dstack/blob/master/docs/security/public-security-reports.md#related-security-roadmap-and-hardening
Disposition: security feature bug. The fix landed in Dstack-TEE/meta-dstack#76. Keep this issue open until the dstack-side release or guest image consumption path is validated.
build(kms): pin merged Helios fork and require an NTS-capable guest