github.com/google/go-tpm
Activity
- Latest release
- 8mo ago
- Total releases
- 17
- Cadence
- ~3 months
- Last 12 months
- 2
Reach
- Stars
- —
Details
- First release
- Jan 15, 2019
| Version | Released | |
|---|---|---|
v0.9.8
patch
|
v0.9.8
patch
Dependencies (3)
|
|
v0.9.7
patch
|
v0.9.7
patch
Dependencies (3)
|
|
v0.9.6
patch
|
v0.9.6
patch
Dependencies (3)
|
|
v0.9.5
patch
|
v0.9.5
patch
Dependencies (3)
|
|
v0.9.4
patch
|
v0.9.4
patch
Dependencies (3)
|
|
v0.9.3
patch
|
v0.9.3
patch
Dependencies (3)
|
|
v0.9.2
patch
|
v0.9.2
patch
Dependencies (3)
|
|
v0.9.1
patch
|
v0.9.1
patch
Dependencies (3)
|
|
v0.9.0
minor
|
v0.9.0
minor
Dependencies (3)
|
|
v0.3.3
patch
|
v0.3.3
patch
Dependencies (2)
|
|
v0.3.2
patch
|
v0.3.2
patch
Dependencies (3)
|
|
v0.3.1
patch
|
v0.3.1
patch
Dependencies (3)
|
|
v0.3.0
minor
|
v0.3.0
minor
Dependencies (2)
|
|
v0.2.0
minor
1 CVE
CVE-2020-8918
GHSA-5x29-3hr9-6wpw
GO-2021-0095
Feb 11, 2022
TPM 1.2 key authorization values vulnerable to TPM transport eavesdropper in go-tpm
7.1
/ 10
High
Local
Low
Low
None
Unchanged
High
High
None
ImpactTPM 2.0 users are unaffected by this issue. An adversary eavesdropping on the TPM 1.2 transport path can calculate The TPM 1.2 CreateWrapKey command accepts two secrets: PatchesFixed in go-tpm version 0.3.0. Workarounds
DetailsTPM 1.2 uses a protocol called ADIP (Authorization Data Insertion Protocol) to encrypt authorization values over-the-wire for newly created objects. This prevents a bus-snooping attack like those publicized by TPM Genie. TPM 2.0 makes this optional (the way to do it is with parameter-encryption sessions). You can read more about ADIP in section 13.4 of Part 1: Design Principles in the latest TPM 1.2 specification. Normally, ADIP consists of the following steps:
When commands require one ADIP-encrypted auth value, the nonce is the last nonceEven (last nonce from the TPM). When commands require two ADIP-encrypted auth values, the nonce for the first auth value is still nonceEven, and the nonce for the second auth value is the last nonceOdd, which is the one being provided by the caller along with the current command on the session. The reason for this is that you wouldn't want an adversary to be able to XOR the two encrypted auth values together and come up with (auth 1 XOR key) XOR (auth 2 XOR key) where the "one-time" pad key is used twice and cancels itself out. Here are the commands that take one authorization value by ADIP:
Here are the commands that take two authorization values by ADIP:
The migrationAuth value is never used if the key does not have the https://github.com/google/go-tpm/blob/16766ac4521425bd02ad23868fbdf24749268669/tpm/tpm.go#L1322-L1329 Here we see that both usageAuth and migrationAuth are encrypted by the same XOR key. This is the correct key (i.e., it is based on nonceEven) for usageAuth, but not migrationAuth. This means 2 things: First: migrationAuth is being set to some value that is effectively unrelated to migrationAuth as passed by the caller. Again, this is not interesting to all current callers (given that there is no way for them to pass Second, and much more importantly: a user of go-tpm is vulnerable to the following attack by a passive bus-snooping adversary (CVE-2020-8918)
Fixed in
0.3.0
References
Updated Jul 08, 2026 · Source: OSV.dev |
v0.2.0
minor
Dependencies (1)
|
|
v0.1.1
patch
1 CVE
CVE-2020-8918
GHSA-5x29-3hr9-6wpw
GO-2021-0095
Feb 11, 2022
TPM 1.2 key authorization values vulnerable to TPM transport eavesdropper in go-tpm
7.1
/ 10
High
Local
Low
Low
None
Unchanged
High
High
None
ImpactTPM 2.0 users are unaffected by this issue. An adversary eavesdropping on the TPM 1.2 transport path can calculate The TPM 1.2 CreateWrapKey command accepts two secrets: PatchesFixed in go-tpm version 0.3.0. Workarounds
DetailsTPM 1.2 uses a protocol called ADIP (Authorization Data Insertion Protocol) to encrypt authorization values over-the-wire for newly created objects. This prevents a bus-snooping attack like those publicized by TPM Genie. TPM 2.0 makes this optional (the way to do it is with parameter-encryption sessions). You can read more about ADIP in section 13.4 of Part 1: Design Principles in the latest TPM 1.2 specification. Normally, ADIP consists of the following steps:
When commands require one ADIP-encrypted auth value, the nonce is the last nonceEven (last nonce from the TPM). When commands require two ADIP-encrypted auth values, the nonce for the first auth value is still nonceEven, and the nonce for the second auth value is the last nonceOdd, which is the one being provided by the caller along with the current command on the session. The reason for this is that you wouldn't want an adversary to be able to XOR the two encrypted auth values together and come up with (auth 1 XOR key) XOR (auth 2 XOR key) where the "one-time" pad key is used twice and cancels itself out. Here are the commands that take one authorization value by ADIP:
Here are the commands that take two authorization values by ADIP:
The migrationAuth value is never used if the key does not have the https://github.com/google/go-tpm/blob/16766ac4521425bd02ad23868fbdf24749268669/tpm/tpm.go#L1322-L1329 Here we see that both usageAuth and migrationAuth are encrypted by the same XOR key. This is the correct key (i.e., it is based on nonceEven) for usageAuth, but not migrationAuth. This means 2 things: First: migrationAuth is being set to some value that is effectively unrelated to migrationAuth as passed by the caller. Again, this is not interesting to all current callers (given that there is no way for them to pass Second, and much more importantly: a user of go-tpm is vulnerable to the following attack by a passive bus-snooping adversary (CVE-2020-8918)
Fixed in
0.3.0
References
Updated Jul 08, 2026 · Source: OSV.dev |
v0.1.1
patch
|
|
v0.1.0
minor
1 CVE
CVE-2020-8918
GHSA-5x29-3hr9-6wpw
GO-2021-0095
Feb 11, 2022
TPM 1.2 key authorization values vulnerable to TPM transport eavesdropper in go-tpm
7.1
/ 10
High
Local
Low
Low
None
Unchanged
High
High
None
ImpactTPM 2.0 users are unaffected by this issue. An adversary eavesdropping on the TPM 1.2 transport path can calculate The TPM 1.2 CreateWrapKey command accepts two secrets: PatchesFixed in go-tpm version 0.3.0. Workarounds
DetailsTPM 1.2 uses a protocol called ADIP (Authorization Data Insertion Protocol) to encrypt authorization values over-the-wire for newly created objects. This prevents a bus-snooping attack like those publicized by TPM Genie. TPM 2.0 makes this optional (the way to do it is with parameter-encryption sessions). You can read more about ADIP in section 13.4 of Part 1: Design Principles in the latest TPM 1.2 specification. Normally, ADIP consists of the following steps:
When commands require one ADIP-encrypted auth value, the nonce is the last nonceEven (last nonce from the TPM). When commands require two ADIP-encrypted auth values, the nonce for the first auth value is still nonceEven, and the nonce for the second auth value is the last nonceOdd, which is the one being provided by the caller along with the current command on the session. The reason for this is that you wouldn't want an adversary to be able to XOR the two encrypted auth values together and come up with (auth 1 XOR key) XOR (auth 2 XOR key) where the "one-time" pad key is used twice and cancels itself out. Here are the commands that take one authorization value by ADIP:
Here are the commands that take two authorization values by ADIP:
The migrationAuth value is never used if the key does not have the https://github.com/google/go-tpm/blob/16766ac4521425bd02ad23868fbdf24749268669/tpm/tpm.go#L1322-L1329 Here we see that both usageAuth and migrationAuth are encrypted by the same XOR key. This is the correct key (i.e., it is based on nonceEven) for usageAuth, but not migrationAuth. This means 2 things: First: migrationAuth is being set to some value that is effectively unrelated to migrationAuth as passed by the caller. Again, this is not interesting to all current callers (given that there is no way for them to pass Second, and much more importantly: a user of go-tpm is vulnerable to the following attack by a passive bus-snooping adversary (CVE-2020-8918)
Fixed in
0.3.0
References
Updated Jul 08, 2026 · Source: OSV.dev |
v0.1.0
minor
|
|
v0.0.1
initial
1 CVE
CVE-2020-8918
GHSA-5x29-3hr9-6wpw
GO-2021-0095
Feb 11, 2022
TPM 1.2 key authorization values vulnerable to TPM transport eavesdropper in go-tpm
7.1
/ 10
High
Local
Low
Low
None
Unchanged
High
High
None
ImpactTPM 2.0 users are unaffected by this issue. An adversary eavesdropping on the TPM 1.2 transport path can calculate The TPM 1.2 CreateWrapKey command accepts two secrets: PatchesFixed in go-tpm version 0.3.0. Workarounds
DetailsTPM 1.2 uses a protocol called ADIP (Authorization Data Insertion Protocol) to encrypt authorization values over-the-wire for newly created objects. This prevents a bus-snooping attack like those publicized by TPM Genie. TPM 2.0 makes this optional (the way to do it is with parameter-encryption sessions). You can read more about ADIP in section 13.4 of Part 1: Design Principles in the latest TPM 1.2 specification. Normally, ADIP consists of the following steps:
When commands require one ADIP-encrypted auth value, the nonce is the last nonceEven (last nonce from the TPM). When commands require two ADIP-encrypted auth values, the nonce for the first auth value is still nonceEven, and the nonce for the second auth value is the last nonceOdd, which is the one being provided by the caller along with the current command on the session. The reason for this is that you wouldn't want an adversary to be able to XOR the two encrypted auth values together and come up with (auth 1 XOR key) XOR (auth 2 XOR key) where the "one-time" pad key is used twice and cancels itself out. Here are the commands that take one authorization value by ADIP:
Here are the commands that take two authorization values by ADIP:
The migrationAuth value is never used if the key does not have the https://github.com/google/go-tpm/blob/16766ac4521425bd02ad23868fbdf24749268669/tpm/tpm.go#L1322-L1329 Here we see that both usageAuth and migrationAuth are encrypted by the same XOR key. This is the correct key (i.e., it is based on nonceEven) for usageAuth, but not migrationAuth. This means 2 things: First: migrationAuth is being set to some value that is effectively unrelated to migrationAuth as passed by the caller. Again, this is not interesting to all current callers (given that there is no way for them to pass Second, and much more importantly: a user of go-tpm is vulnerable to the following attack by a passive bus-snooping adversary (CVE-2020-8918)
Fixed in
0.3.0
References
Updated Jul 08, 2026 · Source: OSV.dev |
v0.0.1
initial
|