Это детективная история о краже автомобиля и о том, как мы выявили эпидемию высокотехнологичных угонов автомобилей. Она начинается с твита. В апреле 2022 года мой друг Иэн Тэбор написал твит о том, что его машину взломали вандалы, вытащили фару и отсоединили провода.

«В наше дурацкое время нет никакого смысла покупать хорошую машину. Проснулся рано утром и обнаружил вытащенный бампер и панель. Ещё хуже то, что выдернули провода из разъёма питания фар. Это точно не случайность, машина стояла на обочине, и остался след от отвёртки. Защёлки поломаны и т.д.»

Это казалось бессмысленным актом вандализма любителей разрушать прекрасное. Спустя три месяца ситуация повторилась.

«Зачем я вообще купил хорошую машину? Знаю, это проблемы первого мира, но почему бы им просто не оставить мою машину в покое? Ехал на работу с неработающими фарами, ещё больше царапин на краске, а на накладке больше нет креплений. Я не очень счастлив.»

На этот раз «хулиганы» вытащили бампер и отсоединили фару. Но оказалось, что оба инцидента не были вандализмом, потому что пару дней спустя произошло следующее:

«Теперь понятно, зачем они это делали. Машину украли! Моё приложение ToyotaUK показывает, что она сейчас едет. А я только вчера заправил полный бак. Отстой!»

Машина исчезла. И похоже, что её угнали благодаря фаре. Иэн работает исследователем кибербезопасности в сфере автомобилестроения, он уже получал баг-баунти за нахождение уязвимостей в машинах; читая его твит, я сначала подумал, что это хак ради трофея. Но оказалось, что это не так: вскоре после этого у соседа Иэна украли Toyota Land Cruiser. Для Иэна это стало личным делом, он хотел понять, как его машину угнали. В конце концов, в ней есть сложные системы безопасности, в том числе иммобилайзер двигателя. Как же преступникам удалось уехать?

Иэн провёл исследование, начав с телематической системы MyT, используемой во многих автомобилях Toyota. Автомобильная индустрия уже многие десятки лет устанавливает в машины встроенные системы диагностики. Это называется «on-board diagnostics» (OBD); когда Electronic Control Unit (ECU, электронный блок управления, ЭБУ) обнаруживает неполадку, он записывает код. В индустрии это называется «скинуть DTC» (Diagnostic Trouble Code). Система MyT отправляет DTC на серверы Toyota, а приложение MyT может их отображать.


Это коды, обозначающие выявленную неполадку и время её возникновения. В некоторые DTC включаются «стоп-кадры» — данные датчиков примерно в момент неполадки, позволяющие механику попытаться диагностировать неполадку (такими данными могут быть скорость автомобиля, температура на улице, напряжение аккумулятора и тому подобное). В современных автомобилях ECU соединены друг с другом каналом связи, в котором работает протокол, называемый CAN-шиной (CAN расшифровывается как Controller Area Network). Он был изобретён более тридцати лет назад и сегодня используется не только в легковых автомобилях: он встроен в суда, фермерское оборудование, самолёты, строительное оборудование и даже в космические корабли (например, CAN-шина сейчас находится на орбите Марса). Один из способов диагностирования неполадки блоком ECU заключается в том, что он не слышит ответа от другого ECU, с которым ему нужно общаться; часто такая диагностика выполняется при помощи таймаута: если сообщение CAN не принимается регулярно, то спустя какое-то время слушающий сообщения блок предполагает, что произошла неполадка или в CAN-шине, или в другом ECU. И иногда очевидно, что сбой произошёл в CAN-шине: например, если не отправляются собственные сообщения ECU или если оборудование интерфейса CAN-шины сообщает об утере связи.

Оказалось, что незадолго до угона машина Иэна сбросила множество DTC.

В передней части RAV4 есть ECU, управляющий огнями (ближним и дальним светом фар, а также поворотниками). В большинстве автомобилей есть такой ECU, потому что дни, когда свет включался простым переключателем, давно прошли: свет сегодня умный, он имеет такие элементы, как электродвигатели для выравнивания фар (когда в машине находится тяжёлый груз, фары поворачиваются, чтобы компенсировать это), фары для освещения поворотов, механизмы для автоматического выявления неисправностей фар, для включения насосов омывания водой фар и так далее. А на RAV4 этот ECU ещё и выбирает, какие светодиоды должны быть включены, чтобы не ослеплять едущих навстречу водителей, но всё-таки освещать остальную часть дороги.

DTC показывали, что связь с ECU управления светом была утеряна. Это неудивительно, потому что воры вырвали из него провода. Но DTC ещё и показывали сбой большого количества систем: контроля передних камер, системы управления гибридным двигателем и так далее. Как такое может быть? Это стало ещё одной зацепкой: вероятно, в блоках ECU не произошли неполадки, скорее, с ними была утеряна связь, и диагностика отметила это как неполадку. Общим фактором здесь стала CAN-шина.

Иэн провёл дальнейшее исследование, забравшись в дарк-веб, на сайты, где обсуждался угон автомобилей, поискал на форумах и нашёл видео с YouTube об угонах автомобилей. Он нашёл веб-сайт, продающий более сотни продуктов для обхода защиты автомобилей, от программирования фальшивых автомобильных брелоков до устройств «аварийного запуска» (сайт продавал всё это якобы тем владельцам машин, которые потеряли свои ключи, или тем взломщикам, которые вскрывают автомобили с согласия хозяев).

У обычного покупателя цены бы вызвали слёзы (до €5000), однако для банды автоугонщиков это было инвестицией. Существуют продукты, целью которых может стать множество моделей автомобилей, в том числе Jeep, Maserati, Honda, Renault, Jaguar, Fiat, Peugeot, Nissan, Ford, BMW, Volkswagen, Chrysler, Cadillac, GMC… и Toyota.

В случае Toyota, система «аварийного запуска» — это блок электроники, спрятанный внутри корпуса Bluetooth-колонки JBL. Это позволяет ворам убедительно всё отрицать: если их остановит полиция, то поначалу покажется, что у них с собой не очевидные инструменты для кражи автомобилей, а невинное музыкальное устройство. На веб-сайте был список моделей автомобилей, «поддерживающих» устройство для угона: среди моделей Lexus были ES, LC, LS, NX, RX, а среди моделей Toyota — GR Supra, Prius, Highlander, Land Cruiser… и RAV4. Иэн обсудил это устройство с Ноэлем Лоудоном из компании Harper Shaw, занимающейся криминальной экспертизой автомобилей, и решил купить его, чтобы подвергнуть реверс-инжинирингу. После этого он позвал меня на помощь, чтобы я разобрался, как устройство работает по CAN-шине.

Иэн называет меня гуру CAN: я работал с Volvo над её первой автомобильной платформой на основе CAN и спроектировал первое недорогое оборудование CAN для используемых в автомобилях мелких чипов, моя компания-стартап создавало ПО для сетевой связи CAN, использующейся во всех автомобилях Volvo, и я был членом команды, выигравшей Volvo Technology Award за систему CAN-сети (позже мой стартап был продан Bosch и стал процветающей частью группы Bosch ETAS, занимающейся технологиями ПО для внутренних автомобильных систем). Вместе с Иэном мы начали разбирать устройство для угона, чтобы понять, как оно работает.

Прежде чем двигаться дальше, мне нужно сделать пояснение: в этой истории я не буду раскрывать подробности, упрощающие создание копии подобного устройства для угона. Его создатель — преступник, и ни я, ни Иэн никогда не будем помогать таким людям. Я рассказываю эту историю для того, чтобы помочь правоохранительным органам и производителям автомобилей начать что-нибудь делать с этими устройствами (в конце я приведу несколько советов по тому, как производители и продавцы автомобилей могут улучшить своё ПО ECU для защиты от воров). Также я хочу подчеркнуть, что ситуация не относится только к Toyota: Иэн начал исследовать RAV4, потому что у него угнали RAV4, но и у других производителей есть модели, которые можно угнать схожим образом.

