Перейти к содержанию
    

Защита программ и Bootloader-ы

Защита программ для многих является темой актуальной и производители охотно идут на встречу разработчикам. Они же (производители) пытаясь облегчить нам жизнь придумывают всякие ISP, Bootloader-ы и прочее. Но это все программы, а следовательно они потенциально опасны. Конечно Bootloder не Windows - много не наворочаешь, но и в паре килобайт кода могут поджидать неприятные сюрпризы:

1. Недокументированные вызовы

2. Функции без контроля входных параметров

3. Просто ляпы (ну это уже совсем маловероятно)

 

По работе больше приходится сталкиваться в основном с 51 кристаллами, однако проблема на мой взгляд присуща всем семействам.

К сожалению за примерами далеко ходить не пришлось.

 

1. Phillips P89LPC922 (Просто предупреждение)

Bootloader содержит недокументированный вызов, позволяющий прочитать содержимое незащищенного кристалла. Фишка в том, что это нельзя сделать с помощью программатора (верификация не поддерживается).

К чести Philips надо сказать, что хорошо документированный исходник выложен у них на сайте, а сам Bootloader можно легко заменить.

 

2. Atmel AT89C51ED2 (Жалко тех, кто его использует)

Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.

 

К чему это я все.

Хотелось бы знать насколько серьезно по Вашему мнению следует относиться к теме защиты вообще, и следует ли тратить дополнительные время и средства на изучение устойчивости системы к взлому?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. Atmel AT89C51ED2 (Жалко тех, кто его использует)

Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.

 

А можно поподробнее вот про эту дырку?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. Atmel AT89C51ED2 (Жалко тех, кто его использует)

Bootloader зашит в ПЗУ и имеет дыру, позволяющую его же средствами обойти защиту любого уровня. Причем, учитывая специфику кода, можно утвеждать что данную дыру имеют все кристаллы семейства AT89C51XX2.

 

А можно поподробнее вот про эту дырку?

 

Мне тоже интересно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MSP430 с загрузчиком версии 1.10 и младше тоже имеет дыру в безопасности из-за глюка. Поэтому мы в свое время от них и отказались. Не знаю, сделал TI уже маску с v1.30 или все еще обещает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно поподробнее вот про эту дырку?

Суть в том, что чтобы вы не прописали в биты LB0-LB2 HSB, всегда существует возможность перейти в Atmel-овский бутлоадер (речь идет о версии 1.0.0) и с его помощью прочитать содержимое флэша и EEPROM.

Письмо мы им отправили месяца полтора назад, обещали исправить, как водится, as soon as possible.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Суть в том, что чтобы вы не прописали в биты 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сильно извиняюсь за ошибку.

Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сильно извиняюсь за ошибку.

Вместо LB0-LB2 HSB следует читать LB0-LB1 SSB и далее по тексту.

 

Ну да, бутлоадер вызывается без проблем и при установленном SSB на уровень 2.

Но читать обратно из флеша не дает. По крайней мере, через Flip и утилитку от mcu.cz.

Причем последняя заведомо не проверяет значение SSB перед попыткой чтения.

 

Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мы можете пошагово расписать всю процедуру чтения из флэша защищенного чипа?

Вот что мы отоправляли на 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 из гуманитарных соображений

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а можно поподробнее о Phillips P89LPC922,

я так думаю все семейство этим страдает (интерес в частности по 936)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а можно поподробнее о 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?

 

Вот мне тоже интересно, кто?

Или может уже стало незаконным говорить о недоработках чипов и программ?

Или кто-то считает, что таким образом можно защитить собственные изделия?

 

"Слово не воробей..." Если кто-то сказал о том, что дыра существует, кто-то другой сможет ее найти. Ведь не представляет большого труда прочитать загрузчик, дизассемблировать и найти лазейку. Тем более если знать, ЧТО искать.

 

А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.

А вы не в курсе, что человек - хозяин своего слова? Захотел - дал, захотел - взял обратно :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто из этого топика убрал всю содержательную инфу о дырках в BSL-загрузчике v.1.10 MSP430?

 

А вообще-то хотелось-бы услышать, ПОЧЕМУ были удалены посты.

 

 

Корневой топик на сахаре я прибил по просьбе собеседника.

Свои вопросы в этой конфе я убрал уже по личной инициативе, хотя там нет никакого криминала.

Кто убил начатую мной ветку в мсп430 конфе - я не в курсе, но подозреваю что это могут делать только модераторы.

Вопросы на сахаре и электрониксе я задал 22 февраля. До 25 обсуждение шло через пень колоду. Что произошло 26 я не знаю, а 27 все уже было кончено.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...