flashbots / flashbots/attested-tls

azure: TCTI is hardcoded to the raw /dev/tpm0 device

Open
#72 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
5
Forks
3
Avg merge
4d 1h
Merged PRs (30d)
8

Description

`crates/attestation/src/azure/nv_index.rs` builds its TSS context with the
hardcoded default TCTI:

```rust
let conf: TctiNameConf = TctiNameConf::Device(DeviceConfig::default());
```

`DeviceConfig::default()` is the raw `/dev/tpm0` device, which the kernel
hands to one client at a time: any other TPM user on the machine
(tpm2-tools, systemd, a second evidence-generating process) makes context
creation fail with a device-busy error, and vice versa. The kernel's TPM
resource manager (`/dev/tpmrm0`) multiplexes clients, but there is
currently no way to select it.

Proposal: resolve the TCTI via `TctiNameConf::from_environment_variable()`
(which honors the conventional `TPM2TOOLS_TCTI` / `TCTI` variables, e.g.
`device:/dev/tpmrm0`) and keep the current default as fallback — no
behavior change unless the variable is set.

Note the azure evidence path also reaches the same hardcoded pattern
upstream through `az_tdx_vtpm::vtpm` (az-cvm-vtpm `src/vtpm/mod.rs`), so
fully honoring the variable needs the matching upstream change too — filed
as https://github.com/kinvolk/azure-cvm-tooling/issues/92.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in crates/attestation/src/azure/nv_index.rs at the hardcoded TctiNameConf::Device(DeviceConfig::default()) call, then trace the Azure evidence path through az_tdx_vtpm::vtpm and az-cvm-vtpm src/vtpm/mod.rs. Review the linked azure-cvm-tooling issue for the upstream change. Done means the conventional TCTI environment variable is honored while the existing device default remains the fallback across the Azure path.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.