LINUX.ORG.RU

internal прошивка на Thinkpad xx30

 , ,


0

2

Как известно, для Thinkpad на Ivy Bridge есть способ прошить кастомный биос, не прошивая флешку внешним программатором (по инструкции ch1p или готовым образом 1vyrain).

Вопрос такой, если прошить coreboot, эта защита (на регион bios естественно) остаётся? Или можно будет сразу прошивать flashrom -p internal?
Я это к тому, что в readme из skulls:

Flashing the bottom chip (closer to you) is optional but highly recommended. ... When you don't unlock the bottom chip with an external flasher, you can't flash internally

Т.е. они подразумевают, что если 8МБ-флешку не прошивать, то каждый раз надо прошивать программатором? (и если прошить coreboot, то потом его изнутри ни обновишь, ни родную прошивку из бекапа не зашьёшь?)
Или можно использовать тот же эксплоит (но он же требует uefi, получается нужен coreboot с tianocore)?

Вопрос такой, если прошить coreboot, эта защита (на регион bios естественно) остаётся?

Нет, 1vyrain снимает блокировку на запись в эти регионы.

coreboot не должен её сбрасывать обратно.

Т.е. они подразумевают, что если 8МБ-флешку не прошивать, то каждый раз надо прошивать программатором? (и если прошить coreboot, то потом его изнутри ни обновишь, ни родную прошивку из бекапа не зашьёшь?)

Я не уверен на 100%, но ЕМНИП эксплоит (и даже программатор) не могут снять блокировку на некоторые ME-регионы.

derlafff ★★★★★
()
Ответ на: комментарий от derlafff

Нет, 1vyrain снимает блокировку на запись в эти регионы.

Кажется, я неправ

then no me_cleaner for you, since the ME firmware is on the 8MB chip (along with the IFD and GBE regions).

IFD-регион - это как раз то, где лежит информация о блокировке на запись.

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от derlafff

ME ясно, что с самого ноутбука таким способом софтово не прошьёшь.
Речь только про 4М-флешку с биосом, можно ли будет (и как) прошить без программатора после прошивки coreboot?

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

Речь только про 4М-флешку с биосом, можно ли будет (и как) прошить без программатора после прошивки coreboot?

