
Привет, Хабр! На связи Иван Глинкин, руководитель отдела аппаратных исследований из команды Бастиона.
Иногда для вскрытия сейфа не нужны никакие отмычки, болгарки и заклинания вроде «Алохомора» — достаточно деревянной палочки из набора для суши. И это еще не самая опасная уязвимость, найденная нами при тестировании российского «ящика с электронным замком для хранения ценностей». Мы заказали его на синем маркетплейсе почти за шесть тысяч рублей, а потом вскрыли за пару минут. О том, как нам это удалось, читайте под катом.
Предварительный осмотр
Для начала внимательно осмотрим нашего «пациента». Снаружи всё выглядит довольно убедительно: сталь, размеры 20 × 31 × 20 сантиметров и масса около четырех с половиной килограммов. Металл здесь настоящий, вовсе не крашеная фольга. Правда, «внутренний мир» не обязательно соответствует внешности, но об этом чуть позже.
С точки зрения покупателя, устройство кажется продуманным. На передней панели находится клавиатура для ввода кода. Под откидной крышкой скрывается личинка механического замка на случай, если владелец забудет комбинацию или электроника перестанет работать. В комплекте идут два ключа.
Рядом с клавиатурой расположена пара латунных контактов аварийного питания. Если внутренние батарейки разрядятся, к ним можно приложить девятивольтовую батарейку типа «Крона», запитать электронику и открыть дверь штатным кодом.

На корпусе также есть круглые технологические отверстия для крепления сейфа — два на задней стенке и по одному на боковых.

Волшебная палочка… для суши
Теперь откроем дверцу. На ее внутренней стороне видим крышку отсека для батареек, на которых работает электроника, и красную кнопку самоуничтожения для сброса кода (на плате она предусмотрительно подписана SET). Вдруг это и есть наша лазейка для взлома?

Если владелец забудет пароль, то нужно сделать следующее:
открыть дверцу аварийным ключом;
нажать на красную кнопку сброса пароля;
ввести новый код длиной от 4 до 8 цифр;
подтвердить комбинацию нажатием #;
проверить установленный код при открытой дверце сейфа.
Когда сейф закрыт, между дверцей и верхней стенкой корпуса остается небольшой зазор, но к заветной кнопке сброса через него не подобраться. А что если зайти с тыла, то есть через те самые технологические отверстия в задней стенке?
Бинго! Отверстия достаточно велики, чтобы просунуть внутрь эндоскоп. Дальше открытие сейфа превращается в несложное упражнение на координацию.
Находим кнопку SET с помощью эндоскопа.

Берем длинный и тонкий предмет, например, спицу или палочку для суши и через то же отверстие нащупываем кнопку.

Нажимаем ее, сбрасываем код и пошагово выполняем описанные выше действия по установке новой комбинации. После этого «сим-сим» открывается.
Здесь внимательный читатель справедливо возразит, что такой фокус сработает только с незакрепленным сейфом. И вправду, добросовестно прикрученный к стене «ящик для ценностей» палочкой для суши, скорее всего, не откроешь. Вот только за последний год я не встретил в отелях ни одного зафиксированного сейфа. Обычно металлическая коробка просто стоит на полке в шкафу. В общем, имейте в виду риски, прежде чем оставлять там золото-бриллианты ценности.
Ладно, допустим, за ошибки в установке производитель сейфа не отвечает. Но что с остальными элементами конструкции?
Вскрытие покажет
Внутри сейфа всё оказалось далеко не так основательно, как снаружи: пластиковые детали, две платы и соленоидный запорный механизм.

При подаче питания электромагнит втягивает язычок, после чего дверь можно открыть. Без питания язычок фиксируется в закрытом положении.
Электроника собрана на плате с маркировкой SY-860-A, установленной с внутренней стороны дверцы, а клавиатура подключена к ней шлейфом. Причем часть этой платы вообще не разведена. Ее явно делали унифицированной, сразу под несколько моделей сейфов. Так что все найденные в этом исследовании уязвимости (спойлер: их окажется несколько) вполне могут всплыть и в других линейках «ящиков для ценностей».

