Етично хакерство: Пълен курс от начинаещ до експерт.

Хаквайте като хакери с черна шапка. Тестване за проникване, Kali Linux, хакване на WiFi и уеб сайтове, както и хакерският начин на мислене зад всичко това.

ДНК на стойност 89 долара беше достатъчна за поемането на контрол над компютър. Атаката се намираше в самите генетични букви – A, T, C и G. Години по-късно се оказа, че машините, които ги разчитат, са дори още по-лесни за компрометиране.

Това изследване е от 2017 г. и аз го припомням нарочно. То е ярък пример за препълване на буфера (buffer overflow), от който можете да се поучите, а през 2025 г. престана да бъде просто парти трик.

Изследователи от Вашингтонския университет си зададоха въпрос, който не се чува често: Може ли самата ДНК проба да пренася атака? И така, те създадоха такава и я поръчаха от компания, която изпраща ДНК до лаборатории. Цена: 89 долара.

ДНК е последователност от четири букви: A, T, C и G. Машина, наречена секвенатор, разчита тези букви и ги записва във файл. След това втора програма чете този файл, за да анализира пробата. Ако искате вашата ДНК да работи като код, кодирате кода по два бита на буква.

Изследователите взеха съществуващ инструмент за тази цел – fqzcomp, програма за компресиране на ДНК файлове. Те копираха версия 4.6 от публичния ѝ източник и добавиха уязвимост в нея. Слабото място беше функция, която съхранява всяко четене в буфер с фиксиран размер. Подайте ѝ четене, което е по-дълго от буфера, и излишните байтове преливат извън границите му, попадайки там, където трябва да се намира следващата инструкция. Това е препълване на стековия буфер – една от най-старите съществуващи грешки.

Сега идва странната част. Атакуващият код има свои правила, както и ДНК, и двете се борят помежду си.

Компанията за синтез няма да отпечата каквато и да е последователност. Тя отхвърля дълги поредици от една и съща буква, тъй като нишката се сгъва сама в себе си и машината я разчита грешно. Първият им опит съдържаше тринадесет поредни букви T, генерирани от единичен скок в кода, а принтерът позволяваше само девет. Класическата запълваща стойност 0xdeadbeef влоши нещата, разтягайки се в дълго повторение, което накара нишката да се свие на кълбо.

Компанията също така отхвърля последователности с ниско съдържание на G и C, тъй като тези две букви се свързват по-здраво и държат нишката цяла. Всеки сегмент от двадесет букви се нуждае от поне една четвърт G и C, за да оцелее.

Затова те настроиха експлойта като химици. Преминаха от 64-битов към 32-битов код, за да свият указателите и да съкратят поредиците от повтарящи се букви. И детайлът, към който продължавам да се връщам: те промениха мрежовия порт, с който техният shell се свързваше. Порт 3 се кодира като ATAT, което е твърде нестабилно за отпечатване. Порт 9 се кодира като ATGC, което издържа. Те избраха TCP порт, за да запазят молекулата стабилна.

За полезния товар (payload) те пропуснаха стандартния shell, който беше твърде дълъг, за да се събере в нишката. Вместо това използваха стара функция на bash – /dev/tcp, която отваря мрежова връзка директно от обвивката. Комбиниран с извикване return-to-libc към system(), експлойтът се събра в 43 байта. Тяхната завършена нишка беше дълга 176 букви и започваше с CTATCGGAATTGAGCGAGTTCGCACGCCC.

След това я секвенираха. Машината произведе 811 118 четения на пробата. Експлойтът проработи при 37.4 процента от тях, тъй като една грешно разчетена буква чупи кода. Ако се обработеха и четирите писти на процеса, вероятността той да се задейства поне веднъж беше 84.5 процента. Когато се задействаше, програмата за анализ отваряше shell обратно към изследователите. Работеща компютърна атака, доставена в епруветка.

Нека бъдем честни за конфигурацията. Първоначално те бяха изключили обичайните защити на паметта и сами добавиха уязвимостта. Това беше лабораторен експеримент, създаден за най-добри шансове, а не нещо, което би се появило в рутинна проба.

Частта, за която си струва да се тревожим, не е ДНК. Това е онова, което откриха след това.

Те взеха инструментите, които биолозите използват – bwa, bowtie2 и samtools, които се доставят със секвенаторите на Illumina. След това преброиха небезопасния код в тях. Средно по две опасни C функции на хиляда реда – от фамилиите strcpy, strcat и sprintf, които причиняват препълвания от тридесет години насам. Това е повече, отколкото откриха в софтуер с достъп до интернет, който е подложен на постоянни атаки. Ето какъв код се намира в този конвейер: без проверка на дължината, директно в буфера. Този откъс идва директно от широко използван инструмент за секвениране. Няколко от разработчиците споделиха, че изобщо не са мислили за сигурността на своите инструменти.

Години наред това оставаше просто бележка под линия. След това, през януари 2025 г., фирмата за сигурност Eclypsium разгледа самия хардуер на секвенатора, Illumina iSeq 100, и откри нещо по-просто и по-лошо. Машината зарежда фърмуер от 2018 г. – кодът на ниско ниво, който я стартира преди всичко останало. Secure Boot, проверката, която улавя подправяне на този стартиращ код, беше изключена. Защитата, която блокира промени във фърмуера, липсваше. Общо Eclypsium преброи девет слабости, четири от които с висока степен на критичност.

Ето какво би могъл да направи един атакуващ в тази мрежа: първо, да блокира („брикне“) машината, така че тя никога повече да не стартира; второ, да инсталира имплант във фърмуера, който оцелява след рестартиране; трето, да промени изходните данни и да фалшифицира това, което казва ДНК на даден човек. Това не са евтини джаджи. Секвенаторите откриват ракови заболявания, засичат резистентни към лекарства бактерии и помагат...