Хакеры. Это слово гремит в новостных заголовках, оно заставляет чесать затылок далеких от кибервойн обывателей. Иногда кажется, что они всесильны — то они играючи базу данных крупной корпорации сольют в Сеть, то заставят половину компов в какой-нибудь африканской стране перестать работать, то осчастливят орды пиратов и взломают популярную игру с «непробиваемой» защитой Denuvo. Но можно ли с ними биться их же оружием — технологиями? Можно! Именно об этом мы сегодня и поговорим.
Когда-то разгул хакеров был возможен лишь на страницах фантастических книг. Отцы киберпанка еще сорок-пятьдесят лет назад предупреждали своих читателей, что внедрение компов и прочей электроники не пройдет незамеченным среди всяких технических энтузиастов, и многие из них начнут использовать уязвимости системы ради собственной выгоды.
Сегодня взломы — серьезная проблема как для простых юзеров, так и для больших организаций. Один умелый взломщик может украсть миллионы долларов у крупной корпорации. С этим, очевидно, нужно что-то делать.
Уязвимости нулевого дня и почему из-за них вообще напрягаются
Одна из самых любимых лазеек хакеров — так называемые уязвимости «нулевого дня». Что же это такое?
Смотрите: современные программы — это довольно сложная штука, которая часто работает на костылях, неочевидных программистских решениях и хитровыдуманных нестандартных подходах. Дополнительной головной боли разработчикам добавляет то, что они не пишут код в одиночку и в вакууме, а потому часто возникают либо несовместимости между разными частями программы, либо при совместной работе они начинают действовать так, как программисты и не предполагали.
Добавьте к этому то, что код для поддержки проектов пишется постоянно, и вы получите благодатнейшую почву для возникновения огромного количества неотловленных багов (привет, Cyberpunk 2077!) либо незамеченных безопасниками уязвимостей. Многие из этих косяков разработчики не успевают исправить до релиза продукта, а потому мы часто получаем полурабочий или недостаточно защищенный продукт в день его выпуска. Все эти проблемы и создают опасности «нулевого дня».
Почему им уделяют так много внимания? С одной стороны, если не чинить калечный продукт, его качество может отпугнуть уже пользующихся им людей, а также тех, кто хотел бы его попробовать. С другой стороны, хакеры, филигранно умеющие находить слабые точки в коде, не промедлят воспользоваться ими в своих целях. Создание кряков для любимых вами программ — лишь малая шалость в целом море вариантов испортить людям жизнь. Читы в сетевых играх? Запросто. Слив персональных данных для перепродажи на черном рынке? За милую душу.
С этой вакханалией надо как-то бороться. Идей придумали много, в том числе и в России.
Нейросетки на страже кибербезопасности
Раньше все уязвимости «нулевого дня» искали вручную, изучая самостоятельно код уязвимой программы, тестируя его и делая прочие малопонятные не программисту манипуляции.
Ученые из Московского технического университета связи и информатики (МТУСИ) решили подойти к проблеме с другой стороны и подумали: «Зачем нам самим смотреть десятки тысяч строк кода, если можно поручить это машине, а самим пойти пить кофе?». Так они пришли к мысли использовать для поиска косяков и дыр в системах нейросетки.
Для того, чтобы настроить нейросеть правильно, им потребовалось проанализировать, по какому алгоритму и особенностям находили уязвимости «нулевого дня» их предшественники, как они вообще появляются и «живут», а также какие сценарии атак являются самыми распространенными.
Посмотрим сначала на обычный цикл уязвимости «нулевого дня».
В самом начале эта уязвимость появляется после того, как разработчики ошиблись в коде и обновили продукт либо выкатили его в релиз без должной проверки. Затем, спустя небольшое время, злоумышленники, изучающие апдейты кода, находят в них слабые места и начинают их использовать.
Параллельно с этим об уязвимости тем или иным путем узнают разработчики — обычно по факту начала атак, которые на ней базируются.
Затем, параллельно с борьбой разработчиков и хакеров, уязвимость утекает в открытый доступ и про нее узнают все, после чего разработчики совместно с безопасниками и создателями антивирусов принимают меры по закрытию эксплойта и обновляют программу.
Так как уязвимости могут иметь самый разный характер, сценарии атак и круг потенциальных жертв весьма обширен. Злоумышленники могут атаковать обычных пользователей, использующих свои компьютеры или рыскающих в Интернете по подозрительным ссылкам. Также они могут попытаться взломать всякие «умные устройства», либо обмануть сотрудников корпораций и государственных органов.
Весь арсенал методов хакеров можно свести к нескольким позициям: – Фишинг — пересылка жертвам электронных писем или сообщений в соцсетях с целью заставить их перейти по определенной ссылке, чтобы через нее украсть их персональные данные – Спам – Использование недоработок кода
С первыми двумя методами бороться с помощью нейросеток бесполезно, потому что слабое звено здесь — это люди, которые уделяют недостаточно внимания кибербезопасности.
Что касается третьего метода, то тут нейросети чувствуют себя как рыба в воде. Их можно использовать для двух основных задач — обнаружения аномалий (глюки в аппаратной и программной части, а также нарушения безопасности) и обнаружения злоупотреблений.
Нейросетку можно натаскать на поиск уязвимостей двумя путями: вести ее за ручку и помогать соображать, что к чему (контролируемое обучение), а можно кинуть ее в бассейн с непонятным кодом в надежде, что она разберется и «выплывет» (неконтролируемое обучение).
В обоих случаях для нормальной работы нейросети необходимо ее всесторонне обучить, для чего потребуется создать многослойную программу подготовки. Эти слои, работая вместе, постепенно учатся распознавать ненормальные сценарии поведения кода программы, а потом работают как хакеры — проверяют, можно ли использовать эти аномалии для взлома. Если поиск успешен, то нейросеть докладывает об этом программистам, и те в темпе вальса бегут исправлять косяки.
Какую пользу принесет эта идея?
Самое первое и важное сейчас — у разработчиков появятся новые возможности быстро и решительно править баги в коде, а значит, делать свои продукты безопаснее для клиентов. Хакерам, в свою очередь, станет сложнее взламывать программы и разные хитровыдуманные системы — если только они не придумают, как воспитать свои собственные нейросетки для поиска других прорех в безопасности.
В отдаленной перспективе функции такой нейросетки можно будет расширить — сделать так, чтобы она не просто искала уязвимости в коде, но и сама их исправляла. Хоть нейросеть научились писать простые куски кода уже сейчас, чтобы внедрить эту фишку в серьезный продукт, потребуется довольно много времени, так как технология сравнительно молодая. Потребуется произвести многочисленные улучшения, чтобы она смогла самостоятельно делать код на уровне компетентных программистов.
Но не стоит забывать о том, что нейросети, при всех их достоинствах — лишь инструмент, но не волшебная палочка-выручалочка, которая будет всегда и везде делать за людей их работу. Полный потенциал нейросеток можно раскрыть лишь тогда, когда вместе с ними работают умные и компетентные люди. Лишь при таком подходе нейросетки помогут свернуть нам горы и — что тоже немаловажно — сделают нашу жизнь проще и безопаснее.
Источник: Ferra