Пока складывается впечатление, будто все внутренности сейфа защищены лишь вышеупомянутыми цепями управления замком, пользовательским кодом и сбросом настроек, а периметр безопасности проходит по внешней клавиатуре. Что же, проверим.
Код открытым текстом
Для начала взглянем на плату. У главного контроллера на плате стерта маркировка: опознать модель с ходу нельзя. Однако это ничего не меняет. Меня интересует микросхема памяти AT24C02A — обычная I²C EEPROM 24-й серии на 2 килобита, то есть 256 байт, которую любой опознает по даташиту за минуту. В подобных устройствах такая память часто используется для хранения пользовательских настроек, в том числе кодов. Посмотрим, как именно они записаны в нашем сейфе.
Сначала я попытался прочитать память, не выпаивая микросхему. Подключил SOIC-прищепку непосредственно к чипу на плате, но при каждом чтении получал новый набор случайных данных. Остальная электроника мешала работе с шиной, поэтому добиться стабильного дампа не удалось. Программатор на базе CH341 вместе с flashrom микросхему тоже не распознал.
Пришлось взяться за термофен и выпаять EEPROM, установить в SOIC-адаптер и подключить к программатору T48.

Его софт minipro поддерживает эту модель:
minipro -r firmware.bin -p "T24C02A" hexdump -C firmware.bin
Получился дамп размером 256 байт. Почти всё пространство было заполнено значениями ff, однако первые строки выглядели гораздо интереснее…
Здесь сделаем шаг назад и для ясности оговоримся, что мы установили для сейфа тестовые пароли: 1234 (пользовательский) и 4321 (админский). Второй нужен на случай, если пользователь забудет свою комбинацию.
Итак, посмотрим на получившийся дамп.

По адресу 0x00 лежат байты 34 12, а по адресу 0x10 — 21 43. Внутри каждой пары цифры записаны в обратном порядке. Меняем их местами и получаем знакомые нам нехитрые комбинации: 12 34 и 43 21, то есть 1234 и 4321. Следовательно, никакого шифрования, хеширования или хотя бы простейшей обфускации здесь нет. Комбинации записаны в EEPROM практически в том же виде, в котором их набирает пользователь.
Само по себе это еще не позволяет открыть стоящий перед нами закрытый сейф: чтобы выпаять память, сначала придется получить доступ к внутренней стороне дверцы, но такой способ хранения хорошо показывает общий подход разработчиков к защите секретов.
Тупик, о котором тоже стоит рассказать
Раз EEPROM позволяет записывать данные, было бы странно не попробовать оставить в памяти сейфа собственный бэкдор. Речь об известном только мне дополнительном коде, который впоследствии нельзя было бы изменить без прямого вмешательства в микросхему и перепрошивки устройства. Я модифицировал соответствующие области кода через редактор Hex Edit. После сохранения правок убедился, что изменения корректно записались в файл.

Затем я загрузил прошивку замка на микросхему с помощью софта для программатора minipro. Для надежности я снова выгрузил прошивку с микросхемы и повторно сравнил ее с исходным модифицированным файлом — как бы избито ни звучало, но семь раз отмерь…

Словом, я добавил в дамп третий и четвертый код и записал модифицированный файл обратно:
minipro -w firmware.bin -p "T24C02A"
Программатор сообщил:
Writing... OK Verification... OK
Повторное чтение подтвердило, что данные действительно сохранились, записаны правильно и полностью соответствуют внесенным изменениям.
Всё это отлично, но замок новый код не принял. Судя по поведению устройства, прошивка обращается только к двум фиксированным областям памяти — основной и дополнительной комбинациям. Значения из остальных областей она просто не читает.
Что ж, бывает, не всё, что удается записать в память, обязано работать. Посмотрим на другой вектор атаки.
Шоковая терапия
Для начала отрисуем схему электросети нашего сейфа.

