На фотографии слева — пробирка с сотнями миллиардов копий эксплоита, закодированного в синтетических молекулах ДНК, которые способны заразить компьютерную систему после секвенирования и обработки.
В последние пять лет стоимость секвенирования генома упала со $100 000 до менее $1000, что стимулировало научные исследования в сфере геномики и целую плеяду коммерческих сервисов, которые предлагают проанализировать ваше геном для разных целей: построение генетического дерева, поиск предков, анализ физических способностей, предрасположенности к разным видам спорта и физической активности, изучение совместимых микроорганизмов в кишечном тракте и многое другое. Авторы научной работы уверены, что при секвенировании генома недостаточное внимание уделяется безопасности: в этой области просто ещё не столкнулись с вредоносными программами, которые атакуют непосредственно через геном. Теперь такой вектор атаки нужно принимать в расчёт.
Секвенирование генома начинает использоваться в прикладных дисциплинах, таких как криминалистическая экспертиза и архивное хранение данных, поэтому следует изучить вопросы безопасности, прежде чем секвенирование станет массово применяться.
Исследователи написали эксплоит, а затем синтезировали такую последовательность ДНК, которая после секвенирования и обработки генерирует файл с эксплоитом. Будучи загруженным в уязвимую программу, этот файл открывает сокет для удалённого управления системой.
Исследование не имеет практической пользы, потому что авторы не взламывали конкретную программу-секвенсер, которой пользуются биологи. Вместо этого они сами модифицировали программу fqzcomp версии 4.6 (утилита сжатия последовательностей ДНК), добавив известную уязвимость в её исходный код. Тем не менее, это не противоречит тому факту, что в настоящих программах тоже имеются уязвимости. Главное, учёным удалось доказать, что заражение компьютера действительно возможно через образец биологического материала.
Для изменения в исходный код
fqzcomp
нужно было добавить 54 строчки на C++ и удалить 127 строчек. Модифицированная версия программы обрабатывала ДНК, используя простую двухбитную схему: четыре нуклеотида кодировались как два бита: A как 00, C как 01, G как 10, а T как 11.Кроме внедрения эксплоита в программу и перевода на двухбитную обработку, исследователи также отключили известные функции безопасности в операционной системе, в том числе систему рандомизации памяти ASLR, а также защиту от переполнения стека.
Сам эксплоит (показан на иллюстрации в левом окне) имел размер 94 байта и кодировался 376 нуклеотидами. Эту последовательность загрузили в сервис для синтеза биологических молекул IDT gBlocks. Первая попытка синтезировать ДНК с эксплоитом оказалась неудачной.
Проблем оказалось несколько. В молекуле было слишком много повторяющихся последовательностей, что не рекомендуется при синтезе. В одном месте было 13 подряд нуклеотидов T, что очень трудно синтезировать. Кроме того, по всей длине было недостаточно пар GC, которые укрепляют молекулу. В конце концов, эксплоит оказался слишком длинным для секвенирования.
Но исследователям удалось преодолеть все сложности, они уменьшили длину эксплоита до 43 байт и получили приемлемое количество последовательностей CG, потому что текст эксплоита состоит преимущественно из строчных букв (01 в ASCII соответствует нуклеотиду C). Номер порта в эксплоите по этой причине изменили с 3 (ATAT) на 9 (ATGC). Получившуюся последовательность загрузили в сервис синтеза IDT gBlocks, который берёт $89 за синтез до 500 базовых пар.
Доказав теоретическую возможность атаки, исследователи изучили безопасность программ, которые используются для секвенирования и анализа ДНК. Всего было изучено 13 известных биологических программ с открытым исходным кодом, написанных на C/C++. Их безопасность сравнили со стандартным софтом, который обычно подвергается атакам злоумышленников, таким как веб-серверы и удалённые шеллы. Выяснилось, что у биологических программ гораздо больше потенциально опасных вызовов функций (таких как
strcpy
). Удалось найти также переполнения буфера в трёх программах (fastx-toolkit, samtools и SOAPdenovo2). Через такие баги можно вызвать сбой программы. Зная, что подобные сбои часто конвертируются в рабочие эксплоиты, авторы остановились на этом.
Презентация научной работы (pdf) состоится 17 августа 2017 года на 26-м симпозиуме по безопасности USENIX Security Symposium.
Комментарии (45)
artskep
11.08.2017 15:54+2Исследование не имеет практической пользы, потому что авторы не взламывали конкретную программу-секвенсер, которой пользуются биологи. Вместо этого они сами модифицировали программу fqzcomp версии 4.6 (утилита сжатия последовательностей ДНК), добавив известную уязвимость в её исходный код.
Че-то мне это напоминает африканский/молдавский/подставьте-что-то-еще вирус, который просит сам себя распространить и удалить че-то важное.
Ждем серьезных исследований по поводу того, что можно взломать телефон через камеру или микрофон (если, конечно, заранее туда эксплоит внедрить).vconst
11.08.2017 16:19+1Ждем серьезных исследований по поводу того, что можно взломать телефон через камеру или микрофон (если, конечно, заранее туда эксплоит внедрить).
Уже есть.
Solexid
11.08.2017 16:12+4Будущее — При задержании у подозреваемого в днк было обнаружено 10 гб порнобаннеров и эксплоитов.
semen-pro
11.08.2017 20:14+3Хорошо, что его поймали. А то, он мог передать эти гены своим потомкам, которые, из-за них бы подвергались гонениям. Я даже не знаю, как правильно назвать подобную дискриминацию.
OneOfUs
11.08.2017 17:32+1А через штрихкод на упаковке товара они не пробовали взламывать кассы супермаркета? Теоретически такое тоже возможно…
vesper-bot
11.08.2017 17:38+2В штрих-код эксплойт не завернешь, он фиксированного размера. Вот QR-код — да, уже вектор атаки, и да, пробуют уже ломать.
OneOfUs
11.08.2017 17:47У меня на Nokia 5800 есть программа, которая считывает QR и открывает стандартный браузер с сылкой из этого кода. Уже отличный вариант загрузки эксплойта
guai
11.08.2017 17:52Есть такая тема, как данные на более чем одном штрих-коде. Первый сообщает, что будут еще данные, последующие продолжают.
И если разработчик про это не знал, думал, что фиксированный размер, драйвер может сам накопить длинный буфер и перетереть выделенное место с переполнением.
aamonster
12.08.2017 02:00+1Что-то такое припоминаю (на кассе сканер штрих-кода подсоединён, как клавиатура), но там надо целую пачку штрих-кодов предъявлять было.
a5b
12.08.2017 05:13Code128 коды работают (ASCII + Ctrl+символ):
http://hackaday.com/2016/02/17/barcodes-that-hack-devices/
http://web.archive.org/web/20160211043921/http://en.wooyun.io/2016/01/28/Barcode-attack-technique.html Barcode attack technique (Badbarcode)
https://twitter.com/tombkeeper/status/663730674017300480 One of the demos of our talk "BadBarcode: How to hack a starship with a piece of paper". See you in PacSec 2015.
http://www.slideshare.net/mobile/PacSecJP/hyperchem-ma-badbarcode-en1109nocommentfinal
“Toying with Barcodes”, Phenoelit, 24C3 •? Barcode driven buffer overflow •? Barcode driven format string •? Barcode driven SQL injection •? Barcode driven XSS
Other Scenarios •? Predict and recreate barcodes •? Duplicate barcodes •? Phishing attacks by QR code
vesper-bot
11.08.2017 17:33Сколько же времени уйдет, чтобы пересобрать эксплойт, если в нем потребуется подставить другие адреса в памяти для обхода ASLR...
DROS
11.08.2017 17:44Золотое правило: «не доверяй входящим данным» — в очередной раз доказало свое существование. Ничего нового. Просто другой носитель.
h0tkey
11.08.2017 18:31… что можно удалённо заразить компьютер через ДНК
(philosoraptor.jpg)
А считается ли заражением компьютера через ДНК допуск к нему криворукого пользователя?
shadrap
11.08.2017 18:38+1Либо я ничего не понял, либо статья «не в жилу»… фотографии, если честно, как с «желто-прессной» рекламы…
Секвентор, может выдать последовательность нуклеотидов, в обычный текстовый файл(raw), там может быть все что угодно. Но программа функционирует не в секвенаторе, а на компьютере. Любая сегодняшняя программа секвенирования может в лучшем случае интерпретировать значения выданного секвенатором, сделать например выравнивание и определить что за организм ей подсунули или прочитать значение конкретного снипа.
Что-то я не слышал про программы, которые могут компилировать что-либо исполняемое…
Конечно, если предварительно через сеть туда внедрить вирус, который модифицирует программу коренным образом, то и с сиквенсных последовательностей можно что угодно считать, но встает вопрос, зачем тогда секвенатор...??Alozar
11.08.2017 20:35+1Тут вообще получается комичная ситуация.
Учёные изменили программу (опять же вопрос, что там поменяли), отключили кучу в ОС, а потом говорят: «Трагедия, через ДНК можно компьютер заразить». Таким путём можно всё-что угодно через всё что угодно заразить. Чтобы этого не было защиты и ставят.
Аналогично можно сказать, что на самолёт можно бомбу пронести… только для этого нужно убрать металлодетекторы, досмотр и охранников.amarao
12.08.2017 14:03+1Не учёные говорят, а журналисты. Даже не журналисты, а Ализар, что как бы должно было насторожить с самого начала.
Hellsy22
11.08.2017 19:00Я не совсем понял, что именно «хакеры доказали»? Что любое вычислительное устройство так или иначе оцифровывающее информацию — потенциально уязвимо? Так это вроде бы и так все знали. Что обычно разработчики софта для научного оборудования мало беспокоятся о безопасности? Тоже не новость.
Но потенциальная уязвимость не означает наличия реальной уязвимости.
sasha1024
11.08.2017 21:48Научной ценности, по-моему, не представляет. (И так очевидно, что такое возможно.)
Но, может, подстегнёт разработчиков программ (их руководство) писать аккуратнее (быть требовательнее).
Если б хоть какой-то настоящий секвенсер взломали.
helg1978
11.08.2017 23:54+2я так понимаю, основной посыл «мы умеем кодировать в ДНК любой byte array, что б звучало резонансней — пусть это будет зловред».
Я б на месте ученых выбрал, в качестве исходника, коды запуска ракет Северной Кореи. «В лабораторных условиях, нам удалось вживить в ДНК и потом успешно применить код-ключ запуска ракеты земля-земля, направленной на Вашингтон»
sotnikdv
12.08.2017 00:55+1Это еще что.
Я вполне убедительно докажу, что компьютер можно заразить через огурец (нужно только модифицировать по камеры и добавить известную уязвимость), а человека может убить соловьиный свист (нужно только добавить в управление движком машины известную уязвимость).
Ещё я только что выяснил, что можно заразить смартфон постукиванием по столу рядом с ним, нужно только в программу обработки данных с сенсора...
Я к чему, статьи писать? Грант дадут, как думаете?
neuotq
12.08.2017 12:09+1Не понимаю комментаторов. Эксперимент был поставлен чтобы показать принципиальную возможность такой атаки, а тут все в комментах собрались «умники» с шутеечками. Штука важная, подобные вещи делают в разных областях, со стороны многие вещи из науки могут показаться либо банальщиной либо пустой тратой времени.
Но все же я считаю этот эксперимент полезным. Доказана принципиальная возможность взлома, через известный заранее занесенный эксплойт. И это повод внимательней отнестись к безопасности и общей работе с ДНК в будущем, ведь обычно взламывают через дыры которые мы не знаем.dfgwer
12.08.2017 14:41Отлично понимаю комментаторов. Упражнения в остроумии, основа интернет комментирования.
Hellsy22
12.08.2017 19:46+1Так ведь статья — ни о чем. Все и так знают, что если есть какая бы то ни было обработка входных данных, то возможна уязвимость, но реальной уязвимости эти «хакеры» не нашли, потому специально ее создали.
Приводя аналогию: «мы взяли ПРЕДМЕТ и сами ударили себя им по голове. Все получилось. Вывод — ПРЕДМЕТ потенциально может быть использован для удара по голове».
itsbeto
12.08.2017 16:48как я понял, ученые доказали возможность взаимодействия "условного ИИ" и "условного организма". Если так, возможен ли теоретический переход "организм"-"ии"-"организм"? когда уже "Подождите, Ваше днк обновляется, процесс может занять несколько месяцев. Не размножайте и не отключайте тело"?
DrPass
12.08.2017 23:13+1как я понял, ученые доказали возможность взаимодействия «условного ИИ» и «условного организма».
Нет. Ученые с помощью сложного и дорогого эксперимента доказали, что если вместо флешки взять ДНК и девайс для чтения ДНК, то если на ДНК записать то же, что и на флешку, и потом прочесть, то оно будет работать так же, как если это прочесть с флешки. Например, если вы на ДНК запишете фото котика, то прочтете фото котика. А если эксплойт, то прочтете эксплойт, ну а потом вам надо его, конечно же, запустить в подходящей среде. И тогда вас поразит эксплойт из ДНК. Конечно, статью они в журналах опубликуют. Но вы не находите научную ценность данного эксперимента несколько сомнительной?itsbeto
13.08.2017 17:03не нашел аргументов для Вашего категоричного "нет", простите за дилетанство (сложное и дорогое — это относительно). Я правильно Вас понял, что ДНК может выступать носителем информации, с которой можно ее (информацию) считать и записать в другую ДНК (подготовленную)? возможна ли такая ситуация, что мою днк считывает ии, находит уязвимости, находит в базе данных "лечащую" днк, выписывает оттуда процедуру "лечения", записывает ее в мою днк и моя днк… обновляется?
Hellsy22
13.08.2017 17:07Эта ситуация возможна (см. генетическая терапия), но ни к ИИ, ни к описанному в статье отношения не имеет. Кстати, первые эксперименты над раковыми больными в этой области начались как раз этим летом.
itsbeto
15.08.2017 01:20Да, спасибо, чуть ниже мне это разжевали. Стараюсь следить за всеми этими генетическими терапиями. Так уже хотелось бы в будущее: находят новую болезнь — вычисляют «добродел» на уровне генов и высылают всем обновления. Хотелось бы дожить.
DrPass
13.08.2017 18:11Я правильно Вас понял, что ДНК может выступать носителем информации, с которой можно ее (информацию) считать и записать в другую ДНК (подготовленную)?
Речь в статье шла не о записи чего-то из ДНК в ДНК, а о том, что если переписывать с ДНК информацию в компьютер (есть такая процедура, секвенирование называется), то если в ДНК засунуть вредоносный код, а программа для секвенирования будет иметь уязвимость для выполнения этого кода, то можно заразить компьютер. Поскольку о существовании уязвимостей в программах для секвенирования авторам было неизвестно, равно как и о коде в ДНК, который способен их заразить, они состряпали программу с уязвимостью, написали под неё код в ДНК, ну и уязвили её.
«Теоретически из пистолета можно поразить танк, если попасть в нужное отверстие, ведущее прямо к боекомплекту. Поскольку мы не знаем про такие отверстия, давайте возьмем танк, снимем с него броню, а вот тут подвяжем килограмм тротила. И выстрелим в него. О-па, смотрите, мы поразили танк из пистолета!»itsbeto
15.08.2017 01:14Спасибо! В таком свете статья из серии «британские ученые подтвердили...». Хотя, как знать, Гейм тоже Шнобеля сначала получил. Блин, даже взгрустнулось, что никакой ИИ в ближайшем будущем не будет корректировать ДНК на опережение. Будем полагаться на матушку-природу… эх, всем совокупляться.
MarkNikitin
13.08.2017 11:07-1Сейчас это может и казаться странно и не возможно, но я считаю что за лет еще так 5 это будет прививочное дело взлома например автоматизированных систем с помощью таких атак
DrPass
Хм. А что, программы для секвенирования ДНК, после того, как выполняют это самое секвенирование, пытаются запустить ДНК на выполнение?
Я понимаю, что такое атака через переполнение буфера, но в то, что подобное как-то применимо в реальности в случае с ДНК, чесслово, не верю.
LynXzp
Ну они специально создали уязвимость и специально ее эксплуатировали. Что доказывает чисто теоретически возможность.
На то они и ученые: ставят гипотезы, проверяют, доказывают. Результат: возможно, очень сложно, маловероятно.
technic93
Сам пропатчил, сам установил, сам страдаешь.
0lympian
Меня всегда беспокоил этот вопрос с обратной стороны. А именно, неоднократно предлагалось использовать ДНК в качестве накопителя для хранения произвольной информации. Допустим, у нас будет такое хранилище, и тогда, чисто теоретически, если мы на него запишем определенным образом сформированный файл (например в составе картинки из кэша браузера), а какой-то организм каким-то образом «параллельно перенесет» в себя нужную последовательность и «запустит на выполнение» своим ядром, то это будет потенциально опасно рендерингом например от какого-нибудь устойчивого к антибиотикам организма до… дальше сами додумайте ))
p.s. Согласен, допущений очень много, но в принципе не намного больше, чем в сабжевой статье.
DrPass
Я думаю, вероятность того, что бактерии сами выработают резистентность к антибиотикам, на несколько порядков выше, чем того, что они сопрут чью-то гифку из ДНК-накопителя, и случайно в ней окажется нужная последовательность.
mickvav
Да нормально.
Шаг 1: ищешь рабочие дырки в опен-сорсе. Находишь.
Шаг 2: синтезируешь днк по сиквенсу.
Шаг 3: Ищешь среди коммерсов, которые потенциально используют этот опен-сорц, тех, кто секвенирует за денюжку. Шлёшь им образец, получаешь шелл-код. Профит.
CSRF найти проще. Но и уровень внимательности к безопасности на этом фронте настолько низкий, что такой шелл не найдут примерно никогда, если сидеть тихой сапой и тупо сливать данные куда-то.
Mystray
Видео-файлы, в теории, тоже никто не запускает на исполнение, их читают и обрабатывают. Но, тем не менее, code execution эксплойты в медиа-библиотеках периодически всплывают.