Monday, December 31, 2018

STM, Mu, Chaos

This should be my last blog of 2018, so I'll keep it short.

I just wanted to note a couple of news items on the SMI Transfer Monitor which I long ago noted in The NSA's evolution of the design as a checker was described earlier this year and now has a public example This work, along with the patches to Xen to support the launch of the STM provides an exciting example of this technology being enabled.

Speaking of SMM, an interesting study of building systems without SMM was mentioned by an Intel colleague in the OCP talk described at As opposed to jailing SMM code with an STM, this approach speaks to alternatives to implement capabilities formerly found in OEM SMM code in UEFI runtime and other portions of the platform.

Beyond the STM there is other interesting happenings in the world of open source firmware, including Microsoft's 'Project Mu' described in the blog posting and represented by various Github repositories There are interesting elements to be found, including test infrastructure and On the security front, UEFI crypto interfaces and a secure configuration infrastructure for zero touch management can be found. These packages meet the spirit of the more 'code first' methodology I mentioned on slide 15 of, for example. I've been told that although some folks in the Redmond area refer to UEFI as YOO-FEE, no one refers to Project Mu as MOO-FEE.

Regarding EFI topics on Github, I opined about the EFI Byte Code (EBC) many years ago, including challenges with natural integers, so I was happy to hear about an open source compiler with an EBC back-end I haven't dug in to see how they handle the sizeof(INTN) issue or if they just support x64. Either way, good stuff seeing the open source community pick up on this gap.

For my final topic I'd like to cover a talk from the Chaos Communications Conference (CCC). Watching this over the holiday has been a ritual of mine since I learned of talks like Trammell's Thunderstrike talk in 2014. This year's talk of interest was given by the organizer of OSFC Zaolin. He mentioned the EFI on U-Boot work, which I find valuable since having alternate clean-room implementations helps increase the quality of the standard. Without alternate implementations, a single code base can become the de facto standard (recall the byte swap bug from my last blog). A couple of the data items were a bit off, though, such as the timeline with  "1998 Apple EFI by Intel" when Apple didn't convert to EFI until the x86 transition in 2005

The PowerPC Macs prior to the transition used Open Firmware based upon Forth. Maybe the first article in can provide a better timeline? Beyond small nits like the latter, though, it was a great talk and advocacy for more openness in firmware. This blog also had a short mention in the talk, too.

Other talks at CCC I liked include which reinforces the argument around using safer languages in low-level code like device drivers. And of course I cannot forget Trammell's talk It was a definite counterpoint to the Portland BSides panel on this topic. When I asked Joe F. about the variety of panel members he smiled and replied "yes, we have diversity. Some of the panel members have beards, some don't." Ah, 2019.

Here's looking forward to a safe and productive 2019.

© 2018, Vincent Zimmer. This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License