Уязвимость в протоколе CAN, затрагивающая почти все современные автомобили
В протоколе CAN (Controller Area Network), применяемом во всех современных автомобилях для организации взаимодействия между электронными компонентами, выявлена концептуальная уязвимость, позволяющая деактивировать подключенные к CAN узлы, в том числе отвечающие за безопасность. Например, можно отключить подушки безопасности, ABS, освещение или парковочные датчики.
Уязвимость может быть эксплуатирована как локально, так и удаленно. Локальная атака осуществляется через подключение к имеющимся в автомобиле штатным диагностическим портам, предоставляющим доступ к шине CAN. Атака требует использования специального оборудования, которое было собрано исследователями на базе платы Arduino и чипа MCP2551 E/P для приема и передачи данных по шине CAN. Удаленная атака может быть совершена через эксплуатацию уязвимостей в узлах для взаимодействия с внешними системами, подключенными к CAN.
Суть атаки заключается в инициировании появления в шине большого числа ошибочных кадров, связанных с определенным узлом, после чего в соответствии со стандартом CAN для изоляции источника слишком большого числа ошибок узел переводится в состояние Bus Off, т. е. отключается от общей шины и не может больше принимать и передавать данные. В обычных условиях подобный механизм позволяет блокировать узлы в случае их сбоя и недопустить влияние связанной с ними неисправности на другие узлы. В случае атаки ошибки являются фиктивными и позволяют выборочно деактивировать важные подсистемы.
Основная опасность выявленной уязвимости связана с тем, что проблема затрагивает заложенный в протокол штатный механизм обработки ошибок, т. е. уязвимость невозможно устранить через обновление прошивки - требуется переработка спецификаций и утверждение нового стандарта. В качестве метода защиты для автомобилей, выпускаемых на базе существующего стандарта, предлагается только ограничение доступа к диагностическим портам.