Taruu 30 Опубликовано: 7 мая, 2021 (изменено) 7 минут назад, BrightYC сказал: какой смысл, если EEPROM могли подменить? Ну засунешь дискету - а какой смысл, если код был запущен еепромой, которая пожет подменить *все*. Кстати, немного оффтопа, но дата-карта не обязательна. Она медленнее, чем software решения. Ты имеешь в виду тот случай когда у нас стырили робота и потом вернули? Или то что мы не знаем залезали ли в него или нет? Можно тогда в дискету засунуть uuid робота и если его пересобрали то дискета просто скажет фи... Ибо uuid поменяется Изменено 7 мая, 2021 пользователем Taruu Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор темы 415 Опубликовано: 7 мая, 2021 2 минуты назад, Taruu сказал: Ты имеешь в виду тот случай когда у нас стырили робота и потом вернули? собственно, вся тема об этом, а не о том, как сохранить данные. Всякие secure boot бесполезны, если самый главный загрузчик скомпрометирован. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Taruu 30 Опубликовано: 7 мая, 2021 1 минуту назад, BrightYC сказал: собственно, вся тема об этом, а не о том, как сохранить данные. Всякие secure boot бесполезны, если самый главный загрузчик скомпрометирован. я там добавил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор темы 415 Опубликовано: 7 мая, 2021 5 минут назад, Taruu сказал: Можно тогда в дискету засунуть uuid робота и если его пересобрали то дискета просто скажет фи... Ибо uuid поменяется Нельзя. Программа на уровне EEPROM может подменить вызовы и к component.invoke. В том числе и к очереди сигналов и прокси компонентов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Taruu 30 Опубликовано: 7 мая, 2021 9 минут назад, BrightYC сказал: Нельзя. Программа на уровне EEPROM может подменить вызовы и к component.invoke. В том числе и к очереди сигналов и прокси компонентов. А если робот выключен, и тыкнуть его анализатором то там тоже подмена сработает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 7 мая, 2021 37 минут назад, Taruu сказал: А если робот выключен, и тыкнуть его анализатором то там тоже подмена сработает? Анализатор в любом случае выдаст правильный результат. Но если имеется физический доступ к роботу, проверка отклонений в его EEPROM не вызывает затруднений. Также без проблем можно авторизовать робота, который не отключался с момента его установки. Затруднения возникают в случае, если находящийся где-то далеко наш робот по каким-то причинам отключился. И прежде чем отправлять такому роботу координаты базы и прочие секреты, следует удостовериться, что это именно наш робот, и что он никому не выдаст известные ему секреты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 11 мая, 2021 Что-то лагерь взломщиков долго молчит. Поясню свой предыдущий ответ: В 07.05.2021 в 15:28, eu_tomat сказал: Разумеется, код обёрнут в pcall. И упадёт он независимо от лагов. Заворачиваем цикл в pcall и выполняем. А потом ещё раз выполняем. И ещё. Код может выглядеть, например, так: while true do pcall(function() for i=1,1e15 do end end) end Это код должен спровоцировать ошибку TLWY и отключение робота. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор темы 415 Опубликовано: 11 мая, 2021 4 часа назад, eu_tomat сказал: Что-то лагерь взломщиков долго молчит. Поясню свой предыдущий ответ: Код может выглядеть, например, так: while true do pcall(function() for i=1,1e15 do end end) end Это код должен спровоцировать ошибку TLWY и отключение робота. но каким образом это поможет если, сам этот код обвернут в pcall? local chunkFromServer = [[ while true do pcall(function() for i=1,1e15 do end end) end ]] local chunk = load(chunkFromServer) if chunk then pcall(chunk) end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор темы 415 Опубликовано: 11 мая, 2021 2 минуты назад, BrightYC сказал: но каким образом это поможет если, сам этот код обвернут в pcall? local chunkFromServer = [[ while true do pcall(function() for i=1,1e15 do end end) end ]] local chunk = load(chunkFromServer) if chunk then pcall(chunk) end проверил, оказывается, даже если код обвернут в pcall, tlwy вылетает сразу, провоцируя выключение компьютера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Chebuya Автор темы 415 Опубликовано: 11 мая, 2021 со стороны взломщиков появилась идея. Хранить код для пробуждения на сервере, а для самого модема выставить сигнал на пробуждение. Перед выполнением любого кода отсылать на сервер, что робот выполняет код - и начинает в цикле while true do end посылать сигнал на wakeup. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 11 мая, 2021 2 минуты назад, BrightYC сказал: со стороны взломщиков появилась идея. Хранить код для пробуждения на сервере, а для самого модема выставить сигнал на пробуждение. Перед выполнением любого кода отсылать на сервер, что робот выполняет код - и начинает в цикле while true do end посылать сигнал на wakeup. Несколько путаное изложение идеи, и я попробую расшифровать её для читателей, которые не в теме. Взломщик подменяет сообщение пробуждения модема своим. И с помощью дополнительного компьютера непрерывно будит робота по этому сообщению. При этом размер сообщения ограничен 8192 байт. И сервер защиты будет пытаться убедиться в том, что испытуемый робот пробуждается именно по оригинальному сообщению. Так как взломщик непрерывно будит робота другим сообщением, то сторона защиты не будет уверена, каким именно сообщением разбужен робот. На первый взгляд информации недостаточно, но её можно попытаться получить. Существуют тайминги на отключение по TLWY. Бесконечный цикл погасит компьютер через 110 тиков. По истечении этого времени сервер защиты должен послать сигнал пробуждения. Далее 2 тика будет затрачено на пробуждение робота. И первым делом по пробуждении он должен будет отослать на сервер защиты информацию о своём пробуждении. Для простоты робот будет отправлять ту самую строку, которая добивает размер EEPROM до 4096 байт. Чтобы зря не потреблять оперативную память, эту строку можно будет позже удалить (из оперативной памяти). Вторым сообщением робот должен будет отправить содержимое wakeMessage сетевой карты. Он потратит на это ещё два тика времени. Если код взломщика попытается отправить какую-либо информацию на свой сервер после получения кода с сервера защиты, он сдвинет время отсылки роботом сообщения о своём пробуждении на один тик независимо от используемой механики пробуждения. Возникшая задержка свидетельствует о наличии несанкционированного кода. Задержка может свидетельствовать и о лагах сервера. Но лучше перестраховаться и повторить попытку чуть позже, пока испытуемый не впишется в ожидаемую задержку. Обеспечит ли взломщик нужную задержку, или найдёт другую уязвимость в этой защите? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах