diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 26cdfaa..0b5ed85 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -130,7 +130,7 @@ MD030: # MD033/no-inline-html - Inline HTML MD033: # Allowed elements - allowed_elements: ["br", "center", "img", "script", "form", "input", "a"] + allowed_elements: ["br", "center", "img", "script", "form", "input", "a", "div", "center","small","v-clicks"] # MD034/no-bare-urls - Bare URL used MD034: false diff --git a/2024/LPC/challanges-in-developing-trustworthy-linux-based-systems.md b/2024/LPC/challanges-in-developing-trustworthy-linux-based-systems.md new file mode 100644 index 0000000..eed7a6c --- /dev/null +++ b/2024/LPC/challanges-in-developing-trustworthy-linux-based-systems.md @@ -0,0 +1,337 @@ +## Kudos for review and feedback + +* Ross Philipson +* Daniel P. Smith +* Andrew Cooper +* Richard Pesaud + +--- + +# Glossary + +* LVFS - Linux Vendor Firmware Service +* HSI - Host Security ID +* HCL - Hardware Compatibility List +* FSF RYF - Free Software Foundation, Respect Your Freedom +* SMM - System Management Mode +* TEE - Trusted Execution Environment +* AMD PSP/ASP - AMD Platform Security Processor/AMD Security Processor +* Intel PPAM - Intel Platform Properties Assessment Module +* TCG DICE - Trusted Computing Group, Device Identifier Engine +* UEFI - Unified Extensible Firmware Interface +* OCP - Open Compute Project +* SNIA - Storage Networking Industry Association +* DMTF SPDM - Distributed Management Task Force, Security Protocol and Data Model + + + +--- + +## Goal + +The presentation highlights five challenging areas and activities related to +Linux-based system booting and security from platform vendor and user +perspective. + +The focus is on: +* Highlighting the problems to provide inspiration and work as an anchor for +future CfP processes. We see challenges and issues in the open source communities +in various areas, including only sometimes being able to get domain experts in +these topics. +* Make valuable references to past events. +* Get feedback on what is missing. + + + +--- + +## Challenge 1: Assessment + +
+ + + +
+ +* Lack of OS awareness about hardware security capabilities leads to the +inability to evaluate and improve system security posture. +* Over the last two years, we have seen number of various communities +approaching this topic. + - GNOME introduced the Device Security Settings page (based on [LVFS HSI](https://fwupd.github.io/libfwupdplugin/hsi.html)). + - KDE Plasma added Firmware Security page (based on [LVFS HSI](https://fwupd.github.io/libfwupdplugin/hsi.html)). + - Qubes OS Security Report (based on Qubes HCL). + - FSF RYF Certification (unclear rules). + + +--- +clicks: 4 +--- + + +## Assessment + +* Some interfaces for CPU assessment already exist. We have tools like: + - `lscpu`, which shows `/sys/devices/system/cpu/vulnerabilities`. + - `/proc/cpuinfo` bugs. +* We could only secure our ecosystem if we knew what security mechanisms are +available on a given piece of hardware. +* Shipping hardware with Linux would be more challenging without exposing the +interface, which will help assess security configuration and help protect +against misconfiguration of security features. +* Achieving results requires broader cooperation between communities and vendors. +* Followed presentations and communities discussed this topic: + - [Embedded Recipes: LVFS: The next 50 million firmware updates](https://embedded-recipes.org/2022/wp-content/uploads/2022/06/LVFS-ER-avec-compression.pdf). + - [TrenchBoot Summit: LVFS Host Security ID (HSI) and Silicon-Based Core Security](https://www.youtube.com/live/xZoCtNV8Qs0). + - Arm SystemArchAC Security Sub-team. + + + + +--- +clicks: 2 +--- + + +# Challenge 2: SMM (TEE?) as Chain of Trust Gap + +* For various reasons, vendors add secure areas that try to guarantee the +confidentiality and integrity of the code and data inside it. +* This creates an exciting attack target that has been abused many times +in the past. +* Solutions: + - SMI Transfer Monitor - Linux driver [out of + tree](https://github.com/EugeneDMyers/stm_linux_module), probably far from + making it first-class citizen. + - Project Mu - has an SMM Supervisor integrated on top of STM API. Microsoft + Secured Core PC makes it a requirement, as does other SMM threat-mitigating + technology. + - Ron Minnich: [Let's move SMM out of firmware and into the kernel](https://www.youtube.com/watch?v=6GEaw4msq6g). +* Followed presentations and communities discussed this topic: + - [BSides Portland: ABC to XYZ of Writing System Management Mode (SMM) Drivers](https://youtu.be/BQajtsy6kp0). + - [Dasharo Dev vPub: Overview of the Intel SMI Transfer Monitor on Dasharo Firmware](https://youtu.be/3PmOcjQX-9Y). +* SMM (TEE?), by definition, should not give direct access to the user, but it +needs to communicate the platform security state to the user. Is there a place +for it in the Linux kernel? + + + + +--- +clicks: 5 +--- + + +# Challenge 3: All your hardware belong to us + +* The growth of hardware and firmware components like AMD PSP features, Intel +PPAM and ME features, or MS Pluton, and how those effectively block/enable +building trustworthy systems by the open-source community. +* In parallel, this creates an ecosystem in which we cannot leverage the the +full potential of hardware and firmware in our machines. +* On one side, this is an attack vector that we cannot do anything about. On +the other side, our hardware no longer belongs to us if anyone is surprised by +that fact. +* Followed presentations and communities discussed this topic: + - [BlackHat: Breaking Firmware Trust From Pre-EFI: Exploiting Early Boot Phases](https://youtu.be/Z81s7UIiwmI) + - [SMM isolation - SMI deprivileging (ISRD)](https://tandasat.github.io/blog/2024/02/29/ISRD.html) +* Why did it all happen? + - [USENIX ATC '21/OSDI '21 Joint Keynote Address-It's Time for Operating Systems to Rediscover Hardware](https://www.youtube.com/watch?v=36myc8wQhLo) + + + + +--- +clicks: 4 +--- + + +# Challenge 4: Root of Trust + +* There are promising plans for defeating the lack of consistent assessment, +implementation, and provisioning of Root of Trust on very different hardware +configurations through Caliptra, DICE, SPDM, and more, as well as what impact +it may have on the OS. +* Some SPDM-related patches are slowly landing in Linux. +* Followed presentations and communities discussed this topic: + - [UEFI Forum: Using SPDM in UEFI for Device Attestation](https://youtu.be/RJHd3Mqk4Uw). + - [OCP: OCP Attestation using SPDM and DICE](https://youtu.be/qO2BrMZZy2Y). + - [OCP: TPM Transport Security: Defeating Active Interposers with DICE](https://youtu.be/DKfbkOTYzOU). + - [OCP: And Update on Caliptra](https://youtu.be/DKfbkOTYzOU). + - [SNIA: TCG DICE & DMTF SPDM Binding Overview](https://youtu.be/fxp7UHFaBLs). + + + +--- + +# Challenge 5: What we can do better with DRTM for AMD + + + +* Lessons learned from the 11-th series of making 20+ year-old security tech + for Intel CPUs first-class citizens in the Linux kernel. +* Make sure to consider platform-specific challenges and architectural + alignment (Intel vs AMD, ARM inclusion). Design a robust ABI framework up + front to reflect this. +* Consider configuration impacts and document them upfront (e.g., KASLR, + IOMMU in the Linux kernel). +* Check various compilers and build environments from the beginning. Ensure + successful builds with the new features turned on and off in the + configuration. + + + +--- + +# Challenge 5: What we can do better with DRTM for AMD + + + +* Plan for all entry points and boot protocols (32/64 bit, legacy/UEFI). Note + that the upstream work assumes 64b environments to run in, but it should + build in all environments +* Be willing to accommodate feedback and suggestions where possible and + attempt to get assistance from the community (e.g., WAIT/MONITOR, + linker-based `kernel_info` placement). +* Avoid tight coupling to specific hardware behaviors (e.g., TPM access). +* Is there anything missing? + + + + +--- +layout: cover +background: /intro.png +class: text-center + +--- + +# Q&A + +piotr.krol@3mdeb.com + + diff --git a/2024/LPC/changelog.md b/2024/LPC/changelog.md new file mode 100644 index 0000000..6e42059 --- /dev/null +++ b/2024/LPC/changelog.md @@ -0,0 +1,14 @@ +- [ ] add kudos +- [ ] fix page numbers is PDF + + removed for now +- [ ] add slides for Google AVF (GPLv2 pKVM and BSD 3-clause gunyah) + + at this point I have not enough understanding of it to speak about that + + there are some notes on hackernews +- [ ] add slide for pKVM neutering of Arm TrustZone EL3 as equivalent to SMM/TEE +- [x] remove LVFS rant, and put it to comment +- [x] s/STM/SMM Supervisor/ +- [x] s/YO/year-old/ +- [x] add glossary +- [x] capitalize first letter and end with period +- [ ] incomplete sentence "Without exposing..." +- [ ] TB section improvements diff --git a/public/2024/LPC/qos_sec_report.png b/public/2024/LPC/qos_sec_report.png new file mode 100644 index 0000000..08945cc Binary files /dev/null and b/public/2024/LPC/qos_sec_report.png differ