Closed xaionaro closed 1 year ago
Deleting pkg/pcr (the deprecated code) and migrating all the depending code to pkg/bootflow (the new fancy code), instead.
pkg/pcr
pkg/bootflow
[xaionaro@void converged-security-suite]$ go run ./cmd/pcr0tool sum ~/firmware/TPM04.bin Log: 0. if FITPresent{} then SetFlow({if BPMPresent{} then SetFlow({SetActor(P..., ...}): Actions: 0. SetFlow({if BPMPresent{} then SetFlow({SetActor(P..., ...}) 1. if BPMPresent{} then SetFlow({SetActor(PCH{}), ...}): 2. SetFlow({SetActor(PCH{}), ...}): Actions: 0. SetFlow({SetActor(PCH{}), ...}) 3. SetActor(PCH{}): Actions: 0. SetActor(PCH{}) 4. VerifyACMType{FallbackFlow:types.Flow{Name:"IntelLegacyTXTDisabled", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc000025890)}}}: MeasuredData: 0. PCH <- BIOSImage:PhysMemMapper:[FFBC0000:FFC00000] (IntelFITFirst(SACM)) [intelactors.PCH] Actions: 0. SetPCHVerified(IntelFITFirst(SACM)) 5. SetActor(ACM{}): Actions: 0. SetActor(ACM{}) 6. InitTPMStruct{Locality:0x3, WithLog:true}: Actions: 0. TPMInit(3) 1. TPMEventLogAdd(PCR: 0, Algo: SHA1, Digest: 0x0x0000000000000000000000000000000000000000, EventData: 537461727475704C6F63616C6974790003) 2. TPMEventLogAdd(PCR: 0, Algo: SHA256, Digest: 0x0x0000000000000000000000000000000000000000000000000000000000000000, EventData: 537461727475704C6F63616C6974790003) 7. MeasureACMDate{}: MeasuredData: 0. TPM <- BIOSImage:PhysMemMapper:[FFBC0014:FFBC0018] (ACMDate) [intelactors.ACM] Actions: 0. TPMEvent(PCR: 0, DataSource: ACMDate, Type: EV_S_CRTM_CONTENTS (0x7), EventData: 41434D5F64617465) 8. 0x7: MeasuredData: 0. TPM <- BIOSImage:PhysMemMapper:[FFBB0160:FFBB0180,FFC00000:100000000] (IntelFITAll(BIOSStartupModuleEntry)) [intelactors.ACM] Actions: 0. TPMEvent(PCR: 0, DataSource: IntelFITAll(BIOSStartupModuleEntry), Type: EV_S_CRTM_CONTENTS (0x7), EventData: 42494F535F737461727475705F6D6F64756C65) 9. StaticStep{TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4))}: MeasuredData: 0. TPM <- RawBytes:[0:4] (Bytes{00000000}) [intelactors.ACM] Actions: 0. TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4)) 10. SetFlow({SetActor(Unknown{}), ...}): Actions: 0. SetFlow({SetActor(Unknown{}), ...}) 11. SetActor(Unknown{}): Actions: 0. SetActor(Unknown{}) 12. if IsOCPv0{} then SetFlow({SetActor(PEI{}), ...}): Actions: 0. SetFlow({SetActor(PEI{}), ...}) 13. SetActor(PEI{}): Actions: 0. SetActor(PEI{}) 14. unless TPMIsInited{} do InitTPMStruct{Locality:0x0, WithLog:false}: 15. StaticStep{TPMEvent(PCR: 0, DataSource: PCDVariable("FirmwareVendorVersion"), Type: EV_S_CRTM_VERSION (0x8))}: MeasuredData: 0. TPM <- RawBytes:[0:10] (PCDVariable("FirmwareVendorVersion")) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: PCDVariable("FirmwareVendorVersion"), Type: EV_S_CRTM_VERSION (0x8)) 16. if IsOCPv0{} then if ManifestPresent{} then MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67a40)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67c40)}} else MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67940)}} else if ManifestPresent{} then MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe679c0)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67a00)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67a80)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67ac0)}} else MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67b00)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67b40)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67b80)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67bc0)}}: MeasuredData: 0. TPM <- BIOSImage:PhysMemMapper:[FF110000:FFBAF000] (UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5)) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5), Type: EV_POST_CODE (0x1)) 17. StaticStep{TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4))}: MeasuredData: 0. TPM <- RawBytes:[0:4] (Bytes{00000000}) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4)) 18. SetFlow({SetActor(DXE{})}): Actions: 0. SetFlow({SetActor(DXE{})}) 19. SetActor(DXE{}): Actions: 0. SetActor(DXE{}) Executed TPM commands log: 0: TPMInit(3) 1: TPMEventLogAdd(0, SHA1, 0x0000000000000000000000000000000000000000, Type: EV_NO_ACTION (0x3), Data: 0x537461727475704C6F63616C6974790003) 2: TPMEventLogAdd(0, SHA256, 0x0000000000000000000000000000000000000000000000000000000000000000, Type: EV_NO_ACTION (0x3), Data: 0x537461727475704C6F63616C6974790003) 3: TPMExtend(0, SHA1, 0x2169DEB3F74D90BE85746E23C27DB948933E5A60) 4: TPMEventLogAdd(0, SHA1, 0x2169DEB3F74D90BE85746E23C27DB948933E5A60, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x41434D5F64617465) 5: TPMExtend(0, SHA256, 0x6E8BD2C5C88D0B35A79D19F53B6F5938762A0714DB16DF2FC2B0733C19BF961D) 6: TPMEventLogAdd(0, SHA256, 0x6E8BD2C5C88D0B35A79D19F53B6F5938762A0714DB16DF2FC2B0733C19BF961D, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x41434D5F64617465) 7: TPMExtend(0, SHA1, 0x2B987FEC9164E07DF8518462AC897569E3F119BC) 8: TPMEventLogAdd(0, SHA1, 0x2B987FEC9164E07DF8518462AC897569E3F119BC, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x42494F535F737461727475705F6D6F64756C65) 9: TPMExtend(0, SHA256, 0x336DE08E5748B91F573AD96C31CEDB600153F56AB5E5ABDBAAA81B31ACD34BD2) 10: TPMEventLogAdd(0, SHA256, 0x336DE08E5748B91F573AD96C31CEDB600153F56AB5E5ABDBAAA81B31ACD34BD2, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x42494F535F737461727475705F6D6F64756C65) 11: TPMExtend(0, SHA1, 0x9069CA78E7450A285173431B3E52C5C25299E473) 12: TPMEventLogAdd(0, SHA1, 0x9069CA78E7450A285173431B3E52C5C25299E473, Type: EV_SEPARATOR (0x4)) 13: TPMExtend(0, SHA256, 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119) 14: TPMEventLogAdd(0, SHA256, 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119, Type: EV_SEPARATOR (0x4)) 15: TPMExtend(0, SHA1, 0xC42FEDAD268200CB1D15F97841C344E79DAE3320) 16: TPMEventLogAdd(0, SHA1, 0xC42FEDAD268200CB1D15F97841C344E79DAE3320, Type: EV_S_CRTM_VERSION (0x8)) 17: TPMExtend(0, SHA256, 0xD4720B4009438213B803568017F903093F6BEA8AB47D283DB32B6EABEDBBF155) 18: TPMEventLogAdd(0, SHA256, 0xD4720B4009438213B803568017F903093F6BEA8AB47D283DB32B6EABEDBBF155, Type: EV_S_CRTM_VERSION (0x8)) 19: TPMExtend(0, SHA1, 0x4EA161953F21554A8F7F1953244FFF85CD7F2320) 20: TPMEventLogAdd(0, SHA1, 0x4EA161953F21554A8F7F1953244FFF85CD7F2320, Type: EV_POST_CODE (0x1)) 21: TPMExtend(0, SHA256, 0xC2FC59B06565CD4B3980FED4D898456D5CD4540804B2D6313969213677D48A2A) 22: TPMEventLogAdd(0, SHA256, 0xC2FC59B06565CD4B3980FED4D898456D5CD4540804B2D6313969213677D48A2A, Type: EV_POST_CODE (0x1)) 23: TPMExtend(0, SHA1, 0x9069CA78E7450A285173431B3E52C5C25299E473) 24: TPMEventLogAdd(0, SHA1, 0x9069CA78E7450A285173431B3E52C5C25299E473, Type: EV_SEPARATOR (0x4)) 25: TPMExtend(0, SHA256, 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119) 26: TPMEventLogAdd(0, SHA256, 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119, Type: EV_SEPARATOR (0x4)) Measured/protected data log: 0: PCH <- BIOSImage:PhysMemMapper:[FFBC0000:FFC00000] (IntelFITFirst(SACM)) [intelactors.PCH] 1: TPM <- BIOSImage:PhysMemMapper:[FFBC0014:FFBC0018] (ACMDate) [intelactors.ACM] 2: TPM <- BIOSImage:PhysMemMapper:[FFBB0160:FFBB0180,FFC00000:100000000] (IntelFITAll(BIOSStartupModuleEntry)) [intelactors.ACM] 3: TPM <- RawBytes:[0:4] (Bytes{00000000}) [intelactors.ACM] 4: TPM <- RawBytes:[0:10] (PCDVariable("FirmwareVendorVersion")) [actors.PEI] 5: TPM <- BIOSImage:PhysMemMapper:[FF110000:FFBAF000] (UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5)) [actors.PEI] 6: TPM <- RawBytes:[0:4] (Bytes{00000000}) [actors.PEI] TPM EventLog: 0: {PCR: 0, Alg: SHA1, Digest: 0x0000000000000000000000000000000000000000, Type: EV_NO_ACTION (0x3), Data: 0x537461727475704C6F63616C6974790003} 1: {PCR: 0, Alg: SHA256, Digest: 0x0000000000000000000000000000000000000000000000000000000000000000, Type: EV_NO_ACTION (0x3), Data: 0x537461727475704C6F63616C6974790003} 2: {PCR: 0, Alg: SHA1, Digest: 0x2169DEB3F74D90BE85746E23C27DB948933E5A60, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x41434D5F64617465} 3: {PCR: 0, Alg: SHA256, Digest: 0x6E8BD2C5C88D0B35A79D19F53B6F5938762A0714DB16DF2FC2B0733C19BF961D, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x41434D5F64617465} 4: {PCR: 0, Alg: SHA1, Digest: 0x2B987FEC9164E07DF8518462AC897569E3F119BC, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x42494F535F737461727475705F6D6F64756C65} 5: {PCR: 0, Alg: SHA256, Digest: 0x336DE08E5748B91F573AD96C31CEDB600153F56AB5E5ABDBAAA81B31ACD34BD2, Type: EV_S_CRTM_CONTENTS (0x7), Data: 0x42494F535F737461727475705F6D6F64756C65} 6: {PCR: 0, Alg: SHA1, Digest: 0x9069CA78E7450A285173431B3E52C5C25299E473, Type: EV_SEPARATOR (0x4)} 7: {PCR: 0, Alg: SHA256, Digest: 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119, Type: EV_SEPARATOR (0x4)} 8: {PCR: 0, Alg: SHA1, Digest: 0xC42FEDAD268200CB1D15F97841C344E79DAE3320, Type: EV_S_CRTM_VERSION (0x8)} 9: {PCR: 0, Alg: SHA256, Digest: 0xD4720B4009438213B803568017F903093F6BEA8AB47D283DB32B6EABEDBBF155, Type: EV_S_CRTM_VERSION (0x8)} 10: {PCR: 0, Alg: SHA1, Digest: 0x4EA161953F21554A8F7F1953244FFF85CD7F2320, Type: EV_POST_CODE (0x1)} 11: {PCR: 0, Alg: SHA256, Digest: 0xC2FC59B06565CD4B3980FED4D898456D5CD4540804B2D6313969213677D48A2A, Type: EV_POST_CODE (0x1)} 12: {PCR: 0, Alg: SHA1, Digest: 0x9069CA78E7450A285173431B3E52C5C25299E473, Type: EV_SEPARATOR (0x4)} 13: {PCR: 0, Alg: SHA256, Digest: 0xDF3F619804A92FDB4057192DC43DD748EA778ADC52BC498CE80524C014B81119, Type: EV_SEPARATOR (0x4)} Final PCR values: PCR[0]: SHA1:0x3E48AAC524365425430F7C7ADB2B4AA4362CA329 SHA256:0x7B2007D9E36EE7608AB6A3DEE0B8D7AA100C57F195B498B4EE7FFDEBC784465C PCR[1]: SHA1:0x0000000000000000000000000000000000000000 SHA256:0x0000000000000000000000000000000000000000000000000000000000000000
[xaionaro@void converged-security-suite]$ go run ./cmd/pcr0tool/ diff -registers ~/firmware/craterlake_dvt_Y35CLP01/registers.json ~/firmware/craterlake_dvt_Y35CLP01/Y35CLP01.bin ~/firmware/craterlake_dvt_Y35CLP01/Y35CLP01-corrupted-IBB.bin debugInfo: { "scanRanges": [ { "Offset": 4289200128, "Length": 262144 }, { "Offset": 4294584960, "Length": 869 }, { "Offset": 4294583680, "Length": 1173 }, { "Offset": 4293722112, "Length": 861568 }, { "Offset": 4294584896, "Length": 64 }, { "Offset": 4294585856, "Length": 381440 }, { "Offset": 4289200156, "Length": 2 }, { "Offset": 4289200640, "Length": 384 }, { "Offset": 4294585445, "Length": 384 }, { "Offset": 4294584469, "Length": 384 }, { "Offset": 4294583812, "Length": 20 }, { "Offset": 4289200156, "Length": 2 }, { "Offset": 4289200640, "Length": 384 }, { "Offset": 4294585445, "Length": 384 }, { "Offset": 4294584469, "Length": 384 }, { "Offset": 4294583776, "Length": 32 }, { "Offset": 4289921024, "Length": 393216 }, { "Offset": 4289462272, "Length": 458752 }, { "Offset": 4288409600, "Length": 262144 }, { "Offset": 4279304192, "Length": 6746112 } ] } offset: 0xfffa1dac; bytes differs: 1; hamming distance is: 3, for non-(0x00|0xff): 3. related measurements: VerifyIBBType{FallbackFlow:types.Flow{Name:"IntelCBnTFailure", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc0000b1860)}}}:BIOSImage:PhysMemMapper:[FFED0000:FFFA2580,FFFA2A40:FFFA2A80,FFFA2E00:100000000] 0xFFFA1DA0: A6 9A 54 01 03 A5 C0 71 0xFFFA1DA8: 01 00 00 00 64|55 3A 5C 79 0xFFFA1DB0: 76 33 35 5C 79 76 33 35 Total: changed bytes: 1 (in 1 ranges) hamming distance: 3 hamming distance for non-(0x00|0xff) bytes: 3 The earliest offset of a different measured byte: 0xFFFA1DAC The earliest offset of a different measured byte in the image: 0x03FA1DAC
[xaionaro@void converged-security-suite]$ go run ./cmd/pcr0tool validate_security ~/firmware/TPM04.bin Actors: * PCH{}: <nil> * ACM{}: BIOSImage:PhysMemMapper:[FFBC0000:FFC00000] * Unknown{}: <nil> * PEI{}: BIOSImage:PhysMemMapper:[FFC00158:FFC01EBA,FFC01EC0:FFC0F61E,FFC0F620:FFC1340E,FFC13410:FFC16D3A,FFC16D40:FFC180BA,FFC180C0:FFC1BDD6,FFC1BDD8:FFC20102,FFC20108:FFD1F6C6,FFD1F6C8:FFD1FF22,FFD1FF28:FFD23446,FFD23448:FFD2451A,FFD24520:FFD38D46,FFD38D48:FFD57ECA,FFD57ED0:FFD5C28A,FFD5C290:FFD60942,FFD60948:FFD65682,FFD65688:FFD68A5E,FFD68A60:FFD69F3E,FFD69F40:FFD6BF92,FFD6BF98:FFD6E15A,FFD6E160:FFD70C02,FFD70C08:FFD72DD2,FFD72DD8:FFD7815E,FFD78160:FFD8F626,FFD8F628:FFD9FE1A,FFD9FE20:FFDA42FA,FFDA4300:FFDA6752,FFDA6758:FFDAAE8E,FFDAAE90:FFDAF286,FFDAF288:FFDBBAFE,FFDBBB00:FFDBCDA2,FFDBCDA8:FFDCC68A,FFDCC690:FFDCCF52,FFDCCF58:FFDD1C12,FFDD1C18:FFDD4F9A,FFDD4FA0:FFDDC01A,FFDDC020:FFDE9DAA,FFDE9DB0:FFDEAADA,FFDEAAE0:FFDEBE0E,FFDEBE10:FFDF8E9E,FFDF8EA0:FFE08B7E,FFE08B80:FFE09696,FFE09698:FFE0C35E,FFE0C360:FFE0D182,FFE0D188:FFE0E67E,FFE0E680:FFE0F946,FFE0F948:FFE15CEA,FFE15FE0:FFE1CACE,FFE1CAD0:FFE1FE4A,FFE1FE50:FFE2460A,FFE24610:FFE27556,FFE27558:FFE2D4A2,FFE2D4A8:FFE3186A,FFE31870:FFE32B6E,FFE32B70:FFE3360A,FFE33610:FFE3425C,FFE34260:FFE36A5D,FFE36A60:FFE398E6,FFE39958:FFE3D52B] * DXE{}: BIOSImage:PhysMemMapper:[FF110148:FF110C96,FF110C98:FF124477,FF124478:FF130DFC,FF130E00:FF136045,FF136048:FF13676A,FF136770:FF1386E9,FF1386F0:FF1443E6,FF1443E8:FF149B37,FF149B38:FF14A2E6,FF14A2E8:FF14AB12,FF14AB18:FF14EBE2,FF14EBE8:FF14F27A,FF14F280:FF150BC9,FF150BD0:FF15D464,FF15D468:FF162A56,FF162A58:FF165DB9,FF165DC0:FF168949,FF168950:FF16A9B5,FF16A9B8:FF16B433,FF16B438:FF1744EF,FF1744F0:FF1750BC,FF1750C0:FF176B3B,FF176B40:FF177895,FF177898:FF179876,FF179878:FF17C094,FF17D9C8:FF18C6F5,FF18C6F8:FF18DE6A,FF18DE70:FF1958AB,FF1958B0:FF196B8F,FF196B90:FF19AC13,FF19AC18:FF19C6DB,FF19C6E0:FF1A149C,FF1A14A0:FF1A2BF2,FF1A2BF8:FF1A6E67,FF1A6E68:FF1A824A,FF1A8250:FF1A9377,FF1A9378:FF1AD803,FF1AD808:FF1B6AC9,FF1B6AD0:FF1B9E41,FF1B9E48:FF1BB9A3,FF1BB9A8:FF1BCB0E,FF1BCB10:FF1BD2E3,FF1BD2E8:FF1BD9E5,FF1BD9E8:FF1BE677,FF1BE678:FF1C2794,FF1C2798:FF1CAE4C,FF1CAE50:FF1CBD74,FF1CBD78:FF1CCD84,FF1CCD88:FF1CEAB3,FF1CEAB8:FF1D0D06,FF1D0D08:FF1D16C2,FF1D16C8:FF1D2861,FF1D2868:FF1D3022,FF1D3028:FF1D70D6,FF1D70D8:FF1D9B26,FF1D9B28:FF1DABB7,FF1DABB8:FF1DB536,FF1DB538:FF1E3C04,FF1E3C08:FF1E4D2D,FF1E4D30:FF1E7767,FF1E7768:FF1E80A3,FF1E80A8:FF1E9EFD,FF1E9F00:FF1EBA46,FF1EBA48:FF1EE6C3,FF1EE6C8:FF1EF511,FF1EF518:FF1F1A89,FF1F1A90:FF203199,FF2031A0:FF205C94,FF205C98:FF206DF3,FF206DF8:FF20B7FC,FF20B800:FF20C2FE,FF20C300:FF20DC14,FF20DC18:FF20FD65,FF20FD68:FF2109E4,FF2109E8:FF21D3EB,FF21D3F0:FF21F7D7,FF21F7D8:FF222D24,FF222D28:FF223606,FF223608:FF225407,FF225408:FF226F1E,FF226F20:FF2279CD,FF2279D0:FF227F32,FF227F38:FF228426,FF228428:FF228915,FF228918:FF229BB1,FF229BB8:FF22A25D,FF22A260:FF22C282,FF22C288:FF22C834,FF22C838:FF22CD34,FF22CD38:FF22D8B2,FF22D8B8:FF22F3C4,FF22F3C8:FF230651,FF230658:FF230B45,FF230B48:FF23114D,FF231150:FF23168E,FF231690:FF23239D,FF2323A0:FF23295C,FF232960:FF233007,FF233008:FF2334FA,FF233500:FF233A0C,FF233A10:FF23553E,FF235540:FF2367DC,FF2367E0:FF236CDD,FF236CE0:FF23729E,FF2372A0:FF237949,FF237950:FF237E42,FF237E48:FF238356,FF238358:FF239E86,FF239E88:FF23B124,FF23B128:FF23B626,FF23B628:FF23BBE5,FF23BBE8:FF23C291,FF23C298:FF23C78A,FF23C790:FF23CC9E,FF23CCA0:FF23E7CE,FF23E7D0:FF23FA6D,FF23FA70:FF23FF6E,FF23FF70:FF24052D,FF240530:FF240BD9,FF240BE0:FF2410D1,FF2410D8:FF2415E5,FF2415E8:FF243115,FF243118:FF2443B4,FF2443B8:FF2448B6,FF2448B8:FF244E61,FF244E68:FF245502,FF245508:FF2459EC,FF2459F0:FF245EDC,FF245EE0:FF247A02,FF247A08:FF248C96,FF248C98:FF250AB5,FF250AB8:FF252223,FF252228:FF252E4F,FF252E50:FF25841F,FF258420:FF2595EF,FF2595F0:FF2602C2,FF2602C8:FF2614EC,FF2614F0:FF262A0B,FF262A10:FF26A94F,FF26A950:FF2797B9,FF2797C0:FF27A992,FF27A998:FF27C7E3,FF27C7E8:FF27CE89,FF27CE90:FF27D4F7,FF27D4F8:FF27DDAA,FF27DDB0:FF27EB57,FF27EB58:FF27F469,FF27F470:FF280185,FF280188:FF28440D,FF284410:FF28D2AF,FF28D2B0:FF294AF1,FF294AF8:FF295E5F,FF295E60:FF296D83,FF296D88:FF29E4F9,FF29E500:FF2A0D51,FF2A0D58:FF2A1811,FF2A1818:FF2A2219,FF2A2220:FF2A2EF9,FF2A2F00:FF2A33F1,FF2A33F8:FF2A3B0C,FF2A3B10:FF2A6ABF,FF2A6AC0:FF2A9731,FF2A9738:FF2AB453,FF2AB458:FF2AD8A7,FF2AD8A8:FF2AFBBD,FF2AFBC0:FF2B3E41,FF2B3E48:FF2B842F,FF2B8430:FF2C73BC,FF2C73C0:FF2CADE4,FF2CADE8:FF2CD04F,FF2CD050:FF2D0769,FF2D0770:FF2D54AA,FF2D54B0:FF2D7952,FF2D7958:FF2DFC5C,FF2DFC60:FF2E82F6,FF2E82F8:FF2ED7D2,FF2ED7D8:FF2F1529,FF2F1530:FF2F69D5,FF2F69D8:FF2FBC84,FF2FBC88:FF30499D,FF3049A0:FF309227,FF309228:FF30D955,FF30D958:FF3183D4,FF3183D8:FF31C9FC,FF31CA00:FF321E64,FF321E68:FF326AD7,FF326AD8:FF327B7E,FF327B80:FF3299D6,FF3299D8:FF32C8CE,FF32C8D0:FF32FF47,FF32FF48:FF33B66F,FF33B670:FF33F1AC,FF33F1B0:FF3429A5,FF3429A8:FF349E94,FF437578:FF437C78,FF45DB20:FF49B9E0,FF4A32F0:FF4A6344,FF4A85D0:FF4AAE1C,FF4AAE20:FF4B55CA,FF4B5688:FF4B8BB2,FF4B8BB8:FF4B9ADF,FF4BA690:FF4BC81E,FF4BC820:FF4BECC0,FF57DEC8:FF57F8DB,FF57FC08:FF583807,FF583808:FF58A9FF,FF58AA00:FF58B2C5,FF593D40:FF5BB4FD,FF5F1F98:FF647034,FF647038:FF65FC54,FF660108:FF6DB929] Measured/protected data log: 0: PCH <- BIOSImage:PhysMemMapper:[FFBC0000:FFC00000] (IntelFITFirst(SACM)) [intelactors.PCH] 1: TPM <- BIOSImage:PhysMemMapper:[FFBC0014:FFBC0018] (ACMDate) [intelactors.ACM] 2: TPM <- BIOSImage:PhysMemMapper:[FFBB0160:FFBB0180,FFC00000:100000000] (IntelFITAll(BIOSStartupModuleEntry)) [intelactors.ACM] 3: TPM <- RawBytes:[0:4] (Bytes{00000000}) [intelactors.ACM] 4: TPM <- RawBytes:[0:10] (PCDVariable("FirmwareVendorVersion")) [actors.PEI] 5: TPM <- BIOSImage:PhysMemMapper:[FF110000:FFBAF000] (UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5)) [actors.PEI] 6: TPM <- RawBytes:[0:4] (Bytes{00000000}) [actors.PEI] Measured/protected data: 0: *biosimage.BIOSImage (biosimage.PhysMemMapper) 0: 0xFF110000:0xFFBAF000 1: 0xFFBB0160:0xFFBB0180 2: 0xFFBC0000:0x100000000 1: types.RawBytes 0: 0x0:0x4 2: types.RawBytes 0: 0x0:0x10 3: types.RawBytes 0: 0x0:0x4 Issues: <NONE>
[xaionaro@void converged-security-suite]$ go run ./cmd/pcr0tool bruteforce_acm_policy_status -expected-pcr0 9712906BE7714A3B38B595A7AD3342C7C0A49271 -registers /tmp/1.json ~/firmware/craterlake_dvt_Y35CLP01/Y35CLP01.bin Log: 0. if FITPresent{} then SetFlow({if BPMPresent{} then SetFlow({SetActor(P..., ...}): Actions: 0. SetFlow({if BPMPresent{} then SetFlow({SetActor(P..., ...}) 1. if BPMPresent{} then SetFlow({SetActor(PCH{}), ...}): Actions: 0. SetFlow({SetActor(PCH{}), ...}) 2. SetActor(PCH{}): Actions: 0. SetActor(PCH{}) 3. VerifyACMType{FallbackFlow:types.Flow{Name:"IntelCBnTFailure", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc00011d860)}}}: MeasuredData: 0. PCH <- BIOSImage:PhysMemMapper:[FFA80000:FFAC0000] (IntelFITFirst(SACM)) [intelactors.PCH] Actions: 0. SetPCHVerified(IntelFITFirst(SACM)) 4. VerifyKMType{FallbackFlow:types.Flow{Name:"IntelCBnTFailure", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc00011d860)}}}: MeasuredData: 0. PCH <- BIOSImage:PhysMemMapper:[FFFA2A80:FFFA2DE5] (IntelFITFirst(KeyManifestRecord)) [intelactors.PCH] Actions: 0. SetPCHVerified(IntelFITFirst(KeyManifestRecord)) 5. VerifyBPMType{FallbackFlow:types.Flow{Name:"IntelCBnTFailure", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc00011d860)}}}: MeasuredData: 0. PCH <- BIOSImage:PhysMemMapper:[FFFA2580:FFFA2A15] (IntelFITFirst(BootPolicyManifestRecord)) [intelactors.PCH] Actions: 0. SetPCHVerified(IntelFITFirst(BootPolicyManifestRecord)) 6. VerifyIBBType{FallbackFlow:types.Flow{Name:"IntelCBnTFailure", Steps:types.Steps{(*commonsteps.SetFlowStruct)(0xc00011d860)}}}: MeasuredData: 0. PCH <- BIOSImage:PhysMemMapper:[FFED0000:FFFA2580,FFFA2A40:FFFA2A80,FFFA2E00:100000000] (IBB) [intelactors.PCH] Actions: 0. SetPCHVerified(IBB) 7. SetActor(ACM{}): Actions: 0. SetActor(ACM{}) 8. InitTPMStruct{Locality:0x3, WithLog:true}: Actions: 0. TPMInit(3) 1. TPMEventLogAdd(PCR: 0, Algo: SHA1, Digest: 0x0x0000000000000000000000000000000000000000, EventData: 537461727475704C6F63616C6974790003) 2. TPMEventLogAdd(PCR: 0, Algo: SHA256, Digest: 0x0x0000000000000000000000000000000000000000000000000000000000000000, EventData: 537461727475704C6F63616C6974790003) 9. MeasurePCR0DATA{}: MeasuredData: 0. TPM <- TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA2604:FFFA2618] (StaticData{TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA2604:FFFA2618]}) [intelactors.ACM] 1. TPM <- TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA25E0:FFFA2600] (StaticData{TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA25E0:FFFA2600]}) [intelactors.ACM] Actions: 0. TPMExtend(PCR: 0, DataSource: StaticData{TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA2604:FFFA2618]}) 1. TPMEventLogAdd(PCR: 0, Algo: SHA1, Digest: 0x0x653D0F0526AB604D7E85A5A47CD5B0DAB5DA068A, EventData: 504352305F444154412053484131) 2. TPMExtend(PCR: 0, DataSource: StaticData{TXTPublic:[378:380], BIOSImage:PhysMemMapper:[FFA8001C:FFA8001E], BIOSImage:PhysMemMapper:[FFA80200:FFA80380], BIOSImage:PhysMemMapper:[FFFA2C65:FFFA2DE5], BIOSImage:PhysMemMapper:[FFFA2895:FFFA2A15], BIOSImage:PhysMemMapper:[FFFA25E0:FFFA2600]}) 3. TPMEventLogAdd(PCR: 0, Algo: SHA256, Digest: 0x0xABEFCEC86049CC87B84EFD1EF18B98BC386D476C5709BD21A3885EE1309679B7, EventData: 504352305F4441544120534841323536) 10. SetFlow({SetActor(Unknown{}), ...}): Actions: 0. SetFlow({SetActor(Unknown{}), ...}) 11. SetActor(Unknown{}): Actions: 0. SetActor(Unknown{}) 12. if IsOCPv0{} then SetFlow({SetActor(PEI{}), ...}): 13. if IsOCPv1{} then SetFlow({SetActor(PEI{}), ...}): Actions: 0. SetFlow({SetActor(PEI{}), ...}) 14. SetActor(PEI{}): Actions: 0. SetActor(PEI{}) 15. unless TPMIsInited{} do InitTPMStruct{Locality:0x0, WithLog:false}: 16. StaticStep{TPMEvent(PCR: 0, DataSource: PCDVariable("FirmwareVendorVersion"), Type: EV_S_CRTM_VERSION (0x8))}: MeasuredData: 0. TPM <- RawBytes:[0:10] (PCDVariable("FirmwareVendorVersion")) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: PCDVariable("FirmwareVendorVersion"), Type: EV_S_CRTM_VERSION (0x8)) 17. if IsOCPv0{} then if ManifestPresent{} then MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67a40)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67c40)}} else MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67940)}} else if ManifestPresent{} then MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe679c0)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67a00)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67a80)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67ac0)}} else MergeSteps{types.StaticStep{(*tpmactions.TPMEvent)(0xe67b00)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67b40)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67b80)}, types.StaticStep{(*tpmactions.TPMEvent)(0xe67bc0)}}: MeasuredData: 0. TPM <- BIOSImage:PhysMemMapper:[FFB30000:FFB90000] (UEFIGUIDFirst(1638673D-EFE6-400B-951F-ABAC2CB31C60)) [actors.PEI] 1. TPM <- BIOSImage:PhysMemMapper:[FFAC0000:FFB30000] (UEFIGUIDFirst(14E428FA-1A12-4875-B637-8B3CC87FDF07)) [actors.PEI] 2. TPM <- BIOSImage:PhysMemMapper:[FF9BF000:FF9FF000] (UEFIGUIDFirst(013B9639-D6D5-410F-B7A9-F9173C56ECDA)) [actors.PEI] 3. TPM <- BIOSImage:PhysMemMapper:[FF110000:FF77F000] (UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5)) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: UEFIGUIDFirst(1638673D-EFE6-400B-951F-ABAC2CB31C60), Type: EV_EFI_PLATFORM_FIRMWARE_BLOB2 (0x8000000A)) 1. TPMEvent(PCR: 0, DataSource: UEFIGUIDFirst(14E428FA-1A12-4875-B637-8B3CC87FDF07), Type: EV_EFI_PLATFORM_FIRMWARE_BLOB2 (0x8000000A)) 2. TPMEvent(PCR: 0, DataSource: UEFIGUIDFirst(013B9639-D6D5-410F-B7A9-F9173C56ECDA), Type: EV_EFI_PLATFORM_FIRMWARE_BLOB2 (0x8000000A)) 3. TPMEvent(PCR: 0, DataSource: UEFIGUIDFirst(4F1C52D3-D824-4D2A-A2F0-EC40C23C5916, 5C60F367-A505-419A-859E-2A4FF6CA6FE5), Type: EV_EFI_PLATFORM_FIRMWARE_BLOB2 (0x8000000A)) 18. StaticStep{TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4))}: MeasuredData: 0. TPM <- RawBytes:[0:4] (Bytes{00000000}) [actors.PEI] Actions: 0. TPMEvent(PCR: 0, DataSource: Bytes{00000000}, Type: EV_SEPARATOR (0x4)) 19. SetFlow({SetActor(DXE{})}): Actions: 0. SetFlow({SetActor(DXE{})}) 20. SetActor(DXE{}): Actions: 0. SetActor(DXE{}) COMBINATION: [0 2] RESULT: 0x81C4100002000000
Deleting
pkg/pcr
(the deprecated code) and migrating all the depending code topkg/bootflow
(the new fancy code), instead.