В верхнем правом углу схемы видим семь контактов (пинов) клавиатуры. Что касается резисторов, то все их серии, к нашему удобству, имеют подписанные номиналы:
102 — 1 кОм.
103 — 10 кОм.

Мы не стали отображать на схеме еще и резисторы с нулевым сопротивлением («нулевики»), которые лишь выполняют функцию перемычек (джамперов) для соединения разных участков платы и не несут никакой другой смысловой нагрузки.
На плате также установлены транзисторы с маркировкой J3Y. Кажется, что изначально на схеме была указана неверная маркировка транзисторов, но это требует дополнительного уточнения.
Взглянем и на диоды: все они одинаковые, причем маркировка на них отсутствует.
Аналогичная ситуация наблюдается и с основной платой — повторимся, что маркировка контроллера на ней стерта. Поэтому для дальнейшего исследования плату требуется извлечь и как следует изучить под микроскопом.
Теперь изучим характерное поведение устройства — его токовую сигнатуру. Я подключил плату к лабораторному источнику питания. В состоянии покоя она почти не потребляла ток. При вводе неверного кода картина практически не менялась, но после правильной комбинации потребление скачком возрастало: даже без подключенного внешнего электромагнитного замка плата съедала около ста миллиампер, а вместе с ним — примерно пол-ампера. Соленоид втягивал язычок. Эта информация нам еще пригодится.
Что же, вернемся к клавиатуре. Она приклеена к корпусу двусторонним скотчем и снимается за несколько секунд практически без следов. Под ней находятся уже упомянутые семь пинов клавиатурной матрицы и еще два контакта аварийного питания. То есть все линии оказываются доступны снаружи, без вскрытия металлического корпуса.

Двенадцать клавиш собраны в матрицу на этих семи линиях, так что, замкнув нужную пару контактов, можно эмулировать нажатие любой кнопки. Я подключил лабораторный источник питания и начал последовательно проверять контакты клавиатуры щупом. На одном из них обнаружилось знакомое поведение: при соединении положительной линии питания с шестым контактом потребление резко возрастало.
Это была та же токовая сигнатура, которую я наблюдал при штатном открытии замка. Следовательно, шестой контакт каким-то образом связан с цепью управления соленоидом.
Я продолжил эксперимент. При шести вольтах плата реагировала. При семи и восьми — нет. Затем я подал девять вольт и соединил положительную линию с шестым контактом.
После этого электроника начала постоянно подавать питание на замок, и соленоид втянул язычок. Дверь открылась, однако плата получила повреждения. Теперь при любом питании — от внутренних батареек или от внешней девятивольтовой «Кроны» — замок срабатывал автоматически. Устройство перешло в постоянно открытое состояние.

Как я написал тогда коллегам, новостей было две. Хорошая: сейф поддался. Плохая: он поддался окончательно, и теперь его вряд ли можно сдать назад в магазин.
Способ разрушительный, но эффективный: код не требуется, металлический корпус повреждать не нужно. Теоретически клавиатуру даже необязательно полностью снимать. Достаточно получить доступ к нужным точкам с помощью тонких игл, и вскрытие займет считаные секунды.
Почему это возможно
Описанные три вектора атаки выглядят как несвязанные уязвимости, но все они указывают на одну ошибку: производитель неверно определил границу доверия. Условно, он провел ее по клавиатуре и оставил непосредственно за ней:
доступ к кнопке сброса;
линии клавиатуры и управления;
контакты аварийного питания;
незащищенный пароль в плейнтексте;
цепи, связанные с работой соленоида;
В результате прочный корпус защищает не те элементы, от которых в действительности зависит безопасность замка. Особенно показательно поведение после повреждения платы. При отказе управляющей электроники система должна переходить в безопасное состояние: запорный механизм должен оставаться закрытым. В этом сейфе отказ платы, напротив, перевел управление замком в постоянно активное состояние.
Причина — в самой топологии. Соленоид замка коммутируется маломощным транзистором SS8550 через базовый резистор на килоом, и никаких супрессоров или ограничителей тока на этом пути нет. Замок открывается подачей питания, поэтому стоило выходу драйвера залипнуть во включенном состоянии, а именно это и обеспечили девять вольт по шестой линии, и питание на соленоид пошло постоянно.
При этом некоторая защита в конструкции всё же присутствует. На плате питания установлен диод Шоттки SS14, по сути, единственный защитный элемент во всей схеме.