Новая методика угона: инъецирование через CAN


Современные автомобили защищены от угонов при помощи смарт-ключа, который общается с автомобилем и обменивается криптографическими сообщениями, чтобы ключ доказал машине свою подлинность. Такая схема обмена сообщениями в общем случае считается безопасной и не может быть взломана без наличия огромных ресурсов (доступных только на государственном уровне). Но угонщики не атакуют сложные элементы: они находят слабые места и обходят их. В прошлом это делалось при помощи Relay Attack (релейной атаки). В обычной ситуации автомобиль по радиоканалу просит ключ подтвердить себя, и когда он получает валидное сообщение, то открывается и отключает иммобилайзер двигателя. Угонщики нашли простой способ обойти эту схему: они использовали портативную радиорелейную станцию, которая отправляла сообщение автомобиля в дом, где хранятся ключи, а затем возвращала сообщение машине. Машина принимала сообщение как валидное, потому что оно таким и было — для разблокировки машины использовались настоящие ключи. Когда люди узнали, как работает релейная атака, от неё можно было защититься: владельцы автомобилей начали хранить ключи в металлической коробке (блокирующей радиосообщение от автомобиля), а некоторые производителей автомобилей теперь изготавливают ключи, уходящие в сон, если они находились без движения в течение нескольких минут (таким образом, они не получают радиосообщения от машины). Столкнувшись с этим поражением, но не желая отказываться от своего выгодного ремесла, угонщики нашли новый способ обхода защиты: обход всей системы смарт-ключей. Они придумали новую атаку: CAN Injection (инъецирование через CAN).

На схеме ниже показано, как блоки ECU в RAV4 соединены друг с другом шиной CAN (это очень упрощённая схема, на которой не показаны все ECU и CAN-шины).


Здесь показано три CAN-шины:

  • CAN-шина управления (соединённая с ECU передних фар, управления дверьми, телематики, кондиционирования и так далее)
  • CAN-шина силовой передачи (соединённая с ECU управления двигателем, гибридным аккумулятором и управления электродвигателем и так далее)
  • CAN-шина беспилотного управления (соединённая с ECU радара, передней камеры и автоматической парковки)

Атака инъецирования через CAN получает доступ к внутренней связи автомобиля (то есть к CAN-шине) и инъецирует фальшивые сообщения, как будто полученные от ресивера смарт-ключа; по сути, эти сообщения говорят: «ключ валидирован, разблокируй иммобилайзер». В большинстве автомобилей сегодня эти внутренние сообщения не защищены: ресиверы просто им доверяют. На схеме выше можно увидеть, как это работает для RAV4: угонщики подключаются к проводам красной CAN-шины (к которой подключён ECU ресивера смарт-ключа, показанный жёлтым цветом), а затем используют простое электронное устройство для отправки CAN-кадров на красную CAN-шину, чтобы отправить фальшивые сообщения «ключ валидирован», как будто они поступают от ресивера смарт-ключа. Шлюзовый ECU (простое устройство, которое просто копирует сообщения CAN, передавая их туда и обратно) копирует это фальшивое сообщение по зелёной CAN-шине, и система управления двигателем (синего цвета) принимает сообщение и деактивирует функцию иммобилайзера.

Затем угонщики могут использовать своё устройство CAN Injector для отправки другого фальшивого сообщения CAN блоку ECU дверей (тоже обозначенному синим); по сути, оно гласит: «ключ валиден, открой двери». То есть им даже не нужно повреждать машину, чтобы забраться внутрь: они могут просто открыть дверь, залезть в неё и уехать — и всё это без необходимости в ключе.

Устройство инъецирования через CAN


Вот как выглядит устройство для угона CAN Injector, которое купил Иэн:


Похоже на Bluetooth-колонку JBL. И внутри оно по большей части ею и является (не хватает только динамика).


CAN Injector присоединён к печатной плате JBL и залит большой каплей пластика. Иэн расплавил пластик тепловым феном, разобрался, как устройство соединено с печатной платой JBL, и даже выяснил, какие в нём используются чипы (сопоставляя контакты с чипами, пока не нашёл подходящий паттерн).

Оказалось, что компонентов там примерно на $10: чип PIC18F, содержащий оборудование CAN плюс предварительно запрограммированное в чип ПО (называемое прошивкой), приёмопередатчик CAN (стандартный чип CAN, превращающий цифровые сигналы от оборудования CAN в PIC18F в аналоговые напряжения, подаваемые на провода CAN) и дополнительная цепь, соединённая с приёмопередатчиком CAN (подробнее о ней ниже). Устройство получает питание от аккумулятора колонки и подключается к CAN-шине. CAN-шина — это, по сути, пара скрученных проводов, а в автомобиле есть множество соединённых вместе CAN-шин, или напрямую проводами, или связанных цифровым образом через компьютер-шлюз, копирующий сообщения CAN между CAN-шинами, к которым он подключён.

Устройство для угона должно подключаться к CAN-шине управления (красная шина на схеме) и выдавать себя за ECU смарт-ключа. Есть множество способов добраться до проводов этой CAN-шины, единственное, что требуется — провода должны подходить к краю автомобиля, чтобы до них можно было добраться (до проводов, погребённых глубоко внутри, не доберутся угонщики, пытающиеся украсть припаркованную на улице машину). Пока самым простым путём к этой CAN-шине на RAV4 являются фары: нужно вытащить бампер и получить доступ к CAN-шине через разъём передней фары. Может быть возможен и другой доступ: можно или пробить отверстие в панели, где проходит витая пара проводов CAN, или перерезать два провода и вставить между ними CAN Injector, но из-за уменьшения цены машины с дырой угонщики предпочитают самый простой путь (исследование Иэна показало, что в основном эти автомобили предназначаются для экспорта в контейнерах в страны Африки).

При первом включении CAN Injector ничего не делает: он прослушивает шину для получения сообщения CAN, чтобы понять, что автомобиль готов. Когда оно получает это сообщение CAN, то выполняет два действия: начинает отсылать поток сообщений CAN (примерно 20 раз в секунду) и активирует дополнительную схему, подключённую к приёмопередатчику CAN. Поток сообщений CAN содержит сигнал «смарт-ключ валиден», а шлюз перенаправляет его блоку ECU управления двигателем на другой шине. В обычном случае это вызвало бы сумятицу в CAN-шине управления: сообщения CAN от настоящего контроллера смарт-ключа начали бы конфликтовать с поддельными сообщениями от CAN Injector, а это могло бы помешать шлюзу перенаправлять инъецированные сообщения. Именно здесь на помощь приходит дополнительная схема: она меняет образ работы CAN-шины так, чтобы все другие ECU на этой шине не могли передавать сообщения. Шлюз продолжает слушать сообщения и, разумеется, может отправлять сообщения CAN-шине силовой передачи. Поток повторяется 20 раз в секунду, потому что такая система неустойчива, и иногда шлюз не слушает, потому что его оборудование CAN перезапускает себя (оно считает, что невозможность передачи сообщений — это показатель неполадки, что в каком-то смысле справедливо).

