<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>gnustomp land (Posts about intel-me)</title><link>https://gnustomp.com/</link><description></description><atom:link href="https://gnustomp.com/categories/intel-me.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2020 &lt;a href="mailto:jye836@gmail.com"&gt;James Ye&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Sat, 18 Apr 2020 11:23:02 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Disabling Intel ME on Boot Guard computers</title><link>https://gnustomp.com/posts/disabling-intel-me-on-boot-guard-computers/</link><dc:creator>James Ye</dc:creator><description>&lt;div&gt;&lt;p&gt;The &lt;a href="https://en.wikipedia.org/wiki/Intel_Management_Engine"&gt;Intel Management Engine (ME)&lt;/a&gt; is a "ring -3" system in all modern Intel CPUs.  Due to security
concerns, there have been efforts to disable ME as much as possible, such as &lt;a href="https://github.com/corna/me_cleaner"&gt;&lt;code&gt;me_cleaner&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mjg59.dreamwidth.org/33981.html"&gt;Intel Boot Guard&lt;/a&gt; is a technology for cryptographically verifying system firmware, including the BIOS and
ME firmware.  Boot Guard has two primary modes of operation - Measured Boot and Verified Boot.  In Verified
Boot mode, the system will not boot if the firmware does not verify.  &lt;a href="https://github.com/corna/me_cleaner/wiki/Intel-Boot-Guard"&gt;This page&lt;/a&gt; explains how to check if
your system uses Intel Boot Guard.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;me_cleaner&lt;/code&gt; attempts to remove all non-essential modules from the ME firmware, forcing the ME into a
non-executing error state.  This is not possible with Verified Boot, since it involves modifying the ME
firmware image.&lt;/p&gt;
&lt;p&gt;In August 2017, it was &lt;a href="http://blog.ptsecurity.com/2017/08/disabling-intel-me.html"&gt;discovered&lt;/a&gt; that an undocumented "Alt ME Disable" mode exists,
which can be enabled by setting a bit in the Intel Flash Descriptor.  It is possible to activate this mode
even in Verified Boot mode, although this is not well-documented, aside from a few reports of successes.  I
can also confirm this is indeed the case.&lt;/p&gt;
&lt;p&gt;You can read about how to apply &lt;code&gt;me_cleaner&lt;/code&gt; &lt;a href="https://mjg59.dreamwidth.org/33981.html"&gt;here&lt;/a&gt;.  You must run &lt;code&gt;me_cleaner.py -s&lt;/code&gt;, to only set the "Alt
ME Disable" or "HAP" bit.&lt;/p&gt;
&lt;p&gt;In short, these are the steps I performed on my Lenovo ThinkPad T450s.  I used a Raspberry Pi 1 Model B to
read and write the flash chip, with a Pomona 5250 SOIC-8 clip to connect the SPI flash chip.  &lt;strong&gt;This is not
intended as a guide or tutorial&lt;/strong&gt;, and I am not responsible for any bricked laptops.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable Wake-on-LAN in ThinkPad BIOS setup.  This is required for the laptop to power the flash chip when
   off.  It is potentially dangerous to power the chip with an external power supply, and this is known to
   destroy some ThinkPad models.&lt;/li&gt;
&lt;li&gt;Locate and connect the flasher to the flash chip.  The SPI flash chip on the T450s is located between the
   RAM slot and the CPU heat pipe.  I removed the RAM and peeled back some tape to expose the chip.&lt;/li&gt;
&lt;li&gt;Connect the laptop to AC and plug in an ethernet cable.  This will power up the flash chip.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=12800 -r t450s.bin&lt;/code&gt; To read the contents of the
   flash chip.  You should do this twice and compare the contents to ensure you have a reliable connection.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;ifdtool -f t450s.txt t450s.bin&lt;/code&gt; to dump the flash layout.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;me_cleaner.py -s t450s.bin -O t450s-medisable.bin&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=12800 -l t450s.txt -i ifd -w t450s-medisable.bin&lt;/code&gt; to
   write the modified image to the chip.&lt;/li&gt;
&lt;li&gt;Disconnect the flasher and power on the laptop.  If it doesn't immediately power off, then you're
   &lt;em&gt;probably&lt;/em&gt; good.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I used &lt;code&gt;spispeed=12800&lt;/code&gt; to speed up SPI operations.  Setting this too high may result in an unstable
connection.&lt;/p&gt;
&lt;p&gt;If the ME interface e.g. &lt;code&gt;00:16.0 Communication controller: Intel Corporation Wildcat Point-LP MEI Controller
 #1 (rev 03)&lt;/code&gt; disappears from the PCI bus, or you see ME communication errors, this indicates that the ME is
disabled.  On Linux, you may want to blacklist the &lt;code&gt;mei&lt;/code&gt; and &lt;code&gt;mei_me&lt;/code&gt; modules to silence the communication
errors.&lt;/p&gt;
&lt;p&gt;If all went well, and you can verify the ME is not operational, you should report your success &lt;a href="https://github.com/corna/me_cleaner/issues/3"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><category>boot-guard</category><category>intel-me</category><guid>https://gnustomp.com/posts/disabling-intel-me-on-boot-guard-computers/</guid><pubDate>Sat, 30 Dec 2017 06:00:00 GMT</pubDate></item></channel></rss>