Он защищает от переполюсовки: если владелец приложит «Крону» к контактам наоборот, электроника не пострадает. А о том, что девять вольт могут намеренно подать на соседние доступные линии, разработчики, судя по всему, не подумали.
Грубо, но действенно
А что насчет старого доброго брутфорса? После нескольких неудачных попыток ввести пароль сейф на минуту уходит в защитный режим. Однако если подать электричество, попробовать несколько комбинаций, потом обесточить и снова подать питание, счетчик сбрасывается. Милости просим: можно снова брутфорсить.
Подобную атаку сильно облегчил бы аппаратный брутфорсер, который легко можно собрать на Raspberry Pi или Arduino. Так или иначе, это вполне рабочий вектор атаки для тестируемого сейфа.

Что вы на самом деле покупаете
Металлическая часть этого сейфа вполне добротная, корпус действительно сделан из стали и выполняет свою базовую задачу, не позволяет открыть коробку руками и может на какое-то время защитить от распространенных инструментов. Покупатель платит за ощущение, что документы, деньги и другие ценности защищены кодовым замком, но это, скорее, иллюзия. Поэтому надпись «продукция не подлежит обязательной сертификации» остается самой честной строчкой на коробке. Вся остальная защита держится на предположении, что никто не полезет внутрь с эндоскопом, щупами и лабораторным источником питания.
Проблемы с безопасностью этого сейфа несложно было бы исправить:
Внешние линии необходимо защищать от перенапряжения и инъекций питания с помощью супрессоров, ограничителей тока, резисторов и предохранителей. Доступные контакты клавиатуры не должны иметь прямой или косвенной связи с силовой цепью замка.
Кнопку сброса нужно размещать так, чтобы до нее было невозможно добраться через вентиляционные или технологические отверстия.
Пользовательские комбинации не следует хранить в EEPROM открытым текстом. Даже если физический доступ к памяти уже означает серьезную компрометацию устройства, подобное хранение заметно упрощает анализ и модификацию данных.
Наконец, цепь управления соленоидом должна быть спроектирована так, чтобы отказ управляющей платы не приводил к постоянному открытию замка.
Ничего особенного в этом нет, проблема лишь в том, что каждая дополнительная защитная мера увеличивает себестоимость товара. Впрочем, для покупателя сейф всё равно стоит почти шесть тысяч рублей, и куда уходят эти деньги, вопрос открытый.
Напоследок приглашаю всех в свой Telegram-канал, где вас ждет масса интересного по теме реверс-инжиниринга: https://t.me/glinkinivan

PURP — Telegram-канал, где кибербезопасность раскрывается с обеих сторон баррикад
t.me/purp_sec — инсайды и инсайты из мира этичного хакинга и бизнес‑ориентированной защиты от специалистов Бастиона
Комментарии (26)

pes_loxmaty
28.08.2026 07:28Вот только за последний год я не встретил в отелях ни одного зафиксированного сейфа
У меня прямо противоположный опыт. Встречал совсем незакрепленный сейф примерно 0 раз. Если он не закреплен, то проще положить его в рюкзак и пойти в спокойное место, а там хоть болгаркой пили.
Незащищенные пароли в eeprom тоже уязвимость малоприменимая. Кстати 0113 - вы этот код в отелях и ставите обычно? )
Единственный рабочий вариант (и самый интересный) — с подачей питания на клавиатуру. Но получится ли выявить эту уязвимость на месте? Кажется всё же нужно предварительно ознакомиться с конкретной моделью у себя на базе. А такой сценарий как бы характерен для целенаправленной атаки, т.е. когда злоумышленник идет брать именно этот сейф и ожидает оттуда достать что-то конкретное. Но данный сейф мне кажется не того класса устройство.
На мой взгляд, для своего класса (и цены) безопасность устройства приемлемая. Ведь тут основное в модели угроз это, чтобы уборщица или ребенок случайно не залез. Но ваш пентест конечно показал, что простор для улучшений имеется. При чем практически бесплатно для производителя.