Мне казалось, что я все понимаю, но начал сейчас информацию искать и тоже запутался :(

Везде говорят про разлок регионов fd и me, так что есть вероятность, что bios не нужно с разблокированным биосом?

derlafff ★★★★★
()
Ответ на: комментарий от derlafff

есть вероятность, что bios не нужно с разблокированным биосом?

А что значит с разблокированным биосом?
Ну вот в readme к skulls что имели в виду? По сути сам ROM у них 4 метра, загружается только в bios.
8М-флешка, судя по скрипту external_install_bottom.sh, просто модифицируется: считывается, применяется me_cleaner и ifdtool, и заливается обратно. Ну me_cleaner пёс с ним, но за блокировку/разблокировку отвечает ifdtool, получается без этой операции без программатора не прошьёшь? Или это про разлочку fd и me? Но опять-таки, зачем тогда это замечание в readme, сам coreboot то в эти области не пишется.

Ещё смотрю интересный пулл реквест

added -U to help with people updating from 1vyrain method

Что за ключ такой у flashrom, в мане не вижу что-то

TheAnonymous ★★★★★
() автор топика
Последнее исправление: TheAnonymous (всего исправлений: 1)
Ответ на: комментарий от derlafff
  1. Есть биты прав доступа в fd. Там указаны права на fd и me. Если сам fd при этом защищен от перезаписи, то снять защиту можно либо внешним программатором, либо через pinmod, как я описал здесь https://github.com/gch1p/thinkpad-bios-software-flashing-guide#hda_sdogpio33

Например на макбуках, выпущенных в 2011-2012 годах, Apple не защищает fd и me должным образом, они там read-write, и это позволяет прошить биос, даже если он защищен регистрами PRx (о них ниже).

Раздел bios всегда «разблокирован» по отношению к fd, он защищается иначе.

  1. Есть регистры PR0-PR5, там задаются защищенные области SPI, плюс есть бит FLOCKDN регистра HSFS, если FLOCKDN проставлен в 1, то снять его может только reset платформы, ну и когда он 1, нельзя изменять PRx. bios обычно, по крайней мере на thinkpad, защищается через эти регистры. Защиту именно этих регистров снимает 1vyrain, ну и моя статья.
ch1p
()
Последнее исправление: ch1p (всего исправлений: 1)

если прошить coreboot, эта защита (на регион bios естественно) остаётся

нет, только если ты явно её не включишь при сборке.

можно будет сразу прошивать flashrom -p internal

можно

Т.е. они подразумевают, что если 8МБ-флешку не прошивать, то каждый раз надо прошивать программатором

нет, это они про ME, видимо. bios можно будет прошивать.

ch1p
()

Кстати, недавно в coreboot смержили поддержку soft temp disable mode для ME, так что отключать ME теперь можно софтварно через опцию в CMOS, без прошивки https://review.coreboot.org/c/coreboot/+/37115

Это конечно не железное отключение, т.к. потом можно включить обратно, но вполне альтернатива тем, кто не хочет возиться с программатором.

ch1p
()
Ответ на: комментарий от ch1p

Спасибо, понятно.

When you don't unlock the bottom chip with an external flasher, you can't flash internally

Значит видимо речь про конекретно эту микросхему, если программатором не разлочишь, то и internally (её) не прошьёшь, а не сам coreboot.

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

Ну там не совсем так. Эти два чипа объединяются в один виртуальный размером 12мб. bios занимает 7 мегабайт, то есть весь 4мб чип и ещё 3мб с 8мб чипа. Вот тут наглядно показано https://doc.coreboot.org/mainboard/lenovo/Ivy_Bridge_series.html#flash-layout

Ты сможешь прошивать все 7 мегабайт, то есть и кусочек 8мб чипа тоже. internally ты не сможешь прошить ME и FD (ну либо если пинмод заюзаешь, то сможешь, но проще программатором прошить наверное).

ch1p
()
Ответ на: комментарий от ch1p

Неплохо.
Но интересно

Working binary sequence for MKHI command to put
ME in Soft Temporary Disable Mode, as well as a way to bring ME out of
it (by writing to H_GS register), was found and published by researchers
from PT Security:

есть же патченный биос lenovo (который так же идёт в комплекте 1vyrain), и там включено какое-то расширенное меню.
И там среди прочего тоже есть опция типа отключить ME.
Интересно, она так же работает. Это же по идее официальный биос lenovo (патч биоса просто включает скрытую функциональность, если я правильно понимаю).

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от ch1p

И можно все использовать?
Так смотрю все ромы по 4МБ всё равно, и родные, и skulls делает, и в тех же скриптах 1vyrain проверяется чтобы ровно 4МБ было.

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

Да, так же. На самом деле у меня есть доки (BWG) на ME9-ME11, там есть про эту команду и другие. Но это слитые доки, и чтобы не было никаких юридических проблем у coreboot, в commit message я сослался на то, что доступно публично - исследование PT.

ch1p
()
Ответ на: комментарий от TheAnonymous

Да, можно. По 4мб это для прошивки внешним программатором. Не знаю, почему в 1vyrain так проверяется, не я его писал. Защита снимается со всего bios (0x00500000-0x00bfffff), поэтому после применения эксплоита вся эта область доступна для перезаписи.

ch1p
()
Последнее исправление: ch1p (всего исправлений: 1)
Ответ на: комментарий от BceM_IIpuBeT

Да, но это же актуально для родного биоса, не для coreboot. Писать-то всё равно можно во весь 0x00500000-0x00bfffff.

ch1p
()
Ответ на: комментарий от BceM_IIpuBeT

А, я понял, типа 1vyrain не пишут в 0x00500000-0x00800000 для того, чтобы случайно мусор в обновление EС не залить?

ch1p
()
Ответ на: комментарий от ch1p

Не знаю. Не пользовался им. Но если IFD оно не модифицирует, то, наверное, не стоит. Я не знаю как вызывается процесс прошивки ЕС.

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от ch1p

Если так, то круто, это же можно и нормальное ядро вместо payload прошивать.
Только (возможно, тупой) вопрос, другие биосы то начинаются с 0x00800000, а всё до этого (в скриптах 1vyrain и skulls) заполняется нулями, в т.ч. 0x00500000-0x007fffff. Если там будет нормальный биос, как оно поймёт, что надо начинать грузить с этого адреса?

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

Они начинаются с конца. 16 байт с конца.

ch1p
()

Читаю про эти пляски и думаю, а стоит ли овчинка выделки? Какие такие ништяки дает корбут, чтобы так заморачиваться?

utanho ★★★★★
()
Последнее исправление: utanho (всего исправлений: 1)
Ответ на: комментарий от TheAnonymous

Большую часть флешки занимает прошивка Intel ME, если ты ее зарежешь утилитой me_cleaner(которая модифицирует разметку(ifd)), то в чип(cbfs) можно будет хоть два ядра впихнуть.

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от BceM_IIpuBeT

А разметка (ifd), получается, это fd регион, и как me без разблокировки шьётся только на программаторе?

Можешь ещё пояснить, вот из skulls там создаётся файл разметки

echo "0x00000000:0x00000fff ifd" > ${OUTPUT_PATH}/${LAYOUT_FILENAME}
echo "0x00001000:0x00002fff gbe" >> ${OUTPUT_PATH}/${LAYOUT_FILENAME}
echo "0x00003000:0x004fffff me" >> ${OUTPUT_PATH}/${LAYOUT_FILENAME}
echo "0x00500000:0x007fffff unused" >> ${OUTPUT_PATH}/${LAYOUT_FILENAME}
echo "0x00800000:0x00bfffff bios" >> ${OUTPUT_PATH}/${LAYOUT_FILENAME}

и потом прошивка ${FLASHROM} --force --noverify-all -p internal --layout ${LAYOUT_FILENAME} --image bios -w "${OUTPUT_IMAGE_NAME}"
Это просто указание для flashrom, где находится регион bios? Что если в ifd записана другая разметка? Например если в разметке bios с 800000, а я зашью больший биос (с адреса 0x00500000)?

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

и как me без разблокировки шьётся только на программаторе?

Да. Но на x230 доступ к флешкам легчайший(на t430 нужно весь ноут разобрать), нужно только клаву и палмрест снять. ch341 и прищепка для soic-8 стоит копейки на алике. Вместо ch341 можно хоть RPI, хоть ардуинку использовать, а вместо прищепки можно просто подпаяться)

