Skip to content

Comments

chore: replace cvm-reverse-proxy with attested-tls-proxy#98

Open
MoeMahhouk wants to merge 2 commits intomainfrom
moe/replace-atls-proxy
Open

chore: replace cvm-reverse-proxy with attested-tls-proxy#98
MoeMahhouk wants to merge 2 commits intomainfrom
moe/replace-atls-proxy

Conversation

@MoeMahhouk
Copy link
Member

@MoeMahhouk MoeMahhouk commented Feb 19, 2026

Summary

  • Replace cvm-reverse-proxy with attested-tls-proxy for serving TDX attestation in bob images
  • Install attested-tls-proxy v1.1.1 from pre-built .deb (with sha256 verification) instead of building cvm-reverse-proxy from source
  • Uses self-signed TLS mode (no cert/key paths), which provides the same security model as cvm-reverse-proxy (attestation only, no cert auth)
  • Port 8745 unchanged

Test plan

Local QEMU testing (no TDX, attestation type none):

Inside the VM, the server runs via systemd with these flags:
attested-tls-proxy server
--listen-addr 0.0.0.0:8745
--server-attestation-type auto
--allowed-remote-attestation-type none
127.0.0.1:5001

On the host, start the client:
attested-tls-proxy client
--listen-addr 127.0.0.1:9090
--allowed-remote-attestation-type none
--allow-self-signed
localhost:8745

Then fetch pubkeys through the full chain:
curl http://localhost:9090/pubkey

Production testing (Azure/GCP TDX VM, attestation type auto):

Server runs via systemd with --server-attestation-type auto (detects TDX hardware). On the client machine:
attested-tls-proxy client
--listen-addr 127.0.0.1:9090
--allowed-remote-attestation-type none
--allow-self-signed
<VM_IP>:8745

curl http://localhost:9090/pubkey

Copy link
Contributor

@ameba23 ameba23 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great.

One question - do we need to worry about the service needing access to /sys/kernel/config/tsm/report for DCAP attestation? Im not sure whether cvm-reverse-proxy needed this, but attested-tls-proxy definitely does on GCP.

The buildernet service explicitly adds it as a read-write path, presumably because otherwise the service could not access it:

ProtectSystem=strict
ProtectHome=yes
AmbientCapabilities=CAP_DAC_OVERRIDE
ReadWritePaths=/sys/kernel/config/tsm/report

@MoeMahhouk MoeMahhouk force-pushed the moe/replace-atls-proxy branch from d7b7d72 to 645965b Compare February 19, 2026 10:41
@MoeMahhouk
Copy link
Member Author

MoeMahhouk commented Feb 19, 2026

Looks great.

One question - do we need to worry about the service needing access to /sys/kernel/config/tsm/report for DCAP attestation? Im not sure whether cvm-reverse-proxy needed this, but attested-tls-proxy definitely does on GCP.

The buildernet service explicitly adds it as a read-write path, presumably because otherwise the service could not access it:

ProtectSystem=strict
ProtectHome=yes
AmbientCapabilities=CAP_DAC_OVERRIDE
ReadWritePaths=/sys/kernel/config/tsm/report

Good question!
I believe in Buildernet it was security hardened because it is not running as root but unprivileged dynamic user and mounting the filesystem as read-only. We could probably try to do similar enhancement here and test with it too.

Edit:
I'd recommend doing this hardening on another PR because this would require adding cloud-specific drop-in directories for both GCP and Azure profiles and testing each combination (L1<>gcp, l1<>azure, l2<>gcp) of them separately.

This PR, is just a drop-in replacement to cvm-reverse-proxy service which wasnt hardened before either.

Created an issue for it here #99 to track it

@MoeMahhouk MoeMahhouk marked this pull request as ready for review February 19, 2026 14:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants