|
Защита программ и Bootloader-ы, О дырах в защите |
|
|
|
Feb 17 2006, 08:48
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 3-05-05
Пользователь №: 4 696

|
Защита программ для многих является темой актуальной и производители охотно идут на встречу разработчикам. Они же (производители) пытаясь облегчить нам жизнь придумывают всякие ISP, Bootloader-ы и прочее. Но это все программы, а следовательно они потенциально опасны. Конечно Bootloder не Windows - много не наворочаешь, но и в паре килобайт кода могут поджидать неприятные сюрпризы: 1. Недокументированные вызовы 2. Функции без контроля входных параметров 3. Просто ляпы (ну это уже совсем маловероятно)
По работе больше приходится сталкиваться в основном с 51 кристаллами, однако проблема на мой взгляд присуща всем семействам. К сожалению за примерами далеко ходить не пришлось.
1. Phillips P89LPC922 (Просто предупреждение) Bootloader содержит недокументированный вызов, позволяющий прочитать содержимое незащищенного кристалла. Фишка в том, что это нельзя сделать с помощью программатора (верификация не поддерживается). К чести Philips надо сказать, что хорошо документированный исходник выложен у них на сайте, а сам Bootloader можно легко заменить.
2. Atmel AT89C51ED2 (Жалко тех, кто его использует) Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.
К чему это я все. Хотелось бы знать насколько серьезно по Вашему мнению следует относиться к теме защиты вообще, и следует ли тратить дополнительные время и средства на изучение устойчивости системы к взлому?
|
|
|
|
|
Feb 17 2006, 10:22
|
Знающий
   
Группа: Свой
Сообщений: 646
Регистрация: 21-06-04
Пользователь №: 71

|
Цитата(acex2 @ Feb 17 2006, 13:14)  Цитата(aforestman @ Feb 17 2006, 05:48)  2. Atmel AT89C51ED2 (Жалко тех, кто его использует) Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.
А можно поподробнее вот про эту дырку? Мне тоже интересно.
|
|
|
|
|
Feb 20 2006, 05:38
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 3-05-05
Пользователь №: 4 696

|
Цитата А можно поподробнее вот про эту дырку? Суть в том, что чтобы вы не прописали в биты LB0-LB2 HSB, всегда существует возможность перейти в Atmel-овский бутлоадер (речь идет о версии 1.0.0) и с его помощью прочитать содержимое флэша и EEPROM. Письмо мы им отправили месяца полтора назад, обещали исправить, как водится, as soon as possible.
|
|
|
|
|
Feb 20 2006, 06:52
|

Адепт
   
Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656

|
Цитата(aforestman @ Feb 20 2006, 02:38)  Суть в том, что чтобы вы не прописали в биты LB0-LB2 HSB, всегда существует возможность перейти в Atmel-овский бутлоадер (речь идет о версии 1.0.0) и с его помощью прочитать содержимое флэша и EEPROM. Собственно, HSB и не должен защищать от доступа к флэш из ISP. Он защищает от доступа при помощи внешнего параллельного программатора. Цитата These security bits (HSB) protect the code access through the parallel programming interface. They are set by default to level 4. The code access through the ISP is still possible and is controlled by the "software security bits" which are stored in the extra Flash memory accessed by the ISP firmware. Для блокировки ISP используется байт SSB. Цитата The SSB protects any Flash access from ISP command. The command "Program Software Security Bit" can only write a higher priority level. Only a full chip erase in parallel mode (using a programmer) or ISP command can reset the software security bits.
|
|
|
|
|
Feb 20 2006, 09:31
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 3-05-05
Пользователь №: 4 696

|
Сильно извиняюсь за ошибку. Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту.
|
|
|
|
|
Feb 21 2006, 15:51
|

Адепт
   
Группа: Свой
Сообщений: 520
Регистрация: 15-02-05
Пользователь №: 2 656

|
Цитата(aforestman @ Feb 20 2006, 06:31)  Сильно извиняюсь за ошибку. Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту. Ну да, бутлоадер вызывается без проблем и при установленном SSB на уровень 2. Но читать обратно из флеша не дает. По крайней мере, через Flip и утилитку от mcu.cz. Причем последняя заведомо не проверяет значение SSB перед попыткой чтения. Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа?
|
|
|
|
|
Feb 22 2006, 06:08
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 3-05-05
Пользователь №: 4 696

|
Цитата Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа? Вот что мы отоправляли на Atmel (протокол терминального режима). Код We tried to use your device AT89C51ED2 in our PLC design but found a serious problem with ISP Bootloader protection. See description:
We set Level2 security using FLIP :020000050700F2FC. We cannot read :050000040000002000D7L We cannot write :020000030400F7P ********** Then we type next commmand :040000xxxxxxxxxxxx. ************************************ And now we can read code :050000040000002000D7 0000=0208600220038E828F832202200BAE82 0010=AF8322022013742D01760002201B1176 0020=01 And we can write Flash :020000030400F7. xxx из гуманитарных соображений
|
|
|
|
|
Feb 22 2006, 06:33
|
Участник

Группа: Свой
Сообщений: 51
Регистрация: 21-07-04
Из: Таганрог
Пользователь №: 348

|
а можно поподробнее о Phillips P89LPC922, я так думаю все семейство этим страдает (интерес в частности по 936)
|
|
|
|
|
Feb 22 2006, 09:36
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 3-05-05
Пользователь №: 4 696

|
Цитата а можно поподробнее о Phillips P89LPC922, я так думаю все семейство этим страдает (интерес в частности по 936) Эта фича действительно присуща всем кристаллам (метка DCMD: в исходниках), однако дырой ее назвать нельзя. Вот пример: Код Формат команды :05000009XXXXYYYY00CC XXXX - с адреса YYYY - по адрес CC - контрольная сумма
Дамп зашищенного блока Вводим :050000090000001F00D3 нажимаем любую клавишу и ничего не получаем 0000=00000000000000000000000000000000 0010=00000000000000000000000000000000
Дамп незашищенного блока Вводим :050000091F001F1F0095 нажимаем любую клавишу и получаем 1F00=C1037452D195EFF1F4E173AB33EB6014 1F10=AD30AC317F80740078FF7696C2D112FF Мы обычно собираем все константы программы с адреса 0x1C00 (последний блок для 922) и оставляем этот блок, включая бутлоадер, открытым, а первые семь защищаем. Кстати эта фича почему-то не описана в UM, хотя она очень удобна при отладке. Для интересущихся пособие по матчасти
Adding_ISP_in_source_code.zip ( 187.08 килобайт )
Кол-во скачиваний: 279
|
|
|
|
|
Feb 28 2006, 08:02
|
Частый гость
 
Группа: Свой
Сообщений: 165
Регистрация: 18-06-04
Пользователь №: 56

|
Цитата(yornik @ Feb 28 2006, 03:01)  Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430? Вот мне тоже интересно, кто? Или может уже стало незаконным говорить о недоработках чипов и программ? Или кто-то считает, что таким образом можно защитить собственные изделия? "Слово не воробей..." Если кто-то сказал о том, что дыра существует, кто-то другой сможет ее найти. Ведь не представляет большого труда прочитать загрузчик, дизассемблировать и найти лазейку. Тем более если знать, ЧТО искать. А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.
|
|
|
|
|
Feb 28 2006, 13:49
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
Цитата(KiV @ Feb 28 2006, 12:02)  Цитата(yornik @ Feb 28 2006, 03:01)  Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?
А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты. Корневой топик на сахаре я прибил по просьбе собеседника. Свои вопросы в этой конфе я убрал уже по личной инициативе, хотя там нет никакого криминала. Кто убил начатую мной ветку в мсп430 конфе - я не в курсе, но подозреваю что это могут делать только модераторы. Вопросы на сахаре и электрониксе я задал 22 февраля. До 25 обсуждение шло через пень колоду. Что произошло 26 я не знаю, а 27 все уже было кончено.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|