Это просто указание для flashrom, где находится регион bios?

Новый flashrom умеет читать ifd прямиком из твоего rom'а.

--ifd Read ROM layout from Intel Firmware Descriptor

В skulls уже устаревший метод.

Например если в разметке bios с 800000, а я зашью больший биос (с адреса 0x00500000)?

Он тогда не загрузится, очевидно)

BceM_IIpuBeT ★★☆☆☆
()
Последнее исправление: BceM_IIpuBeT (всего исправлений: 1)
Ответ на: комментарий от BceM_IIpuBeT

Новый flashrom
устаревший метод

Я и думаю, почему там файл разметки вместо --ifd, может какие другие причины

Он тогда не загрузится, очевидно)

А по умолчанию эта область (0x00500000:0x007fffff) не bios?
Там по ссылке internal прошивка на Thinkpad xx30 (комментарий) вроде как только bios, а это unused в layout-файле получается просто так (для удобства, т.к. всё равно ром всего 4 метра)?

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

Или как вариант, чтобы этот кусок не перезаписывался (нулями), указано --image bios, в layout файле bios с 0x00800000, а из --ifd bios был бы начиная с 0x00500000

TheAnonymous ★★★★★
() автор топика
Ответ на: комментарий от TheAnonymous

А по умолчанию эта область (0x00500000:0x007fffff) не bios?

File t430.rom is 12582912 bytes
  Flash Region 0 (Flash Descriptor): 00000000 - 00000fff 
  Flash Region 1 (BIOS): 00500000 - 00bfffff 
  Flash Region 2 (Intel ME): 00003000 - 004fffff 
  Flash Region 3 (GbE): 00001000 - 00002fff 
  Flash Region 4 (Platform Data): 00fff000 - 00000fff (unused)

Биос. Но там, видимо, какой-то костыль для прошивки EC. Хз, нужно изучать этот https://github.com/hamishcoleman/thinkpad-ec проект.

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от ch1p
Ответ на: комментарий от ch1p

Кстати, недавно в coreboot смержили поддержку soft temp disable mode для ME, так что отключать ME теперь можно софтварно через опцию в CMOS, без прошивки

Очень круто!

zemidius
()
Ответ на: комментарий от zemidius

Меня больше всего пугает это ваше: софтварно включать/выключать Intel ME; софтварно перепрошивать BIOS, UEFI; софтварно перепрошивать disk firmware.

И с современного железа только хромобук имеет, аппаратно, вкручеваемым в мамку болтом, запрет на изменения. Другие производители о аппаратном запрете, джемппром, прошивки BIOS/UEFI давно забыли.

anonymous
()
Ответ на: комментарий от BceM_IIpuBeT

и прищепка для soic-8 стоит копейки на алике

У меня очень негативный опыт с этой прищепкой. Она фактически одноразовая: один чип успел считать, второй уже нет. Пластик просто крошится и всё, она больше не цепляется. Купил дорогую pomona clip для теста, но пока не успел проверить.

derlafff ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.