GlinkinIvan Автор
28.08.2026 07:28Кстати 0113 - вы этот код в отелях и ставите обычно? )
Аххах, все Вам скажи ;)

tigreavecdesailes
28.08.2026 07:28Незащищенные пароли в eeprom тоже уязвимость малоприменимая.
Там же админский пароль в отрытом виде. Который скорее всего одинаковый для всех номеров. И это доступно второстепенному персоналу или клиенту, после которого другие люди будут занимать номер.

GlinkinIvan Автор
28.08.2026 07:28Кстати да, хороший вектор, спасибо что подсветили!

Mishootk
28.08.2026 07:28Тут брутфорс совсем брут видится. Вообще без техники. Как новый клиент ставишь пароль 9999, а затем сидишь и перебираешь руками снизу верх в надежде наткнуться на админский. Обходя таймауты отключением питания. Тот пароль который сработал и есть админский., и скорее всего для всех сейфов этого заведения.

PickaPickaMan
28.08.2026 07:28Отличный способ оставить чаевые следующему постояльцу. Сбросил мастер-пароль на свой, и весь отель теперь твой личный банк

Mishootk
28.08.2026 07:28Я подозреваю, что для переназначения админского пароля требуется нечто большее, чем знание клиентского и просто открытая дверь. Возможно, админский назначить нельзя, его можно только заменить зная предыдущий.
Хотелось бы комментариев исследователя на эту тему.

GlinkinIvan Автор
28.08.2026 07:28
Любой каприз)
нажимаем 0 0 и потом красную кнопку для смены админского
но я думаю @PickaPickaMan имел ввиду заселиться в гостиницу чтобы разобрать один сейф, выпаять чип, снять админский пароль и при необходимости его заменить через хексдамп и обратно запаять
Mishootk
28.08.2026 07:28То есть дыра ближе чем казалось бы. Если при заселении нового постояльца не идет сброс админского пароля, то предыдущий гость имеет потенциальный доступ в сейф.
Мне кажется этот сейф не предназначен для гостиничного бизнеса. Те что я встречал в поездках программируются с внешнего интерфейса, без "красной кнопки". Изменить мастер-пароль гостю невозможно.

PickaPickaMan
28.08.2026 07:28В дешевых отелях эти ящики тупо приклеены на двусторонний скотч к полке шкафа. Попробуй как-нибудь потянуть посильнее, удивишься)

mysherocker
28.08.2026 07:28Если он не закреплен, то проще положить его в рюкзак и пойти в спокойное место, а там хоть болгаркой пили.
У большинства таких сейфов толщина металла на задней стенке от силы 1мм. А то и 0.5мм. Достаточно консервного ножа на месте. Даже не особо шумно.
Совершенно они не расчитаны на "удар в тыл". Не предполагается, что его будут использовать без крепления к стене

Mishootk
28.08.2026 07:28Заселившись в номер с таким сейфом снимаете накладку на двери и переносите + внешнего питания на + замка. В предположении что GND общий (иначе переносите оба провода). Ставите свежие батарейки. Все. Пока установленные батарейки не сядут, "открытый" сейф ждет любого с кроной. Потом техник меняющий питание может заметить странность.
Атака через предварительную подготовку.Не показаны боковые крепежные отверстия. Сейф обычно стоит задом к стене, бока открыты. Иногда просто в мебельной нише (бока прикрыты стенками шкафа) - то есть тоже в легком доступе. Можно ли через боковые отверстия получить доступ внутрь?

randomsimplenumber
28.08.2026 07:28А если вместо 9В подать 220? Через ограничитель, конечно. Чтобы диод вместе с драйвером померли но не испарились?

