From 334e37aac14be89efd7114a4ffc036cb4ed5c703 Mon Sep 17 00:00:00 2001 From: vbalain Date: Tue, 17 Feb 2026 07:37:05 +0000 Subject: [PATCH 1/3] Allow multiple boot attempts in event log extract. This change introduces support for the "Returning from EFI Application from Boot Option" event, which indicates a failed boot attempt. Seeing this event resets the state, allowing for subsequent "Calling EFI Application from Boot Option" events. This is necessary for hardware that may attempt to boot from multiple devices. Additionally, a separator event is now required to be preceded by at least one "Calling EFI Application" event. Referenced from Section 10.4.4 EV_EFI_ACTION Event Types from TCG doc- https://trustedcomputinggroup.org/wp-content/uploads/TCG-PC-Client-PFP-Version-1.06-Revision-49_31July2023.pdf --- extract/extract.go | 29 +++++++++++++++++++++++++---- extract/extract_test.go | 20 ++++++++++++++++++++ tcg/events.go | 1 + tpmeventlog/replay_test.go | 2 +- 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/extract/extract.go b/extract/extract.go index 5e48555..b0fbae6 100644 --- a/extract/extract.go +++ b/extract/extract.go @@ -358,6 +358,10 @@ func EfiState(hash crypto.Hash, events []tcg.Event, registerCfg registerConfig, hasher.Write([]byte(tcg.CallingEFIApplication)) callingEFIAppDigest := hasher.Sum(nil) + hasher.Reset() + hasher.Write([]byte(tcg.ReturningFromEFIApplication)) + returningFromEFIAppDigest := hasher.Sum(nil) + hasher.Reset() hasher.Write([]byte(tcg.ExitBootServicesInvocation)) exitBootSvcDigest := hasher.Sum(nil) @@ -387,14 +391,28 @@ func EfiState(hash crypto.Hash, events []tcg.Event, registerCfg registerConfig, if !event.DigestVerified() { return nil, fmt.Errorf("unverified CallingEFIApp digest for %s%d", registerCfg.Name, index) } - // We don't support calling more than one boot device. + // Multiple boot attempts are supported now since hardware (like CA4) can consider local + // SSDs as boot options. Thus, firmware events may replay multiple times and there's a need + // to reset the seenCallingEfiApp flag when returning from EFI application. But, there + // shouldn't be multiple successful boot attempts, so we return an error if we see a second + // CallingEFIApp event without a ReturningFromEFIApp event in between. + // Referenced from Section 10.4.4 EV_EFI_ACTION Event Types from TCG doc - + // https://trustedcomputinggroup.org/wp-content/uploads/TCG-PC-Client-PFP-Version-1.06-Revision-49_31July2023.pdf if seenCallingEfiApp { return nil, fmt.Errorf("found duplicate CallingEFIApp event in %s%d", registerCfg.Name, index) } - if seenSeparator4 { - return nil, fmt.Errorf("found CallingEFIApp event in %s%d after separator event", registerCfg.Name, index) - } seenCallingEfiApp = true + } else if bytes.Equal(returningFromEFIAppDigest, event.ReplayedDigest()) { + if evtType != tcg.EFIAction { + return nil, fmt.Errorf("%s%d contains ReturningFromEFIApp event but non EFIAction type: %d", + registerCfg.Name, index, evtType) + } + if !event.DigestVerified() { + return nil, fmt.Errorf("unverified ReturningFromEFIApp digest for %s%d", registerCfg.Name, index) + } + // If a boot fails, a "Returning from EFI Application" event is expected for a corresponding + // "Calling the EFI Application" event. So reset the seenCallingEfiApp flag on returning. + seenCallingEfiApp = false } if evtType == tcg.EFIBootServicesApplication { @@ -409,6 +427,9 @@ func EfiState(hash crypto.Hash, events []tcg.Event, registerCfg registerConfig, return nil, err } if isSeparator { + if !seenCallingEfiApp { + return nil, fmt.Errorf("found separator event in %s%d before CallingEFIApp event", registerCfg.Name, index) + } if seenSeparator4 { return nil, fmt.Errorf("found duplicate Separator event in %s%d", registerCfg.Name, registerCfg.EFIAppIdx) } diff --git a/extract/extract_test.go b/extract/extract_test.go index 8f3fcaf..4a7e245 100644 --- a/extract/extract_test.go +++ b/extract/extract_test.go @@ -503,6 +503,26 @@ func TestEfiState(t *testing.T) { AllowEFIAppBeforeCallingEvent: false, }, }, + { + name: "failed with valid boot attempt before Separator event in CCEL logs", + events: func() (crypto.Hash, []tcg.Event) { + hash, evts := crypto.SHA384, getCCELEvents(t) + var failedEvts []tcg.Event + for _, e := range evts { + if bytes.Equal(e.RawData(), []byte(tcg.CallingEFIApplication)) { + continue + } + failedEvts = append(failedEvts, e) + } + return hash, failedEvts + }, + registserConfig: RTMRRegisterConfig, + wantPass: false, + wantEfiState: nil, + opts: Opts{ + AllowEFIAppBeforeCallingEvent: true, + }, + }, } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { diff --git a/tcg/events.go b/tcg/events.go index abe41e6..d4a88d8 100644 --- a/tcg/events.go +++ b/tcg/events.go @@ -225,6 +225,7 @@ const ( // Measured when Boot Manager attempts to execute code from a Boot Option. CallingEFIApplication string = "Calling EFI Application from Boot Option" ExitBootServicesInvocation string = "Exit Boot Services Invocation" + ReturningFromEFIApplication string = "Returning from EFI Application from Boot Option" ) // EFIDeviceType describes the type of a device specified by a device path. diff --git a/tpmeventlog/replay_test.go b/tpmeventlog/replay_test.go index b241aad..3fee08d 100644 --- a/tpmeventlog/replay_test.go +++ b/tpmeventlog/replay_test.go @@ -596,7 +596,7 @@ func TestParseEventLogs(t *testing.T) { {Ubuntu2104NoSecureBootGCE, "Ubuntu2104NoSecureBootGCE", extract.Opts{Loader: extract.GRUB}, []string{sbatErrorStr}}, {Ubuntu2404AmdSevSnp, "Ubuntu2404AmdSevSnp", extract.Opts{Loader: extract.GRUB}, nil}, // This event log has a SecureBoot variable length of 0. - {ArchLinuxWorkstation, "ArchLinuxWorkstation", extract.Opts{Loader: extract.UnsupportedLoader, AllowEFIAppBeforeCallingEvent: true, AllowEmptySBVar: true}, nil}, + {ArchLinuxWorkstation, "ArchLinuxWorkstation", extract.Opts{Loader: extract.UnsupportedLoader, AllowEFIAppBeforeCallingEvent: true, AllowEmptySBVar: true}, []string{"found separator event in PCR4 before CallingEFIApp event"}}, {COS85AmdSev, "COS85AmdSev", extract.Opts{Loader: extract.GRUB}, nil}, {COS93AmdSev, "COS93AmdSev", extract.Opts{Loader: extract.GRUB}, nil}, {COS101AmdSev, "COS101AmdSev", extract.Opts{Loader: extract.GRUB}, nil}, From 5e74d5e69160d770fe4d4e374bbddeeecc8e73a1 Mon Sep 17 00:00:00 2001 From: vbalain Date: Wed, 18 Feb 2026 05:42:52 +0000 Subject: [PATCH 2/3] Fix lint error --- tcg/events.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tcg/events.go b/tcg/events.go index d4a88d8..f7fd1e5 100644 --- a/tcg/events.go +++ b/tcg/events.go @@ -223,8 +223,8 @@ func UntrustedParseEventType(et uint32) (EventType, error) { // Table 17 EV_EFI_ACTION Strings. const ( // Measured when Boot Manager attempts to execute code from a Boot Option. - CallingEFIApplication string = "Calling EFI Application from Boot Option" - ExitBootServicesInvocation string = "Exit Boot Services Invocation" + CallingEFIApplication string = "Calling EFI Application from Boot Option" + ExitBootServicesInvocation string = "Exit Boot Services Invocation" ReturningFromEFIApplication string = "Returning from EFI Application from Boot Option" ) From 3872b67a3356c29d19670caa2e165d4d811a023f Mon Sep 17 00:00:00 2001 From: vbalain Date: Fri, 20 Feb 2026 09:01:00 +0000 Subject: [PATCH 3/3] Add unit tests with actual event logs of multiple boot attempts for TDX RTMR and TPM PCR. --- extract/extract_test.go | 106 +++++++++++++++--- testdata/eventlog_data.go | 2 + .../eventlogs/ccel/ubuntu-2404-intel-tdx.bin | Bin 0 -> 262144 bytes .../eventlogs/tpm/ubuntu-2404-intel-tdx.bin | Bin 0 -> 60118 bytes 4 files changed, 94 insertions(+), 14 deletions(-) create mode 100644 testdata/eventlogs/ccel/ubuntu-2404-intel-tdx.bin create mode 100644 testdata/eventlogs/tpm/ubuntu-2404-intel-tdx.bin diff --git a/extract/extract_test.go b/extract/extract_test.go index 4a7e245..266331b 100644 --- a/extract/extract_test.go +++ b/extract/extract_test.go @@ -148,14 +148,22 @@ func TestExtractFirmwareLogStateRTMR(t *testing.T) { } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - evts := getCCELEvents(t) - tc.mutate(evts) - fs, err := FirmwareLogState(evts, crypto.SHA384, RTMRRegisterConfig, Opts{Loader: GRUB}) - if (err != nil) != tc.expectErr { - t.Errorf("FirmwareLogState(%v) = got %v, wantErr: %v", tc.name, err, tc.expectErr) + eventGetters := map[string]func(*testing.T) []tcg.Event{ + "singleBoot": getCCELEvents, + "multipleBoot": getCCELEventsWithMultipleBootAttempts, } - if fs.LogType != pb.LogType_LOG_TYPE_CC { - t.Errorf("FirmwareLogState(%v) = got LogType %v, want LogType: %v", tc.name, fs.LogType, pb.LogType_LOG_TYPE_CC) + for name, getEvents := range eventGetters { + t.Run(name, func(t *testing.T) { + evts := getEvents(t) + tc.mutate(evts) + fs, err := FirmwareLogState(evts, crypto.SHA384, RTMRRegisterConfig, Opts{Loader: GRUB}) + if (err != nil) != tc.expectErr { + t.Errorf("FirmwareLogState() = got %v, wantErr: %v", err, tc.expectErr) + } + if err == nil && fs.LogType != pb.LogType_LOG_TYPE_CC { + t.Errorf("FirmwareLogState() = got LogType %v, want LogType: %v", fs.LogType, pb.LogType_LOG_TYPE_CC) + } + }) } }) } @@ -188,6 +196,28 @@ func getCCELEvents(t *testing.T) []tcg.Event { return events } +func getCCELEventsWithMultipleBootAttempts(t *testing.T) []tcg.Event { + elBytes, err := os.ReadFile("../testdata/eventlogs/ccel/ubuntu-2404-intel-tdx.bin") + if err != nil { + t.Fatal(err) + } + rtmr0 := []byte(">/\xb8\xad]\xe9\xb9\xe6m\x0f\xe7:T\xc0)\x13\x0e\xb9\xc0\xae\xf0\x97\x10\xe3\x18\xc9w\xcc\x13\xc7\x186\x8cJ\xdc\x02\xb7K\xc9\xcfL\xf8\x11\x8e\xfe\x1ao\x93") + rtmr1 := []byte("\x952\x8d\xff\x96\xc9\xd6\xc5T\xa4\x01\x98eX|\xf1~\xccw\xffH\xa9}\xec^R\xe0a\xe58\xbd\x13\xc0\xb7\xf2 ~\xc4\x06|\xb6m\xbe:\x9c\x99\xda'") + rtmr2 := []byte("\x81\x93\xfdM\xa6-`\xabe\x97\xfc*S˨z\x85\xa9\xa5\xf0\x97\x9f\xd5\xcag\r\x15\xa0x \xe3/\xf6M\xa4i\x9a\xe8+O*`\x05\xaau\xc4x\xd5") + rtmr3 := []byte("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00") + mrs := []register.MR{ + register.RTMR{Index: 0, Digest: rtmr0}, + register.RTMR{Index: 1, Digest: rtmr1}, + register.RTMR{Index: 2, Digest: rtmr2}, + register.RTMR{Index: 3, Digest: rtmr3}, + } + events, err := tcg.ParseAndReplay(elBytes, mrs, tcg.ParseOpts{AllowPadding: true}) + if err != nil { + t.Fatal(err) + } + return events +} + func TestExtractFirmwareLogStateTPM(t *testing.T) { tests := []struct { name string @@ -303,14 +333,22 @@ func TestExtractFirmwareLogStateTPM(t *testing.T) { } for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - hash, evts := getTPMELEvents(t) - tc.mutate(evts) - fs, err := FirmwareLogState(evts, hash, TPMRegisterConfig, Opts{Loader: GRUB}) - if (err != nil) != tc.expectErr { - t.Errorf("ExtractFirmwareLogState(%v) = got %v, wantErr: %v", tc.name, err, tc.expectErr) + eventGetters := map[string]func(*testing.T) (crypto.Hash, []tcg.Event){ + "singleBoot": getTPMELEvents, + "multipleBoot": getTPMELEventsWithMultipleBootAttempts, } - if fs.LogType != pb.LogType_LOG_TYPE_TCG2 { - t.Errorf("FirmwareLogState(%v) = got LogType %v, want LogType: %v", tc.name, fs.LogType, pb.LogType_LOG_TYPE_TCG2) + for name, getEvents := range eventGetters { + t.Run(name, func(t *testing.T) { + hash, evts := getEvents(t) + tc.mutate(evts) + fs, err := FirmwareLogState(evts, hash, TPMRegisterConfig, Opts{Loader: GRUB}) + if (err != nil) != tc.expectErr { + t.Errorf("FirmwareLogState() = got %v, wantErr: %v", err, tc.expectErr) + } + if err == nil && fs.LogType != pb.LogType_LOG_TYPE_TCG2 { + t.Errorf("FirmwareLogState() = got LogType %v, want LogType: %v", fs.LogType, pb.LogType_LOG_TYPE_TCG2) + } + }) } }) } @@ -565,6 +603,46 @@ func getTPMELEvents(t *testing.T) (crypto.Hash, []tcg.Event) { return cryptoHash, events } +func getTPMELEventsWithMultipleBootAttempts(t *testing.T) (crypto.Hash, []tcg.Event) { + log := testdata.Ubuntu2404IntelTdxEventLog + bank := testutil.MakePCRBank(pb.HashAlgo_SHA384, map[uint32][]byte{ + 0: decodeHex("592b3f42ec556a9c093f201124cc7313fdaa4ce40ae1602e14d51f18fbfc480d6a1e196d1c52ad919328410272dc7222"), + 1: decodeHex("ba1ac69c213175dc72db1493bd5bdfa4799028fe5d5c2bb41ddccc6affa50ba01f189d4639a77afbedd6dd6aff1af3b4"), + 2: decodeHex("3d29b768ef16e5d7b775ff0397d9d1d22ec83078d1a26ae103de671b6906f0688d713844db3b84783235246e1b564257"), + 3: decodeHex("518923b0f955d08da077c96aaba522b9decede61c599cea6c41889cfbea4ae4d50529d96fe4d1afdafb65e7f95bf23c4"), + 4: decodeHex("1213ef15e54d13181724275c16f22f89f866ba2c5b3d24a99a79e4962af4126a8b220c22429fde6e747a4bc4378b556d"), + 5: decodeHex("c50b529497c7f441ea47305587d6ce83e2e31f7b4fab6c13dc0b0c3c900e1d0caf0768321100927862df142bf0465ee4"), + 6: decodeHex("518923b0f955d08da077c96aaba522b9decede61c599cea6c41889cfbea4ae4d50529d96fe4d1afdafb65e7f95bf23c4"), + 7: decodeHex("3ee5663e4119df40192276ff9749a3cd339c489ebc2ab6fd65b11b12a4845d82f4a93bca684126f382feed3324fca561"), + 8: decodeHex("58b0d4e1a9d3cb21342f0574312c49748f30d30ede290465e79d5238cf76f60d0c89054c5524e7cb1504555913f31efb"), + 9: decodeHex("8d799e8eb5bdf56009f435adb4238158951e9cf95fd05a9c1bfd3c60eecab5ea0c9d63a2c90ec20b30435f894e8d33db"), + 10: decodeHex("fce98e2810c72187e60a9f83f4e05309a6395a72fb50a366602551227973df5df0c6ef42d9158d94719f4d3f6fdc5be3"), + 11: decodeHex("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + 12: decodeHex("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + 13: decodeHex("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + 14: decodeHex("937437d07298010015f4598395c9f8dc202ef36e0be3897bba89874bf612b5da092beadfe37f79714a60193819e384ad"), + 15: decodeHex("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + 16: decodeHex("000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"), + 17: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 18: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 19: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 20: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 21: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 22: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + 23: decodeHex("ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), + }) + cryptoHash, err := bank.CryptoHash() + if err != nil { + t.Fatal(err) + } + events, err := tcg.ParseAndReplay(log, bank.MRs(), tcg.ParseOpts{}) + if err != nil { + t.Fatal(err) + + } + return cryptoHash, events +} + func decodeHex(hexStr string) []byte { bytes, err := hex.DecodeString(hexStr) if err != nil { diff --git a/testdata/eventlog_data.go b/testdata/eventlog_data.go index f1f0b6b..6726180 100644 --- a/testdata/eventlog_data.go +++ b/testdata/eventlog_data.go @@ -45,6 +45,8 @@ var ( Cos121AmdSevEventLog []byte //go:embed eventlogs/tpm/gdc-host.bin GdcHost []byte + //go:embed eventlogs/tpm/ubuntu-2404-intel-tdx.bin + Ubuntu2404IntelTdxEventLog []byte ) // Kernel command lines from event logs. diff --git a/testdata/eventlogs/ccel/ubuntu-2404-intel-tdx.bin b/testdata/eventlogs/ccel/ubuntu-2404-intel-tdx.bin new file mode 100644 index 0000000000000000000000000000000000000000..451f726d818125b333630df2fdc4bacaab4a9b99 GIT binary patch literal 262144 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 z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY z0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4ea zAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd& z00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00JNY0w4eaAOHd&00KV= F{6CBxFlPV& literal 0 HcmV?d00001 diff --git a/testdata/eventlogs/tpm/ubuntu-2404-intel-tdx.bin b/testdata/eventlogs/tpm/ubuntu-2404-intel-tdx.bin new file mode 100644 index 0000000000000000000000000000000000000000..f54df437fab25032e8877ff38ca5c504f8f06a98 GIT binary patch literal 60118 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%0D;TVheNxox4>BCgP{-5icF|AntD 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 V>-%lA!4Q#eF+$oN<{+(Z{|~TB>