На корпусе Bluetooth-колонки JBL есть кнопка «Play», подключённая к чипу PIC18F. При нажатии на кнопку поток сообщений CAN немного меняется, они начинают давать команду ECU дверей на разблокировку дверей (как будто нажата кнопка «unlock» на беспроводном ключе). Затем автоворы могут отсоединить CAN Injector, залезть в машину и уехать. Вот запись с камеры слежения такого угона у другой жертвы (если вам не терпится, перейдите на 2 минуты 55 секунд):

Модифицированный приёмопередатчик CAN


Давайте вернёмся к модификации приёмопередатчика CAN, меняющего способ работы CAN (в этом разделе подробно объясняется, как работает CAN-шина, так что можете спокойно перейти к разделу «Побеждаем CAN Injector», где я говорю о том, как Toyota и другие производители могут остановить угонщиков).

В обычном случае CAN работает как огромный вентиль AND, где шина считывает логическую 1, если все устройства передают логическую 1, и считывает логический 0, если какое-либо устройство передаёт в неё логический 0. Это работает благодаря тому, что шина «плавает» на так называемом рецессивном уровне: два провода CAN, обозначаемые H и L, имеют напряжение примерно 2,5 В, а разница между ними близка к нулю (уровень плавает, потому что приёмопередатчик CAN в рецессивном состоянии имеет высокий импеданс). Это транслируется приёмопередатчиком CAN в логическую 1 (а контакт RX приёмопередатчика выводит логическую 1 на оборудование CAN, встроенное в чип основного процессора). Любой контроллер CAN может перевести шину на доминантный уровень (обычно это около 4,5 В на CAN H и около 0,1 В на CAN L, с разницей примерно в 4,4 В). Однако CAN Injector имеет другой приёмопередатчик CAN: у него есть режим, который активно выполняет переключение в рецессивное состояние, и никакое другое устройство CAN не может перевести шину в доминантное состояние (одно устройство может немного сместить напряжения CAN H и L, но этого недостаточно для изменения состояния на логический 0).

Иэн изготовил настольную CAN-шину для CAN Injector, воссоздав её электронику и добавив псевдо-ECU (у Иэна в этом большой опыт: он создал портативный эмулятор «автомобиль в чемодане», который используется для демонстрации методик хакинга автомобилей). Логический анализатор и осциллограф могут измерять влияние CAN Injector на реальную CAN-шину. Вот трассировка отправки псевдо-блоком ECU кадра CAN до того, как CAN Injector включает цепь подавления доминантного уровня:


Логический анализатор использует следующие линии:

  • INJECT-TX: контакт TX, соединяемый с приёмопередатчиком CAN от контроллера CAN устройства CAN Injector
  • INJECT-CS: включение подавления доминантного уровня (оно включено при высоком сигнале)
  • ECU-TX: контакт TX, соединяемый с приёмопередатчиком CAN блока ECU от контроллера CAN блока ECU
  • CAN H и CAN L: высокий/низкий сигналы CAN на витой паре CAN-шины (это аналоговые сигналы)
  • ECU-RX: контакт RX от приёмопередатчика CAN блока ECU к контроллеру CAN блока ECU

Всё это нормально и CAN-шина работает правильно.

▍ Сон и пробуждение


В начале процесса угона CAN Injector отправляет кадр CAN, чтобы разбудить CAN-шину. Когда автомобили «отключены», на самом деле они не отключены: блоки ECU переходят в режим сна с низким энергопотреблением. Их можно «разбудить» кадром в CAN-шине (который обычно поступает от ECU дверей или от ECU беспроводного ключа). Когда-то давно этот сигнал к пробуждению находился бы на краю CAN-шины, который является полем начала кадра (start-of-frame, SOF) кадра CAN. Однако оказалось, что на краю CAN-шины могут возникать радиопомехи, из-за чего автомобили беспричинно пробуждаются. Это становилось проблемой для владельцев автомобилей, паркующихся в аэропортах (где мощный сигнал радара вызывал фронт CAN-шины), потому что когда они возвращались из отпуска, то обнаруживали, что аккумулятор автомобиля разрядился. Современный подход к пробуждению заключается в использовании System Basis Chip, который представляет собой сочетание в одном чипе приёмопередатчика CAN, регулятора мощности и цепи пробуждения: эта цепь пробуждения имеет минимальную логику CAN и способна распознавать настоящие кадры CAN, а поскольку шум от радиолокационного поиска радара никогда не будет выглядеть как правильный кадр CAN, спонтанного пробуждения не происходит.

CAN Injector отправляет кадр пробуждения множество раз в секунду, пока не получит кадр CAN от пробудившегося ECU на CAN-шине. На этом этапе CAN Injector ещё не включил цепь включения доминантного уровня, поэтому разбуженный ECU может отправить свой кадр CAN. Затем CAN Injector подавляет доминантный уровень и начинает периодически отправлять свой поддельный кадр CAN (называемый spoof), притворяясь смарт-ключом.

▍ Подавление доминантного уровня


Механизм рецессивности/доминантности — основа работы CAN-шины: она использует его для того, чтобы определить, какой кадр должен идти следующим (это называется arbitration), и использует его для сигнализирования об ошибках. Основная цель подавления доминантного уровня в CAN Injector — не позволить другим устройствам CAN выполнять передачу, чтобы не было конфликтов между отправляемыми одновременно spoof и реальным кадром. В обычном случае этот конфликт вызвал бы долгий «цикл» ошибок в CAN-шине; это первый вопрос моей викторины по CAN:

Когда CAN Injector активно подавляет доминантный уровень, то, по сути, не позволяет всем остальным устройствам CAN выполнять передачу по шине, вынуждая сделать так, чтобы можно было получить только его поддельные кадры. Такая блокировка не только останавливает все остальные кадры, но и блокирует механизм ошибок протокола CAN, поэтому все другие ECU не могут отправить ошибку, чтобы остановить поддельные кадры CAN Injector. Это вторая цель механизма подавления доминантного уровня: он способен победить оборудование защиты CAN. Например, у производителя кремниевых устройств NXP есть продукт под названием Stinger: приёмопередатчик CAN со встроенной логикой защиты, распознающий поддельный кадр и уничтожающий его ошибкой CAN. Система CAN-HG компании Canis Labs тоже способна выявлять и уничтожать поддельные кадры при помощи ошибок CAN. Но методики защиты, основанные на использовании ошибок CAN, не могут победить CAN Injector с его модифицированным приёмопередатчиком, потому что он не позволяет никакому другому устройству CAN переключиться в доминантное состояние.

Когда ему не позволяют установить доминантное состояние, контроллер CAN застревает в цикле, пытаясь отправить кадр CAN, затем сдаётся и может попытаться повторить отправку позже. Это тема моего второго вопроса викторины по CAN; для иллюстрации проблемы я использовал определённую модель контроллера CAN (которая почти никогда не устанавливается в продаваемые автомобили) (реальный ECU будет иметь более сложную систему управления сетью в попытках повторно подключиться к CAN-шине после возникновения того, что выглядит как аппаратная неполадка).

Показанная ниже трассировка логического анализатора показывает, как псевдо-ECU в настольной CAN-шине Иэна пытается отправить собственный кадр CAN, но не может, потому что доминантный уровень подавляется.


В трассировке INJECT-CS имеет высокий сигнал, что приводит к включению доминантного уровня. INJECT-TX имеет высокий сигнал (бит рецессивности). Обычно это означает режим ожидания CAN, поэтому другие контроллеры CAN могут начать отправлять кадр CAN, пройдя arbitration. Линия ECU-TX показывает начало кадра CAN со start-of-frame (который в CAN является битом доминантности), но она не может перевести шину в логический 0 (ECU-RX застрял на логической 1), поэтому выполняет установленный процесс восстановления после ошибки CAN (всё это подробнее описано во втором вопросе викторины по CAN).
Показаны напряжения на проводах CAN H и CAN L; псевдо-ECU смог на небольшую величину изменить эти напряжения, но этого недостаточно, чтобы это стало заметно какому-либо из приёмопередатчиков CAN (в том числе и его собственному приёмопередатчику) как бит доминантности (как видно в трассировке на линии ECU-RX, застрявшей на логической 1).

