Комментарии 18
Исходный код надо было сразу открывать — всему миру не запретишь пользоваться.
Теперь надо проводить полноценный аудит кода. Так как не ясно есть ли там закладки от ФБР. Они могли заставить что-то реализовать.
НЛО прилетело и опубликовало эту надпись здесь
А вот такой-разтакой вопрос — сейчас все сходят с ума по нейросетям (ну там Альфаго, раскраска фильмов и картинок и т. п.) а тут всё растёт проблема с закладками в СПО которые теперь норовят вставить все, кому не лень — чего доброго, даже маркетологи начнут вставлять свои рекламные закладки, не то что спецслужбы — нельзя ли научить нейросеть вылавливать опасный или сомнительный код — как в смысле его опасности с точки зрения ошибок (дегаггинг, человекочитаемое дезассемблирование кода и т. д.), так и в смысле отлова закладок — ведь это сильно удешевит аудит.
Надеюсь, кто нибудь мне ответит — «мы уже давно работаем над этим вопросом, и альфа релиз уже вот-вот»...:)
Для этого надо научить нейросеть кодить. А бэкдор может быть просто переполняющимся буфером или что то подобное.
Можно ещё реализовать сложным для понимания кодом, и разложить части бэкдоров в разных местах.
И идеи конкурса «Underhanded C» никто не отменял https://geektimes.ru/post/260332/
Вы шутите? Альфаго не в состоянии промычать «Мама» — но обыгрывает чемпионов.
Тут дело в другом — косяки программ и установленные бэкдоры имеют ограниченное специфическое поведение — например, переполнение буфера — это переполнение буфера, не зависимо, от того на каком языке писан код, бэкдор норовит незаметно держать связь по сети со своим создателем, вирусы реагируют на определенные действия определенным образом — вот эти специфические нюансы и надо ловить сначала в исполняемых файлах а уже оттуда — указывать соответствующие фрагменты кода в текстовых файлах
А вот кодить нейросеть наверняка можно научить — сейчас уже нейросети рисуют картины по образцу — аналогично — можно кормить её кодом, скачиваемом из опенсурса в сети и она начнет синтезировать его, увидев данный ей затем похожий «фрагмент»- если код не компилируется, тогда её «наказываем» и повторяем всё на автомате, пока не получится «кодер» уровня школьника или студента — затем думаем что делать дальше — например, натравливаем одну сеть на другую — на «кодера» напускаем «ревизора», ищущего ошибки и закладки — они друг друга обучают до бесконечности.
Затем следующий этап — учим оставлять в коде шаблонные комментарии, чтобы человеку его лучше читалось и т. д.
Касательно вирусов, бэкдоров и прочих зловредов — вся сеть — это огромная бигдата подобного «добра» — только успевай хватать пробегающую мимо вирусню и кормить ей сеть.
А ошибки можно набрать из опенсурсных проектов — там наверняка можно найти исправляемые по тем или иным причинам фрагменты существующих файлов и вот этими то фрагментами, вместе с соответствующими им частями двоичных файлов (у которых структура то — стандартизированная), кормить обучаемого «ревизора».
Кстати, ничего нового я не сказал — именно так работают (очень, очень эффективно(!)) почтовые спамовые фильтры, читающие текст и фильтрующие письма. Даже скомпилированный файл, машине несложно рассматривать как текст и соответственно — фильтровать его по поведению — тут уже не скроешься, сделав трудночитаемым текст программы, или разложив вредоноса по укромным уголкам программы — для машины все эти наивные хитрости не будут иметь никакого значения — ведь она смотрит на особенности поведения кода.
Между прочим, можно пропускать через кодогенератор компилятора случайные операторы из опенсурсного кода и позволяя сети наблюдать за процессом — научить сети восстанавливать скомпилированную программу в более или менее читабельном текстовом виде. Затем на полученное сырье натравливать отдельную сеть-«редактора», улучшая его качество.
Дальше — больше, можно учить сети выявлять закладки в «железе» — в нашем распоряжении есть компьютер и работая на самом низком уровне, можно спалить те же самые особенности что и в программах — несанкционированное поведение железа.
Как я Вас понимаю! Всегда приятно поговорить с умным человеком =). Но наверное хватит уже, пишите статью. Без шуток.
Не обязательно что часть софта для «связи по сети со своим создателем» изначально есть в софте. Бэкдор может быть пассивной дыркой — тем же переполнением буффера, который позволить этот софт залить на машину…
«если код не компилируется, тогда её «наказываем»»
Интересная мысль! И сеть выдает на экран — «Ну не надаааааа! Я всего лишь точку с запятой забылаааа!!!».
Вообще это примерно как осваивать язык программирования без книжки — по образцам кода и да, это несколько бездумно.
Хотя некоторые так и делают — скажем используют указатели в Си просто как некие странные переменные со звездочками и зная, что в таких-то ситуация надо делать так просто потому что…
В конце 90-х мой шеф в лаборатории как-то выдал гиперфилософское обобщение — что программисты будут не нужны — машины всё будут делать сами. А потом появились Борланд Билдер и Дельфи — и я подумал, что он не так-то и неправ.
Может теперь нас ждет следующий этап?
Именно так и учат нейросети — https://habrahabr.ru/post/148830/ Просто циклы могут повториться тысячи раз за секунду, а поскольку язык программирования — очень ограниченная и жесткая по правилам, в отличие от фото или рисунка, система, то сеть быстро научиться писать компилируемый код.
Так когда то учили людей, не имея современной развитой педагогики — https://yandex.ru/images/search?img_url=http%3A%2F%2Fsch69.narod.ru%2Fraz%2F1%2F685%2F17.jpg&text=%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%2017%20%D0%B2%D0%B5%D0%BA%D0%B5%20%D0%B2%20%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%B8%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8&noreask=1&pos=1&lr=36&rpt=simage
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.