Биохакеры закодировали зловред в ДНК, чтобы атаковать софт для секвенирования генома

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

На фотографии слева — пробирка с сотнями миллиардов копий эксплоита, закодированного в синтетических молекулах ДНК, которые способны заразить компьютерную систему после секвенирования и обработки.

В последние пять лет стоимость секвенирования генома упала со $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.

 
Источник

днк, нуклеотиды, секвенирование генома, эксплоит

Читайте также