Существует потенциальная проблема с запретом ECU на отправку битов доминантности: поле ACK CAN. Поле ACK в кадре CAN — это однобитное поле, используемое приёмопередатчиком для определения того, что его слушает хотя бы одно устройство, и что получен OK кадра. Приёмопередатчик отправляет логическую 1 для ACK (то есть бит рецессивности) и ожидает считать её обратно как логический 0, потому что обычно все приёмники отправляют логический 0 (то есть бит доминирования), чтобы сообщить, что они получили OK кадра. Если приёмник пытается отправить логический 0, но считывает логическую 1, то протокол CAN обрабатывает это как ошибку и не принимает кадр как правильный. Всё это означало бы, что шлюзовый ECU в RAV4 не получил бы поддельный кадр ECU смарт-ключа. А это, в свою очередь, означает, что поддельный кадр не будет перенаправлен на CAN-шину силовой передачи, чтобы его увидела система управления двигателем. Однако оказывается, что это не проблема: так как множество приёмопередатчиков CAN отправляет логический logic 0 одновременно, а когда все они делают это вместе, комбинированные приёмопередатчики могут подавить цепь включения доминантного уровня и подать в шину доминантное состояние. Это видно на следующей трассировке: в самодельной CAN-шине Иэна здесь находится четыре псевдо-ECU, и совместно они могут сместить напряжения до уровня, требуемого для доминантного состояния в шине и логического 0 в поле ACK поддельного кадра, переданного CAN Injector. Поэтому все ECU получают OK поддельного кадра CAN Injector.


Побеждаем CAN Injector


Для начала хорошие новости: CAN Injector можно победить, и это можно сделать чисто программным исправлением, то есть уже выпущенные автомобили можно защитить и мы, наконец, можем перестать устанавливать механический блокиратор руля после каждой поездки. Существует два уровня устранения проблемы:

  • Быстрый и грязный. Он использует знание о том, как сейчас работает CAN Injector и позволяет внести небольшое изменение, предотвращающее его работу. Это исправление не позволит решить проблему навсегда: преступник, спроектировавший CAN Injector, сможет отреагировать на изменения, после чего устройство, скорее всего, снова начнёт работать. Но это поможет выиграть время для другого исправления.
  • Обмен криптографическими сообщениями. Необходимо использовать шифрование и коды аутентификации для защиты кадров CAN, чтобы CAN Injector не мог создавать валидные поддельные кадры. При правильной реализации это решит проблему навсегда. Однако это требует определённых усилий (подробнее об этом ниже).

Эти исправления применимы ко всем моделям автомобилей, уязвимым к атаке CAN Injection (проблема охватывает всю индустрию автомобилестроения, не ограничиваясь конкретным производителем или моделью).

▍ Быстрое и грязное решение


В настоящее время CAN Injector создаёт хаос в CAN-шине управления: делая шину рецессивной, он вызывает у контроллеров CAN блоков ECU отказ в передаче сообщений и невозможность сбоя с конкретным типом ошибки CAN: ошибки бита перехода из доминантного в рецессивное состояние. Такая ошибка очень редка и обычно означает аппаратную неполадку (она видна в сброшенных на сервер DTC). Шлюзовый ECU (в другой модели — ECU иммобилайзера двигателя) может мониторить свой контроллер CAN на возникновение таких ошибок и следовать максиме Яна Флеминга: «Один раз — случайность, дважды — совпадение, трижды — вражеское действие». Поэтому шлюз можно перепрограммировать так, чтобы он передавал дальше кадр CAN смарт-ключа, только если он недавно передавал кадр CAN без проблем и в недавнем прошлом в CAN-шине не было битовых ошибок такого типа. «Недавним прошлым» можно считать несколько секунд, что решит проблему ложноположительных срабатываний (когда на самом деле возникает редкая, но реальная неполадка): водитель может просто немного подождать и повторить попытку снова.

Это быстрое и грязное решение можно победить, модифицировав CAN Injector (мы не будем раскрывать, как это сделать). Но ужасно примитивный способ работы CAN Injector даёт нам понять, что это займёт приличное время. Это позволит производителям автомобилей выиграть время для внедрения полнофункционального исправления.

▍ Обмен криптографическими сообщениями


Правильным решением для устранения атаки CAN Injection будет применение в CAN политики нулевого доверия (или, по крайней мере, для конкретных сообщений в конкретных CAN-шинах). Политика нулевого доверия означает, что ECU не доверяет автоматически сообщениям от других ECU, а требует доказательств, что они подлинные. Для этого стоит использовать Hardware Security Module (HSM, аппаратный модуль безопасности); в автомобилестроении для них есть стандарт (называемый Secure Hardware Extensions, или SHE). В обычном случае это подразумевало бы использование чипов, включающих в себя оборудование, из-за чего уже существующие автомобили модифицировать было бы невозможно. К счастью, возможна программная эмуляция HSM, и Canis Labs реализовала её для SHE HSM: для неё требуется примерно 3 КБ кода и 200 байт ОЗУ. Использование ПО для кодирования и декодирования защищённого сообщения CAN занимает около 40 микросекунд времени CPU. В прошивке ECU обычно есть немного свободной памяти, и эта система, скорее всего, потребует около 0,05% общего времени CPU. Иными словами, эту защиту легко будет разместить в новой прошивке (на самом деле, Canis Labs успешно сотрудничала с армией США, создавая схему шифрования для CAN в ECU уже имеющихся военных транспортных средств).

Такой подход с использованием шифрования означает более существенные изменения, чем быстрое и грязное решение:

  • Криптографическим сообщениям требуется больше места в CAN-шинах для передачи кодов аутентификации (в созданной Canis Labs схеме CryptoCAN используется пара зашифрованных кадров CAN для отправки одного незашифрованного кадра CAN; в других схемах используется половина полезной нагрузки кадра CAN).
  • Блокам ECU нужно предоставить секретные ключи (обычно это делается на производстве), чтобы в каждой машине использовались свои ключи (в противном случае создателю CAN Injector достаточно будет просто купить одну машину и использовать инструменты для извлечения ключей, после чего он сможет взломать любую машину). Возможно, также понадобится система повторного предоставления ключей ECU: если ECU нужно заменить или переустановить в другой автомобиль, то ему понадобятся новые ключи, соответствующие тем, которые хранятся в других ECU.

Первое изменение не так уж сложно реализовать, потому что защищать нужно будет только один или два кадра CAN (поэтому потребуется лишь небольшая часть места в CAN-шине). Но для второго потребуется создание инфраструктуры управления ключами и их распространения (для чего, как минимум, необходимы инструменты для инъецирования ключей и база данных для хранения ключей). Применение стандарта SHE HSM как минимум будет означать, что эти инструменты стандартны и что возможно использование готовых решений. Однако за долгие годы производители автомобилей научились быть аккуратными с изменениями в автомобильных системах: то, что кажется быстрым и простым, часто оказывается не таким, и даже простое исправление требует дорогостоящего тестирования, чтобы избежать непредусмотренных последствий. Поэтому для реализации потребуется какое-то время.

Дальнейшие шаги


