Skip to content

Heads-threat-model: per-board GPIO TPM reset protection table; uniformise 20 board flashing guide pages - #221

Closed
tlaurion wants to merge 3 commits into
masterfrom
doc/tpm-gpio-vuln
Closed

Heads-threat-model: per-board GPIO TPM reset protection table; uniformise 20 board flashing guide pages#221
tlaurion wants to merge 3 commits into
masterfrom
doc/tpm-gpio-vuln

Conversation

@tlaurion

@tlaurion tlaurion commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Heads Threat Model — Per-Board Protection Table

  • Per-board protection status for all 20 boards with chipset generation, EOL/ESU dates, GPIO TPM reset protection
  • KBL-R vs Whiskey Lake comparison, QSB-107 context, Intel doc 834810 reference
  • Mitigation on EOL platforms with Tails/Qubes memory OPSEC guidance
  • New external references: coreboot docs (doc.coreboot.org), EFF Threat Modeling Handout, OST2 firmware security training (ost2.fyi), darkmentor.com firmware security timeline, SPI programmer selection guide
  • Preview: https://tlaurion.github.io/heads-wiki/Heads-threat-model/

SPI Programmer Best Practices

20 Board Flashing Guides

Identical structure: TOC, EOL status (cross-ref to BOARDS_AND_TESTERS.md), TPM GPIO protection status, Safety First, Disassembly, Flashing. 14 new pages, 6 retrofitted. All using [flasher]/[programmer] placeholders.

Cross-Repo Corrections

  • 3 no-TPM boards corrected to NOT_APPLICABLE (Librem 11, Mini v1, Mini v2)
  • NV4x/NS50 reclassified to INCONCLUSIVE (unconfirmed)
  • V540TU/V560TU protection reason corrected
  • ESU dates aligned with authoritative sources
  • CONFIG_LINUX_CONFIG regression fixed on all Librem boards

Heads PR: linuxboot/heads#2165

Copilot AI review requested due to automatic review settings July 21, 2026 01:41

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

## TPM GPIO Reset Vulnerability (upstream coreboot bug)

[T430 Hardware Maintenance Manual](https://download.lenovo.com/ibmdl/pub/pc/pccbbs/mobiles_pdf/t430_t430i_hmm_en_0b48304_04.pdf)
Heads relies on [coreboot](https://coreboot.org/) for low-level platform initialization, including GPIO pad configuration. This platform (Ivy Bridge / Intel 3rd Gen) is affected by a coreboot bug where the PCH GPIO lock bits are not set before booting the OS, allowing an attacker with code execution to reset the discrete TPM and forge PCR measurements. Details: [TPM GPIO fail (mkukri.xyz)](https://mkukri.xyz/2024/06/01/tpm-gpio-fail.html).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Not true on this platform. The PLTRST signal connected to the TPM reset line is a dedicated pin on the older PCHs, so they can't be reset by changing it to a GPIO and manually toggling it.

**Note**: See the [SPI Programmer Best Practices]({{ site.baseurl }}/SPI-Programmer-Best-Practices/) for programmer recommendations (Tigard recommended; CH347F preferred budget option; CH341A rev1.6+ acceptable with a physical selector).
## TPM GPIO Reset Vulnerability (upstream coreboot bug)

Heads relies on [coreboot](https://coreboot.org/) for low-level platform initialization, including GPIO pad configuration. This platform (Sandy Bridge / Intel 2nd Gen) is affected by a coreboot bug where the PCH GPIO lock bits are not set before booting the OS, allowing an attacker with code execution to reset the discrete TPM and forge PCR measurements. Details: [TPM GPIO fail (mkukri.xyz)](https://mkukri.xyz/2024/06/01/tpm-gpio-fail.html).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

PLTRST is a dedicated pin on the older PCHs, and cannot be changed to a GPIO and manually toggled which is what TPM GPIO fail is.


## TPM GPIO Reset Vulnerability (upstream coreboot bug)

Heads relies on [coreboot](https://coreboot.org/) for low-level platform initialization, including GPIO pad configuration. This platform (Ivy Bridge / Intel 3rd Gen) is affected by a coreboot bug where the PCH GPIO lock bits are not set before booting the OS, allowing an attacker with code execution to reset the discrete TPM and forge PCR measurements. Details: [TPM GPIO fail (mkukri.xyz)](https://mkukri.xyz/2024/06/01/tpm-gpio-fail.html).

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Same here

@tlaurion
tlaurion marked this pull request as draft July 21, 2026 15:52
@tlaurion
tlaurion force-pushed the doc/tpm-gpio-vuln branch 2 times, most recently from b79ff6d to 8dc218e Compare July 22, 2026 00:54
@tlaurion

This comment was marked as duplicate.

tlaurion added 3 commits July 21, 2026 21:32
…uides

- T480-maximized, T480s-maximized: add vulnerability section with
  per-generation GPIO lock status table, Heads impact breakdown,
  and upstream tracking links
- T420-maximized (Sandy Bridge), T430-maximized (Ivy Bridge),
  x230-maximized (Ivy Bridge): mark as not affected — PLTRST# pin
  on pre-Skylake PCHs is a dedicated reset signal that cannot be
  reprogrammed to GPIO mode; coreboot GPIO driver analysis confirms
  no attack vector on these platforms
- Heads-threat-model: expand TPMTOTP GPIO reset note with detailed
  attack description: PCR clearing preserves NVRAM, attacker replays
  measurement log extends to forge PCR values, enabling unseal of
  TOTP/HOTP secret at NVRAM index 0x4d47 without passphrase

All platform claims verified against coreboot 25.09 and 26.06 source.
Upstream: coreboot ticket #576, Gerrit topic intel_gpio_lock

Signed-off-by: Thierry Laurion <insurgo@riseup.net>
- "reprogram the TPM reset pin" -> "assert PLTRST# via PCH register"
- /tmp/measurements -> /tmp/measuring_trace.log
- Tone down certainty about attacker obtaining secrets

Signed-off-by: Thierry Laurion <insurgo@riseup.net>
- Replace verbose TPM GPIO note with concise cross-reference to new table
- Add 12-row per-board table covering all boards from BOARDS_AND_TESTERS.md
- Three attack columns: Evil Maid detection, Disk encryption, USB Dongle
- Clear y/n symbols per PeonyThePeon issue #2159 comment #17 request

Signed-off-by: Thierry Laurion <insurgo@riseup.net>
@tlaurion
tlaurion force-pushed the doc/tpm-gpio-vuln branch from 565aef7 to 059a51d Compare July 22, 2026 01:33
@tlaurion
tlaurion requested review from JonathonHall-Purism and nic3-14159 and removed request for nic3-14159 July 22, 2026 01:36
@tlaurion
tlaurion marked this pull request as ready for review July 22, 2026 01:54
@tlaurion tlaurion changed the title doc: add TPM GPIO reset vulnerability warning to all board flashing guides Flashing-Guides: uniformise all 20 board pages with TPM GPIO reset warnings and consistent structure Jul 23, 2026
@tlaurion tlaurion changed the title Flashing-Guides: uniformise all 20 board pages with TPM GPIO reset warnings and consistent structure Heads-threat-model: per-board GPIO TPM reset protection table; uniformise 20 board flashing guide pages Jul 23, 2026
@tlaurion

tlaurion commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded by new PR from tlaurion/heads-wiki (correct fork) at #224

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.

3 participants