PickaPickaMan
28.08.2026 07:28Шесть тысяч рублей это по сути цена лома черного металла, из которого эта коробка сварена. Ждать тут нормальную криптографию или защиту от аппаратных атак явно не стоит)

GlinkinIvan Автор
28.08.2026 07:28так то да, но всегда найдутся люди, которые хотят сэкономить (поэтому этот "аппарат" продается и покупается) и наша задача подсветить риски.

lazarus_net
28.08.2026 07:28В отеле защита обеспечивается не невзламываемым сейфом а страховкой ваших ценностей.
Положил в тумбочку, их украли - Ваша проблема.
Положили в сейф, сейф открыли- украли проблема страховой компании отеля.
Так что смотрите на сумму страховки/ ответственности отела когда ценности в сейф кладете.
если сейф нужен для чего-то более существенного чем защита от детей, то надо брать. Модель весом под 40 кг чтобы не унесли и смотреть уровень защиты от огня.
Все-таки шансов что помещение где сейф стоит для обычного севера больше чем шансов что к нему в сейф залезут.
Ну и если хозяин дома - то любой пароль взламывается методом «атаки со словарем» - сами скажете.

randomsimplenumber
28.08.2026 07:28Положили в сейф, сейф открыли- украли проблема страховой компании отеля
3 магнитофона импортных..
Со страховой звонили, интересовались, точно ли вы уверены, что не оставили их на пляже.

RulenBagdasis
28.08.2026 07:28Положили в сейф, сейф открыли- украли проблема страховой компании отеля
Никакая страховая вам паспорт или иные документы не восстановит. А деньги, они на карте, с установленным суточным лимитом, её пропажа, это мелкое неудобство. А если вы решили пачку денег в сейфе оставить, удачи вам потом страховой доказать, что деньги там были.

MaFrance351
28.08.2026 07:28Металлическая часть этого сейфа вполне добротная, корпус действительно сделан из стали и выполняет свою базовую задачу, не позволяет открыть коробку руками и может на какое-то время защитить от распространенных инструментов.
Многие такие сейфы как раз таки можно открыть руками. Вообще без всяких инструментов. У очень многих таких замков есть фатальный недостаток, что якорь соленоида ощутимо болтается. Поэтому можно упереться одной рукой в ручку открытия, провернув до предела, другой рукой с силой вмазать по верхней части, и очень вероятно, что замок откроется.
Примерно так это выглядит:
Такие сейфы - защита исключительно от мимокрокодилов, детей и очень честных людей.

randomsimplenumber
28.08.2026 07:28Казалось бы, человечество накопило изрядный опыт в конструировании замков и ключей. Но конструкция из набора юного ардуинщика - это позор какой то.

LF69ssop
28.08.2026 07:28Комбинации записаны в EEPROM практически в том же виде, в котором их набирает пользователь.
В точнсти так и записаны, просто порядок little-endian.

Registan
28.08.2026 07:28Проверено, такой сейф вскрывается без всякой электроники, самым настоящим брутфорсом. Стучишь молотком по стенке, одновременно пытаешься повернуть ручку - защелка внутри прыгает и открывается.
Ну в целом свою задачу выполняет, защитить от случайного любопытного человека, другого ожидать не стоит.
adrozhzhov
В голове звучит
"Hello, this is Lock Picking Lawyer and today..."
LockPickingLawyer - Wikipedia
И смарт-замки
LockPickingLawyer - YouTube
И сейфы
LockPickingLawyer - YouTube
ну и лучшая серия - 1апрельские видео
LockPickingLawyer - YouTube
Arhammon
У него еще коллаборация была с инженером, который посмотрев видео решил сделать не взламываемый замок... который был открыт за секунду примерно по той же схеме что в статье...
nord-husky
Было еще несколько итераций "невзламываемого" замка от "Works by Design", и каждая из них была открыта в течение 1-2 дней исследований, насколько я видел
https://www.youtube.com/watch?v=xCg3qNnh59w
https://www.youtube.com/watch?v=-qUu8kIliy8