Иэн попытался связаться с Toyota, чтобы обсудить атаку CAN Injection и предложить свою помощь, но без особого успеха. Частично это вызвано тем, что крупные корпорации с трудом реагируют на проблемы с безопасностью. А частично тем, что это не раскрытие уязвимости, поэтому установленные Toyota процессы здесь неприменимы. Обычный процесс раскрытия уязвимости заключается в том, что этичный хакер находит уязвимость, которую преступники потенциально могут использовать, связывается с производителем, у которого есть время, чтобы устранить уязвимость. Это называется уязвимостью нулевого дня (потому что производитель обязан действовать быстро, потенциально имея ноль дней для исправления ошибки до того, как её начнут использовать преступники). Атака CAN Injection не является уязвимостью нулевого дня: скорее, это уязвимость минус 365 дней, потому что преступники уже использовали её для угона автомобилей (и делали это активно: произошёл всплеск в угонах автомобилей без помощи ключей, но правоохранительные органы просто предположили, что это были релейные атаки). Нет никакого риска в том, что описание атаки CAN Injection приведёт к использованию её преступниками: они уже широко её используют, и именно благодаря её использованию с автомобилем Иэна ему пришлось превратиться в цифрового детектива криминальной экспертизы.

▍ Доступ к автомобилю


Сейчас Иэн пытается получить доступ к RAV4, чтобы проверить, действительно ли его самодельная CAN-шина точно копирует всё поведение CAN Injector. Доступ также позволит протестировать реальный CAN Injector при помощи инструментов (в том числе осциллографом и логическим анализатором). Это невозможно сделать без официальной мастерской и автомобиля, потому что атака приводит к потоку DTC, которые необходимо сбросить при помощи авторизованных инструментов. Пока получить доступ не удаётся. Если какой-то производитель автомобилей или организация захочет бороться с атаками CAN Injection, то вы можете связаться с нами.

▍ Реверс-инжиниринг прошивки


Полный анализ работы CAN Injector должен включать в себя реверс-инжиниринг его прошивки. Используемая CAN Injector PIC18F может быть защищена от считывания её прошивки, но существует по крайней мере две методики обхода этой блокировки. Однако ни одну из них нельзя реализовать без риска уничтожения устройства, а одна из методик требует доступа к дорогостоящему специализированному оборудованию. Это уже выходит далеко за рамки любительского исследования и требует серьёзных ресурсов. В идеале этим проектом могла бы заняться организация, обеспечивающая безопасность автомобилей, а сам проект должен стать важным для производителей автомобилей, желающих понять, как угонщики используют CAN Injection, и выработать наиболее практичные способы борьбы с этой атакой.

Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх ????️

Комментарии (83)


  1. hierarchical
    24.04.2023 13:35
    -3

    1. editor_ruvds
      24.04.2023 13:35
      +20

      По вашей ссылке новость, написанная на основе этой статьи. А а у нас полный перевод оригинала для тех, кто хочет ознакомиться с первоисточником.


  1. justfox2
    24.04.2023 13:35
    +23

    Работать с уязвимостями машин и не догадаться, что не просто так кто-то ковыряется в машине два раза? Принял бы хоть какие-то меры, поставил машину в другое место, на платную парковку, использовал механическую защиту (если разбирается в сфере, должен понимать, что любые электронные защиты обходятся). Может у него, конечно, хорошая страховка, поэтому он так спокоен.


    1. csharpreader
      24.04.2023 13:35
      +4

      Человек был занят постами в Твиттере, что вы.
      Он старательно фиксировал хронологию событий.


    1. Lissov
      24.04.2023 13:35

      Может у него, конечно, хорошая страховка

      Вот кстати страховка может эти же аргументы привести, потому может он специально "оставил следы" что подумал что это просто вандализм.


    1. Tippy-Tip
      24.04.2023 13:35

      использовал механическую защиту (если разбирается в сфере, должен понимать, что любые электронные защиты обходятся)
      Так автор (не переводчик) топит за отмену механической защиты.


  1. strvv
    24.04.2023 13:35

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

    Здесь, в разделе криптография, были отчёты об лёгком шифровании для микроконтроллеров.

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

    Если идут ошибки или прошёл срок ответа - включать сигнализацию - возможно идут попытки взлома..


    1. avitek
      24.04.2023 13:35

      Вопрос - пойдут ли автопроизводители на это? В обозримом будущем вряд ли.


      1. lorc
        24.04.2023 13:35
        +3

        В ближайшем будущем - точно нет. В automotive типичный цикл разработки - лет пять... Собственно, поэтому только сейчас в машинах начинают появляться довольно очевидные фичи типа синхронизации со смартфоном.


        1. LonelyCat
          24.04.2023 13:35

          Над этим уже работают и довольно активно, как минимум подписанные сообщения - уже реальность. Почитайте про Secure Onboard Communication (спецификации AUTOSAR) и про In-Vehicle Key Management System - вот тут, например https://www.mdpi.com/2079-9292/8/9/1026


      1. Lissov
        24.04.2023 13:35

        Только если законодательно заставят. А так им это просто совсем незачем.

        Далеко не все производители продают сигнализации, вот им может хоть немного интересно.


      1. alexdora
        24.04.2023 13:35

        Справедливости ради, речь тут о тойоте. В ней не понятно когда и почему, но в мерседесах/бмв и точно в РР уже с 2016 года нет классической кан шины. Там МультиКан и т.п. каждый называет по своему. И уже там используется оптика для обмена, поэтому последние года «взломы» машин для перепрошивки или активаций каких-то функций стал появляются с большой задержкой.

        на самом деле это и к лучшему. Но запчасти станут дороже. К примеру раньше были обычные тормоза…так сказать простые. А теперь новая можа - электрические. С одной стороны они очень крутые, с другой ты потом будешь очень рад узнать при ремонте что оказывается у тебя на суппорте тормоза не просто моторчик который колодку зажимает, а моторчик с мозгом который получает команды по оптике, просчитывает параметры и делает действия. И естественно это не ремонтируется и меняется блоком стоимость…вообщем вы поняли


        1. Shklo
          24.04.2023 13:35

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


      1. Kelsink
        24.04.2023 13:35
        +1

        Хундай/Киа вообще не ставили иммобилайзеры на большую часть своих машин для американского рынка (с 2014 до конца 2020 года). Скорее всего и дальше бы это делали, но разгневанные покупатели постарались. Почитайте - это увлекательно. Невероятное число угонов (в том числе у моих знакомых), дорогие страховки и т.д.


    1. lorc
      24.04.2023 13:35

      Не, вся ассиметричная криптография очень тяжелая в плане вычислительной сложности. Да и не нужна она здесь. Банального MAC (message authentication code) будет более чем достаточно. Или даже режим GCM, если хочется еще и шифрования сверху.


      1. nixtonixto
        24.04.2023 13:35
        +2

        Модуль AES сейчас стоит даже в копеечных старших STM32, а для automotive-контроллеров модуль аппаратного шифрования уже почти обязателен.


        1. firegurafiku
          24.04.2023 13:35

          Модуль AES сейчас стоит даже в копеечных старших STM32

          Так AES — симметричный блочный шифр. На его основе легко сделать «банальный MAC», но ускорить асимметричные шифры такой аппаратный модуль ни капли не поможет.


          1. strvv
            24.04.2023 13:35

            Да и фиг с ним, тогда симметричные, aes, если реализован, прошитый в необходимые блоки и в группе вендор-расширений стандарта просто контрольный обмен с жёстким таймаутом и контролем ошибок. Сразу несколько факторов атак будут прикрыты.


  1. Mishootk
    24.04.2023 13:35

    Какие технические причины размещать блок иммобилайзера и блок контроля двигателя по разные стороны гейта?


    1. lorc
      24.04.2023 13:35
      +5

      По той же причине почему все устройства не висят на одной общей шине: ради безопасности. Основная цель гейта - работать как файрволл между разными сетями. Шина двигателя самая безопасная и самая тупая. Там находится только то, что реально нужно для управления двигателем. И шлюз должен пропускать туда только небольшой перечень пакетов. Представьте что было бы, если бы смарт-замок вдруг решил что он - педаль газа и начал бы слать в двигатель команды "полный вперед". Поэтому смарт-замок сидит с другой стороны.


      1. Mishootk
        24.04.2023 13:35

        Шина управления двигателем пусть остается с критичными компонентами. Второй вход в блок управления двигателем от второй шины на которой сидит ключ. Ответная часть в мозгах движка отвечает только за функцию иммобилайзера. По сути тот же гейт, только не вынесенный на проводах, а стоящий на плате управления двигателем. Он может быть даже полностью электрически развязан с мозгами, держит всего лишь один разрешающий сигнал. Как бы второстепенная сеть с ума ни сходила, если иммобилайзер дает добро, мотор работает. Если не дает, не работает (более умные алгоритмы строги на стоящем авто и не вмешиваются в двигатель в движении).


        1. Lissov
          24.04.2023 13:35
          +2

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

          Смысл САN-шины именно в том, чтобы вообще никаких отдельных гейтов не было. Раньше как раз и делали аппаратно, но с шиной можно независимо разрабатывать и менять версии блоков, что Бош весьма успешно делает.

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


  1. aborouhin
    24.04.2023 13:35
    +1

    Что-то я ничего не понимаю. Автомобиль постоянно передаёт информацию на сервер производителя, угонщиками эта передача не заблокирована (раз автор увидел, что машина в движении) - но автомобиль не был тут же найден по этим данным? Или там местоположение не передаётся одновременно с диагностикой (странное решение, если так)?


    1. lorc
      24.04.2023 13:35

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


      1. aborouhin
        24.04.2023 13:35
        +1

        Судя по третьему твиту автора, машина была в движении в тот самый момент, когда он его писал. Ну, возможно, написать твит для автора было более срочным делом, чем позвонить в полицию :)


        1. Lissov
          24.04.2023 13:35

          Во-первых наверное позвонил, во-вторых «в движении» совсем не означает, что передаются координаты. Это может быть просто статус, чтобы не работали некоторые функции.


          1. aborouhin
            24.04.2023 13:35

            Так вот этому и удивился, уж если статус передаём, то логично и местоположение, самая же востребованная функция, раз уж всё равно машина всегда онлайн. Сам не имею счастья владеть столь современным автомобилем, так что интересно, как оно нынче устроено.


            1. Lissov
              24.04.2023 13:35
              +1

              если статус передаём, то логично и местоположение

              Логично, и может быть передается, но показать не законно.

              Мне как родителю разрешено требовать местоположение телефона детей только до 14 лет, а потом только с явного согласия… Аналогично должна быть опция угонщику легальному (со)владельцу легко отключить показ владельцу. А зачем тратить деньги на опцию, если ее не получится продать?


              1. georgevp
                24.04.2023 13:35

                А сим-карта телефона зарегистрирована на ребёнка, или на Вас?


                1. Lissov
                  24.04.2023 13:35

                  На меня, но это не имеет значения. Значение имеет аккаунт на телефоне, айфон без джейлбрейка позволяет включить родительский контроль только ребенку, а без него геолокация легко отключается.


                  1. georgevp
                    24.04.2023 13:35

                    Если Вы на территории России, то возраст совершеннолетия - 18 лет. аккаунт на телефоне установить Вы можете сами.


            1. grafdezimal
              24.04.2023 13:35
              +1

              У БМВ передачу местоположения надо отдельно разрешить в настройках чтобы оно показывалось в Connected-App. Почему самая востребованная функция то? Угонщики её наверняка сразу отключают, а я и так обычно знаю где моя машина. Ни разу ещё не использовал если честно, хотя и включил.


              1. aborouhin
                24.04.2023 13:35
                +1

                Ну я предполагал, что такая функция должна отключаться где-то в личном кабинете или приложении, и вряд ли угонщики параллельно своим манипуляциям с CAN-шиной смогли "угнать" ещё и пароль от него.

                О востребованности сужу по тому, что даже отдельные GPS-маячки вполне себе бодро продаются, у самого такой был (после того, как предыдущую машину угнали, как раз и поставил)

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


                1. Lissov
                  24.04.2023 13:35

                  GPS-маячки вполне себе бодро продаются

                  Если я правильно понимаю, то маячок легален только если Вы не используете его для скрытой слежки - например, имеете явное согласие на слежку от всех легальных водителей. Например, я решил что машиной пользуемся только мы с женой, и оба знаем как его отключить - тогда ок. А как фабричное дефолтное решение не проходит, потому что очевидно есть другие клиенты.


                  1. aborouhin
                    24.04.2023 13:35
                    +1

                    Конечно, всех нюансов применительно к законодательству всех стран я не знаю, но не вижу глобальных причин, почему бы не сделать получение таких согласий сферой ответственности владельца (грозно предупреждая его при изменении настройки).

                    Чем оно в этом плане отличается от какого-нибудь телефона или ноута, где история геолокации в настройках спокойно включается/выключается, при этом тем самым телефоном или ноутом вполне могут пользоваться разныме люди (ну ОК, с ними это гораздо реже, чем с машинами, случается, но сам прицнип-то от этого не меняется).

                    Да и производители тех же маячков, систем слежения за корпоративным транспортом и т.п. тоже вполне легально существуют. Да, пользователь системы может нарушить чью-то прайваси, - ну так он и будет за это отвечать.

                    В общем, всем спасибо за комментарии, понял, что тема мутная :) Думал, что с современными машинами, которые уже почти Car as a Service, всё с этим гораздо проще.


                    1. Lissov
                      24.04.2023 13:35

                      Чем оно в этом плане отличается от какого-нибудь телефона или ноута, где история геолокации в настройках спокойно включается/выключается

                      Ничем не отличается, взломав код разблокировки/иммобилайзер можно как звонить/ехать так и отключить трекинг в один клик.

                      грозно предупреждая его при изменении настройки

                      Это предупреждение надо программировать, тестировать, …

                      телефоном или ноутом вполне могут пользоваться разныме люди

                      Телефоном или ноутом пользуются с индивидуального аккаунта, к которому все привязано. Индивидуальных Логинов в машину пока не видел.

                      Да, пользователь системы может нарушить чью-то прайваси, - ну так он и будет за это отвечать.

                      В том и дело, что отвечает тот, кто установил. Потому производитель не устанавливает всем по умолчанию, а сами - пожалуйста.


                1. Gummilion
                  24.04.2023 13:35

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


    1. jazz-y
      24.04.2023 13:35
      -1

      Автомобиль может быть найден и по другим данным - описанию, номерам, уличным камерам. Проблема обычно в том, что он не стоит на месте и там где он находится в данный момент нет тех у кого есть актуальные данные о его местонахождении.


    1. VanaEestlane
      24.04.2023 13:35
      +6

      У Тойоты в их приложении показывается только место где двигатель заглушили, скорее всего для экономии интернет трафика, потому что владелец не платит за этот интернет, он вшит в машину, какой-то глобальный роуминг по регионам, купленная в ЕС Тойота не передает данные остановки в РФ. Но не уверен что из-за экономии, потому что в машине 7 камер, владелец видит только одну, заднюю. Одна из камер опознает дорожные знаки, вторая следит за усталостью водителя. Реально подбешивает: «через 1 км заправка, советую отдохнуть, выпить кофе, вы выглядите уставшим». Что делают остальные 4 камеры, не знаю. Скорее всего собирают телеметрию для обучения автопилота.

      Европейская версия очень сильно отличается от машины для СНГ. А приложение MyT by Toyota имеет странный функционал, владелец машины видит сильно меньше сервисных служб. На гибриде же нет запаски, если проколол, то надо нажать на кнопку, Тойота обещала что в любой точке ЕС приедет мобильная шиномонтажка в течении часа. Я как то звонил официалам, искал где посмотреть давление в шинах, они в режиме реального времени это видят оказывается. А владелец не видит. Мануал к машине 800 страниц.


  1. 104u
    24.04.2023 13:35

    Можно ли просто запретить шлюзу принимать пакеты от всего постороннего, если не было сигнала с иммобилайзера (смарт ключа, либо как это правильно назвать)? Как я понял, физически can шина у них не общая, а зачем заблокированной машине принимать сигналы с каких-то левых устройств?


    1. lorc
      24.04.2023 13:35
      +3

      Ну так как раз это "посторонее" ключом и прикидывается. Это как если бы у вас в локальной сети кто-то склонировал MAC-адрес сервера и заодно глушил бы все пакеты от настоящего сервера.


      1. 104u
        24.04.2023 13:35
        -1

        Так нужно физически исключить такой вариант. Если в авто куча CAN шин, можно заставить шлюз принимать сигнал только с той, на котором сидит ключ и только после этого разрешать приём с других (если взять аналогию с сетью — условный LAN1 управляющий, если не пришёл сигнал на разрешение работы — остальные игнорируем). При атаке, когда использовали репитер это не прокатит, но что насчёт тех, где выламывали фары? Сейчас перечитал ещё раз, у них фары и иммобилайзер на одной физической шине сидят? Если да, то это хрень какая-то, им жалко было одной лишней физической шины?


        1. RealHuman1
          24.04.2023 13:35
          +2

          Ну вот да, почему один и тот же "мозг" занимается и фарами, и зажиганием (да и при желании можно видимо подвесить в фару "жучок" и на автобане при скорости в 150км\ч водителю в лицо подушкой безопасности выстрелить со всеми вытекающими во всех смыслах последствиями)?
          По-хорошему, должны быть минимум две отдельные системы: 1) фары, дворники, магнитола, etc. (комфорт), 2) открытие дверей, включение зажигания, и уж тем более управление автоматической коробкой передач (непосредственно управление движением автомобиля) - отдельно и с бОльшей степенью защиты.


          1. grafdezimal
            24.04.2023 13:35
            +1

            Справедливости ради во времена, когда всем этим управляла дискретная железная логика (кнопка/контакт/отдельный провод) это было сделать наверно даже проще. Но видимо риск всё таки мал, проще же таким жучком тормозной шланг прожечь…


            1. 104u
              24.04.2023 13:35

              Но если прожечь шланг — машина может и не доехать до автобана, водитель раньше заметит, что тормозов нет :)


          1. esaulenka
            24.04.2023 13:35

            1) фары, дворники, магнитола, etc. (комфорт)

            Как ваш внутренний параноик рассматривает выключение фар с одновременным включением омывателя и ГРОМКОГО звука в магнитоле "на скорости в 150 км/ч" ?

            Убить человеков можно кода проще и надёжнее, без жучков в фарах, тут рассматривается менее наказуемое деяние - похищение авто.


          1. 104u
            24.04.2023 13:35

            Типа того я и хотел предложить. Возможно, получился "наезд", почему мне и воткнули минус :) Просто мне действительно непонятно, как можно всё это на одну шину повешать


          1. SergeyMax
            24.04.2023 13:35
            +1

            По-хорошему, должны быть минимум две отдельные системы

            В реальности систем гораздо больше: мотором управляет модуль ECM, ключами и дверями - блок BCM (body control module), у АКПП свой отдельный блок управления, у муфты ПП - свой. Мультимедиа - это еще пара отдельных блоков. Есть даже интеллектуальный модуль управления питанием, который на это всё подает напряжение.


    1. Lissov
      24.04.2023 13:35
      +1

      зачем заблокированной машине принимать сигналы с каких-то левых устройств?

      Включить прогрев или кондиционер, открыть окно, отработать экстренную кнопку, ответить на запрос про уровень топлива, включить сигнализацию, если дверь открыта без сигнала от иммобилайзера. А может даже и прошивку по воздуху обновить не в движении.

      Полезных вариантов много - даже если лично Вам они не полезны.


      1. 104u
        24.04.2023 13:35

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


        1. Lissov
          24.04.2023 13:35

          Прогрев или кондиционер без запущенного двигателя не включишь

          На электро и гибридах почему нет?

          зачем открывать окна — не приходит мне в голову, но мб кому-то и надо...

          Мне тоже, но это функционал, который мне показывал дилер БМВ.

          В его интерпретации - если забыл закрыть окно, могу закрыть не выходя их дома.

          вешать фары с иммобилайзером на одну шину — вот это странное решение, достаточно физически их развязать (раз у нас в схеме все равно есть шлюз)

          Да, это сильно улучшит безопасность, но вектор атаки не уберёт - злоумышленнику придётся залезть чуть глубже чем до фары. Скорее всего "странное решение" это просто легаси, потому что на тот момент так было дешевле и никто сильно о безопасности не думал.


          1. 104u
            24.04.2023 13:35

            На электро и гибридах почему нет?

            На них можно, хотя мы вроде бы не о них. Но всё это всё равно вряд ли должно быть на одной шине

            Мне тоже, но это функционал, который мне показывал дилер БМВ.

            В его интерпретации - если забыл закрыть окно, могу закрыть не выходя их дома.

            Опция закрывания есть и в сигналках, к ней как раз вопросов нет, ниже написали вариант, но лично я вряд ли бы таким пользовался

            Да, это сильно улучшит безопасность, но вектор атаки не уберёт - злоумышленнику придётся залезть чуть глубже чем до фары. Скорее всего "странное решение" это просто легаси, потому что на тот момент так было дешевле и никто сильно о безопасности не думал.

            Если злоумышленнику придётся добраться до ЭБУ, то любая защита уже бесполезна, он просто воткнёт другой. Вариант с отдельной шиной сводится как раз к тому, чтобы сложность доступа туда была аналогичной


            1. Lissov
              24.04.2023 13:35

              Если злоумышленнику придётся добраться до ЭБУ, то любая защита уже бесполезна, он просто воткнёт другой.

              Да и открыть капот не намного сложнее, чем выковырять фару, и может даже не в любой машине. Спросите у местного автоклуба. А далее если есть общая незашифрованная шина хоть с чем нибудь, туда подсоединиться куда проще и дешевле, чем носить с собой совместимый ЭБУ.

              Отдельная физически защищенная шина сильно дороже (не только в проектировании но и в поддержке). А зачем это производителю?


              1. 104u
                24.04.2023 13:35

                Да и открыть капот не намного сложнее, чем выковырять фару, и может даже не в любой машине. Спросите у местного автоклуба. А далее если есть общая незашифрованная шина хоть с чем нибудь, туда подсоединиться куда проще и дешевле, чем носить с собой совместимый ЭБУ.

                Здесь, в принципе, согласен. Плюс если они подготовились — это будет очень быстро, а владелец может и не понять, что это было

                Отдельная физически защищенная шина сильно дороже (не только в проектировании но и в поддержке). А зачем это производителю?

                Ну зачем-то же воткнули тот же иммобилайзер? В современном мире отдельная (даже и шифрованная) can разве является проблемой?


                1. Lissov
                  24.04.2023 13:35

                  Не проблема, а расходы. Вопрос даже не в стоимости шины, а в стоимости создания новой экосистемы всех блоков.

                  даже и шифрованная

                  А вот в шифрование верю. Во-первых потому, что его может просто потребовать регулятор.

                  А во-вторых, потому что производители идут в сторону продажи уже имеющихся функций по подписке. Если делать через интернет, то уже надо делать шифрование.

                  Кстати, в моем мотоцикле система управления торможением двигателя (нечто похожее на АБС) активируется чисто программно, значит там уже есть шифрование в каком-то виде. То есть это таки не проблема.


            1. esaulenka
              24.04.2023 13:35
              +1

              На них можно, хотя мы вроде бы не о них.

              Извините, что я очень душный, но на первой же фоточке в статье отчётливо видно слово HYBRID.

              Да, тойота давным-давно распространила технологию от Приуса практически на весь свой модельный ряд.


        1. konst90
          24.04.2023 13:35

          зачем открывать окна — не приходит мне в голову, но мб кому-то и надо

          Чтобы машину проветрить меньшим набором действий, чем "подойти, сесть в машину, включить зажигание, открыть окна". Просто с десяти метров открываешь с брелка окна, и всё.


          1. 104u
            24.04.2023 13:35

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


            1. konst90
              24.04.2023 13:35

              Да, на своем опыте и пишу. Обычно пользуюсь, когда возвращаешься откуда-нибудь к машине, но ехать ещё рано.

              Работает это только если машина снята с охраны, а при постановке на охрану стекла поднимутся автоматом. Поэтому забыть сложно - уходя от машины, всё равно включишь сигнализацию.


            1. Lissov
              24.04.2023 13:35

              можно запретить любые манипуляции с эбу, коробкой, пока со специально отвязанной от всего шины не придёт разрешение

              Можно, но дорого. А можно в одной шине криптографию добавить, это заметно дешевле. Но тоже дорого.


  1. venanen
    24.04.2023 13:35

    В моем совершеннолетнем опеле все блоки прописаны под конкретный автомобиль, и для их отшивки/пришивки нужен т.н. carpass, который есть только в мануале. Просто так подкинуть блоки вроде магнитол/экранов/приборок - не выйдет. Правда не знаю, можно ли подкинуть другой ЭБУ.
    Но это аж 2004 год, понятно, что и carpass уже умельцы доставать умеют, но технологии то были.

    UPD: подправлю себя. Есть предположение, что проверка этих кодов на стороне самого блока, то есть с другой машины не поставить, но условно-взломанный должен встать и работать.


  1. damewigit
    24.04.2023 13:35

    Угонщики нашли простой способ обойти эту схему: они использовали портативную радиорелейную станцию, которая отправляла сообщение автомобиля в дом, где хранятся ключи, а затем возвращала сообщение машине

    Мне всегда было интересно, почему нельзя защитится от этой атаки, жестко ограничив время ответа ключа при обмене ключами? Ключ ведь простой девайс, при одинаковых условиях, будет всегда отвечать за равные промежутки времени. Дополнительный тракт в виде радиоканала, добавит какие-то микро секунды которые легко спалить, и определить атаку.


    1. TheHangedKing
      24.04.2023 13:35
      +1

      Жители снежных стран, которые зимой заводят машину с брелка с 30-го этажа, чтобы прогрелась, не одобрят.


    1. Lissov
      24.04.2023 13:35

      Дополнительный тракт в виде радиоканала, добавит какие-то микро секунды которые легко спалить

      Учитывая скорость света, 150 метров добавит одну микросекунду, которую совсем не легко спалить.


      1. blind_oracle
        24.04.2023 13:35

        ToF датчики, которые меряют расстояние по времени пролёта света, вполне палят


        1. Lissov
          24.04.2023 13:35

          А кто сказал, что ToF это «легко»? Сколько стоит такой датчик?


          1. blind_oracle
            24.04.2023 13:35

            VL6180X от STM стоит в больших партиях меньше 3$


            1. nikolz
              24.04.2023 13:35
              +1

              VL6180X  1 шт стоит 1.5$, но это 0.5 м,

              TOF на 10 метров стоит примерно 50$


              1. blind_oracle
                24.04.2023 13:35

                Потому что лазеры нужны мощнее. Но к топику это не относится - задержку сигнала вполне можно измерить недорого. Другой вопрос - имеется ли в этом смысл.


              1. esaulenka
                24.04.2023 13:35
                +1

                Это про инфракрасный диапазон. Решения для радиодиапазона есть у TI, у Nordic есть измерение угла (можно использовать несколько приёмников и делать триангуляцию). Всё это сравнительно недорого.

                Но тут две проблемы - потребление во-первых (у нас ключ от авто, который заряжать каждый день не принято) и легаси во-вторых (переделать ВСЁ не так и просто...).


    1. shadrap
      24.04.2023 13:35
      +1

      На этот счёт уже давно существуют штатные решения,как правило кейлесс отключение- это закрытие с сенсора и после кнопка на брелке. Гораздо проще. Потому как это и без того очень ошибкоемкая система, если ещё тайминги вставить...


  1. Stas911
    24.04.2023 13:35

    Как я понял, способ не особо быстрый, тч достаточно ставить машину на ночь в гараж


  1. SozTr
    24.04.2023 13:35
    +2

    например, CAN-шина сейчас находится на орбите Марса
    image


    1. TheHangedKing
      24.04.2023 13:35

      Стармен на солнечной орбите, вроде.


  1. Azya
    24.04.2023 13:35
    +1

    История про угон же выдумана для красивой обертки к теоретическим выкладкам, нет?


  1. vvbob
    24.04.2023 13:35

    Машину от угона можно более-менее защитить только с помощью механических противоугонов, и надежной охраны, и то это не дает 100% гарантии, а все эти электронные защиты достаточно просто и легко обходятся.


  1. Didimus
    24.04.2023 13:35

    Это вот та самая тойота?

    https://habr.com/ru/companies/pvs-studio/articles/310862/


  1. esaulenka
    24.04.2023 13:35
    +1

    Это быстрое и грязное решение можно победить, модифицировав CAN Injector (мы не будем раскрывать, как это сделать). Но ужасно примитивный способ работы CAN Injector даёт нам понять, что это займёт приличное время.

    Блокировка не всего трафика, а только определённых сообщений была сделана ещё пару лет назад инженерами Старлайна (и позднее повторена инженерами другой конторы). Ничего суперсложного там нет, обычный STM32 справляется с большим запасом.

    ECU не доверяет автоматически сообщениям от других ECU, а требует доказательств, что они подлинные

    Послушать бы настоящих специалистов, но мне почему-то кажется, что сообщения блока Smart Key уже имеют подпись. Она короткая, один байт, но она там есть. Некая реализация диалога там тоже есть - при получении неверного пакета блок Body выдаёт новый пакет с солью (?), после которого предыдущие пакеты становятся недействительными.
    Какая-то мутная история, надо сказать (особенно с учётом того, что проверял он всё вот это на столе, найти реальную машину у него "не получилось").


  1. shadrap
    24.04.2023 13:35

    Хмм... Хоть и ужасный перевод,но спасибо за статью. Я если честно думал, что " component protection" должно бы защитить любое вмешательство на "через гейтвейные устройства " ... я не в курсе вообще если такая штука в тойотах, аналогично VW .


  1. Soarerru
    24.04.2023 13:35

    Один из самых распространенных способов установки нештатной сигнализации - это разрыв CAN-шины при постановке на охрану.


  1. aka3eka
    24.04.2023 13:35
    +1

    Спасибо за перевод.
    Зачем "инъецирование", когда в русском языке есть "внедрение" или "инъекция"? Здесь использование "injection" аналогично "code injection" или "dependency injection" в теме программирования.