Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет dibr ([info]dibr)
@ 2010-09-26 14:49:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
огромные боевые человекоподобные вирусы
     «Почему у прямых людей болезни всегда прямые: перелом оконечностей, стригучий лишай, белая горячка? Почему как интеллигент, так сразу "авторемонтные изменения коронарных сосудов?"»
     (с) кажется, Хазанов. Навеяно тем фактом, что "почесуха овец", "коровье бешенство" и "губчатая энцефалопатия" - это, вообще-то, одно и то же заболевание, только первые два у животных, а последнее - у человека :-)

     А я, собственно, о компьютерной микробиологии. Если проводить аналогию между живым миром, и миром программ, то компьютерные вирусы окажутся ближе всё-таки к бактериям, чем к вирусам: биологические вирусы сами размножаться не умеют, умеют только доставлять "программу" к клетке и впрыскивать её внутрь, остальное делает обманутая вирусом клетка, компьютерные же вирусы ничем принципиально не отличаются от обычных программ - точно такой же программный код, на общих правах выполняющийся процессором и так же как все использующий "сторонние" функции (сисколлы, dll, прочее). Разве что узкий подкласс вирусов, заражающих веб-сайты, вставляя туда ссылку на себя, близок к биологическому вирусу: код вируса при распространении не выполняется, работает штатный www-сервер, но раздаёт вирус.

     Но я немного о другом. И в природе, и в компьютерах, есть множество странных и сложных исторически возникших зацепок (вроде например такой сложной цепочки, использовавшейся одной бабочкой при размножении). Вирусы и бактерии используют уязвимости в организме/системе, чтобы проникнуть внутрь и получить доступ на выполнение - в природе обычно "брутфорсом", в компьютерах - "хитростью". При этом сложность системы такова, что "зацепки" бывают весьма неочевидными - чтобы добиться перехвата управления, вирусы иногда используют нетривиальные подходы...
     ...скажем, упоминавшийся ранее "боевой вирус StuxNet", тот самый, предположительно отработавший по Иранскому уранообогатительному заводу, можно сказать "заражает взглядом". Для заражения достаточно просто посмотреть на иконку зараженного файла - используется уязвимость в процедуре показа иконок в винде, в результате чего сам факт показа иконки приводит к передаче управления телу вируса. Причём показ иконки не только в "проводнике", но и например в total commander - он использует ту же системную процедуру. Привет тем, кто считает "альтернативные файлменеджеры" безопасными - у меня синие панельки FAR, он иконки не показывает, но после подобных случаев я как-то тоже начинаю задумываться...

     Но я опять немного о другом. Идея собственно уязвимости здесь наверняка тривиальная, что-нибудь вроде переполнения буфера, но внешнее проявление - довольно неочевидно: "показали иконку - выполнился вирус". По сравнению с тем же autorun-вирусом это куда менее понятный путь заражения: мало кто догадывается, что просто посмотреть содержимое каталога может быть уже опасным. А при таких вот неочевидных зависимостях внутри системы, возможны всякие неожиданности...
     Скажем, в живой природе, кроме вирусов и бактерий, существуют ещё "прионные инфекции" - та самая "почесуха овец", она же "губчатая энцефалопатия". Возбудитель - обычный белок, но имеющий изменённую структуру. Но изменённую так, что сам факт присутствия этого белка "автокаталитическим образом" влияет на синтез аналогичного "естественного" белка так, что естественный белок получается точно так же измененным. Далее по нарастающей - и единственная попавшая в организм молекула белка "размножается", а через несколько лет значительная часть белка оказывается изменённой, и организм умирает.
     Фишка в том, что прионы оказываются "ещё менее живыми" чем вирусы. Вирусы имеют оболочку, обеспечивающую проникновение вируса в клетку. Вирусы имеют "программу" (РНК), которая начинает исполняться клеткой после проникновения. Прион же не делает вообще ничего: это просто молекула, которая околачивается рядом с рибосомой (не потому что активно приползла именно к рибосоме, а потому что броуновским движением вынесло), в результате чего то, что вылазит из рибосомы, сворачивается чуть по другому. Сама молекула ни-че-го не делает, никаких программ синтеза не содержит, просто в её присутствии изменяется поведение других частей клетки.

     А вот интересно, могут ли существовать компьютерные прионы? Так, чтобы самостоятельных действий "компьютерным прионом" не предпринималось вообще - то есть, никакой код не исполнялся бы (биологические вирусы сами впрыскивают себя в клетку и содержат "исполняемый код", компьютерные - вообще являются полноценными программами), но при этом какие-то штатно выполняемые системой действия в присутствии "компьютерных прионов" модифицировались бы так, чтобы получались бы опять "компьютерные прионы".

     Навскидку вспоминается только одна из разновидностей щелчка смерти на iomega zip приводах.
     В некоторых, очень редких, случаях (пыль/грязь, механическое повреждение), загрузка zip-"дискеты" в zip-привод приводила к зацеплению головок с диском, и как следствие - отрыванию головок нахрен. Остатки головок немедленно после этого зацарапывают край диска "в лохмотья", привод при этом громко щёлкает (пытаясь всё-таки прочитать данные), данные естественно не читаются. Пользователь задумчиво вынимает дискету, и несёт её к соседнему приводу - авось там прочитается (дискета закрыта, состояние поверхности не видно, отодвигать шторку во-первых категорически запрещено инструкцией, во-вторых - несколько сложнее чем у 3.5" дискет). Соседний привод мгновенно срывает себе головки лохмотьями дискеты. Тем временем в первый привод ("раз не читается ни там ни там, значит привод исправен, проблема в дискете") суют другую дискету, которая тоже превращается в лохмотья... и есть немалый шанс, что через полчаса попыток чтения в офисе не окажется ни одного живого привода, а половина дискет будут излохмачены и смертельны для приводов.
     Правда, это всё равно не совсем "прион" - дискета всё-таки лично срывает головки дисководу. Но - "на выполнение" никакой код не передаётся :-)

     ...а потом они осознают себя, и завоюют мир. Я так думаю :-)


(Добавить комментарий)


[info]tilimilitram@lj
2010-09-26 11:12 (ссылка)
В тему: Вирусы тоже болеют вирусными заболеваниями (http://elementy.ru/news/430821).

Надо же, эпидемия "щелчков смерти" аппаратный вирус :) А сбой файловой системы под Виндой? Порушено что-нибудь изредка востребованное, система изредка падает. Ее падение провоцирует новые сбои, частота падений растет...

Когда они осознают себя у них появится свои humor.filtered и обманчиво простые "задачки о взвешивании" и желание новые сочинять :)

ГОЛОВОЛОМКА-ДИВЕРСИЯ. Осторожно, по ссылке ответ

Во время второй мировой войны группа английских математиков предложила сбросить на территорию фашистской Германии листовки с текстом такой задачи:

На столе лежат 10 кошельков, в каждом из них 10 одинаковых монет. В 9-ти кошельках монеты настоящие, массой по 10 грамм, а в одном - все монеты фальшивые, массой по 11 грамм каждая. Как с помощью весов и набора разновесов определить лишь одним взвешиванием кошелек с фальшивыми монетами.

На решение этой задачи сотрудники одного научно-исследовательского центра потратили более 10000 часов, чем, на основании расчетов руководителя центра нанесли значительный урон военному потенциалу Англии.</i>
(http://rest.kemerport.ru/log2.htm)

У людей есть куча заразных глюков вроде писем счастья, панических слухов, заразных баек о "лампочке во рту" и дурацких живучих предрассудков, традиций, постов вышедших в топ. Вот самый страшный из них (http://readr.ru/mark-tven-reghte-bratci-reghte.html) :)

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 11:45 (ссылка)
> Вирусы тоже болеют вирусными заболеваниями.

Забавно :-)

> А сбой файловой системы под Виндой? Порушено что-нибудь изредка востребованное, система изредка падает. Ее падение провоцирует новые сбои, частота падений растет...

Это неоднородный процесс: "все файлы разные" и разной важности, большинство сбоев FS если и приведут к падениям системы, то либо "неопасным" (не приводящим к дальнейшему разрушению FS), либо наоборот - смертельным: OS не загрузится. В подобных условиях система либо будет почти счастливо работать годами, либо случайно обрушится что-то серьезное, и процесс закончится. Я так думаю :-)
Вот в однородной бы среде подобное воспроизвести...

> ГОЛОВОЛОМКА-ДИВЕРСИЯ
> Режьте, братцы, режьте!

Это мемы :-) В каком-то смысле да - "сами не выполяняются, размножаются чисто за счёт хозяина". Но это типичный вирус, не "прион" - "прион" не перестраивает хозяина на воспроизведение себя, а так влияет на естественные процессы, что в результате получается что-то очень похожее на то что обычно, но являющееся прионом :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-26 12:31 (ссылка)
У меня когда-то давно сервер 2000-ый упал среди ночи во время бекапа, поднялся, снова на том же месте упал. К утру в логах было больше сотни записей о перезагрузке. Файловая система на диске для бекапов в хлам. На другом осталась не самая свежая копия. Появились битые вордовские файлы, большинство из них просто не открывались, а редкие открывались, но через пару минут любой комп с Вордом под 98 Виндой намертво вешали и губили одновременно с ними открытые документы. Тех файлов немного оказалось. После пары-тройки попыток народ их запоминал и уже побаивался трогать.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 13:22 (ссылка)
Ну, тоже в общем не совсем вирусное поведение: "упал, и начал долбиться, падая каждый раз на том же самом месте, разнося при этом всё вокруг". То есть, идея ясна, но конкретные сценарии мне "вирусными" назвать не хочется - это, грубо говоря, не более вирус чем слетевший с крепления двигатель, прыгающий и разносящий всё вокруг пока не сломается сам или не кончится энергия.

Хотя можно попытаться придумать более вирусный сценарий.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-26 13:32 (ссылка)
Допустим, битые файлы вперемешку с производством нормальных открывают не осторожные люди, а тупые роботы. Тогда, при большом числе попыток есть какая-то заметная вероятность произвести не просто глючные файлы, а точно так же завешивающие Винду с Вордом через несколько минут. Но это я уточняю из занудства. Интересного отсюда не вытащить.

(Ответить) (Уровень выше)


[info]dibr@lj
2010-09-26 11:52 (ссылка)
> На столе лежат 10 кошельков, в каждом из них 10 одинаковых монет
> На решение этой задачи сотрудники одного научно-исследовательского центра потратили более 10000 часов, чем, на основании расчетов руководителя центра нанесли значительный урон военному потенциалу Англии

Гхм.
Задача решается за 2-3 минуты максимум. Если "сотрудники одного НИЦ" потратили на решение 10000 часов, то с таким темпом работы они за эти 10000 часов один фиг наработали бы столько же, сколько я за 2 минуты (и не забываем, что такие задачи решаются "в охотку" и с энтузиазмом, а работу так работают не всегда).
Если такая потеря существенна для военного потенциала Англии - то хорошо что я не в Англии :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-26 12:51 (ссылка)
Может быть в пересказе байки сюжет с листовками остается, а задачи о взвешивании меняются?
А так я очень рад за Вас, ну и за нас, в смысле, что Вы у нас, а не в Англии :)

http://ega-math.narod.ru/Quant/Shestpl.htm
http://www.computerra.ru/offline/1997/228/969/

В одной комнате три обыкновенных лампочки накаливания, их выключатели размещены в другой комнате. Требуется узнать, который из выключателей которую лампочку выключает. В комнату с лампами можно заглянуть один раз. Сын тотчас решил. Я минут пять думал :)

А еще я как-то полночи просидел над задачкой, а наутро мне сказали, что в условии одно слово пропушено. Мне в голову не пришла мысль поискать простенькое доказательство того, что в сокращенном виде она не имеет решения.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 13:26 (ссылка)
Да, с 12 монетами поинтересней: я уже знаю ответ, но помню что когда первый раз услышал - помучился :-) Пока не понял, что взвешивание даёт "трит" иноформации, а не бит :-)

> Требуется узнать, который из выключателей которую лампочку выключает

"Нагреть" одну (включить, подождать, выключить), включить вторую, не включать третью. Зайдя - пощупать выключенные на предмет температуры :-)

> А еще я как-то полночи просидел над задачкой, а наутро мне сказали, что в условии одно слово пропушено.

Это классика, да :-( Редко когда догадываешься, что решения-то может и не быть, и неплохо бы проверить.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-26 15:02 (ссылка)
>Это классика, да :-( Редко когда догадываешься, что решения-то может и не быть, и неплохо бы проверить.

А это тоже классика (http://www.2lib.ru/getbook/10181.html). Как сейчас помню октябрь 1982-го, журнал "Юный техник" (http://publ.lib.ru/ARCHIVES/YU/''Yunyy_tehnik''/_''Yunyy_tehnik''_1982_.html) :)

С той "невозможной" задачкой я таки выкрутился, разрешив себе весы с гирьками. Насчет запрета гирек в том условии тоже ничего не сказали.

(Ответить) (Уровень выше)


[info]starcat13@lj
2010-09-26 13:57 (ссылка)
если считать пользователя частью системы - то "письма счастья" подходят :)

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 15:22 (ссылка)
Это всё-таки вирус :-)
"Бактерия" требует только подходящей среды: питание, температура, определенный химический состав - и в нужной среде всё делает сама.
"Вирус" сам умеет минимум, а для размножения использует клетки "организма": клетке отдаётся команда "синтезируй вирус!", и клетка синтезирует вирус.
"Прион" сам вообще ничего не делает и никаких команд не отдаёт, клетка как и раньше синтезирует белок... но если при этом рядом находится прион, то в результате получается ещё один прион.

"Письма счастья" являются командой на создание писем счастья, без писем счастья я просто ничего не писал бы. А вот если придумать такое "письмо", чтобы прочитав его я начал добавлять его в те письма, которые независимо от этого пишу сам - это было бы уже близко :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]starcat13@lj
2010-09-26 15:27 (ссылка)
тогда - всякие картинки (те же демотиваторы) - никаких команд в них нет, но разсылают их пачками :)

(Ответить) (Уровень выше) (Ветвь дискуссии)

(Комментарий удалён)

[info]dibr@lj
2010-09-26 16:39 (ссылка)
Красивая идея - но при этом вирусный код существует и выполняется - он встроен в компилятор (и встраивается в компилятор компилятором же при компиляции компилятора из "чистых" исходников). То есть, внешне похоже - вируса при беглом осмотре нигде не видно, но из компилятора лезет завирусованный код, но это не "прион", это очень хитрый вирус/троян :-) Кстати, он даже не очень-то и "размножается" - чтобы он "размножился" нужно переносить зараженный бинарник компилятора, а это обычно делается только в одну сторону, "от создателя компилятора к пользователям".

Несколько ближе к прионам было бы, если бы в компиляторе была подменён libc (например), так, что созданные компилятором программы сами искали бы компилятор и подменяли ему libc. Распространение есть, компилятор не выполняет вирусный код, но создаёт зараженные программы... правда, на "прион" опять не тянет: зараженные программы таки содержат _выполняемый_ вирусный код, который должен выполниться для заражения.

Вот если бы этот libc удалось подменять, используя какие-то штатные возможности и не выполняя собственный код (к примеру, если бы инсталлятор программы сам подкладывал бы изменённый libc в нужное место - например, "потому что у изменённого libc выше номер версии, надо найти и проапгрейдить его в системе"). При этом, что интересно, собственно вирусный код-то при этом и не нужен - весь механизм работает только на выполнении стороннего кода (компилятор, инсталлятор), "прион" только инициирует его выполнение :-)

> И еще, на мой взгляд, баг должен сохраняться при кросскомпиляции для произвольной платформы :)

В принципе да - если вставка бага происходит до того, как компилятор опустился до платформенно-специфического уровня (грубо говоря, при разборке исходника, а не перед тасовкой ассембрерных команд в целях оптимизации под конкретный процессор), баг должен сохраниться.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-27 01:10 (ссылка)
>не "прион", это очень хитрый вирус/троян :-)
>Кстати, он даже не очень-то и "размножается" - чтобы он "размножился" нужно
>переносить зараженный бинарник компилятора, а это обычно делается только в одну сторону,
>"от создателя компилятора к пользователям".

не "прион", но тоже невидимка и крутой ниндзя :)
Кстати, Ваш заказ с использованием "штатных возможностей" предполагает соблюдение кем-то (исполнителем) определенной процедуры (алгоритма) с подстановкой "приона" в число параметров или входных данных и нуждается в недокументированной особенности исполнителя алгоритма.

Перенос в одну сторону злой хакер может обратить себе на пользу -- точно известно самое уязвимое и вдобавок нечувствительное место большущей системы. Модифицированный хакером компилятор, читающий из чистого кода больше, чем в том коде записано, может передавать эту особенность последующим версиям и портам до тех пор, пока невидимая закладка сможет опознавать место своей вклейки. Действительно, вернее взять не исходник компилятора, а исходник стандартной библиотеки, ее большуший заголовочный файл простой структуры. Переопределить в нем метод стандартного ввода так, чтобы при чтении заголовочного файла следующей версии этой библиотеки _только_ в процессе компиляции (узнаем это по характерной последовательности открытий других заголовочных файлов) в него добавлялся код закладки. После того, как очередная версия компилятора воспользуется новой версией стандартной библиотеки закладку можно убирать из исходников. Теперь и аудит кода и проверка официальных контрольных сумм и цифровых подписей ее присутствие не обнаружат. Пользователи получат модифицированные компилятор и библиотеку и ту же библиотеку уже встроенную в код множества фирменных дистрибутивов, в том числе и за счет работы служб вроде Windows Update или Линуксовых менеджеров пакетов. Поведением закладки можно управлять, скажем, научив ее извлекать новый исходный код хитро запрятанный в hex-коде какого-нибудь логотипа или комментария из жутко полезной для проекта-мишени сторонней библиотеки...

Наверняка кто-нибудь такие фокусы уже не раз проделал :(

(Ответить) (Уровень выше)


[info]tilimilitram@lj
2010-09-26 16:17 (ссылка)
Их так иногда и называют -- вирусная реклама :)

>А вот если придумать такое "письмо", чтобы прочитав его я начал добавлять его в те письма...

А коротенькую "Критику доверчивости" (http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/ken/ken.html), Тьюринговскую лекцию Кена Томпсона 84 года встречали? Там о кратчайшей программе выводящей свой код и о похожем способе встроить баг в компилятор компилирующий самого себя так, что его не останется в исходном коде, но он будет воспроизводиться при каждой трансляции самого себя в машинный код.

Этот баг вирус, он есть в машинном коде, но программист встроивший его ничего о машинном коде может и не знать. И еще, на мой взгляд, баг должен сохраняться при кросскомпиляции для произвольной платформы :)

(Ответить) (Уровень выше)


[info]tarnyagin@lj
2010-09-26 19:14 (ссылка)
Апгрейд MS-офиса под предлогом "мне в почте Накладная.docx пришла, чем бы её открыть?" - явно прионное заболевание.

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 19:30 (ссылка)
Да, действительно - симптомы похожи, и на вирус не похоже, ближе к прионам :-)

(Ответить) (Уровень выше)


[info]malaya_zemlya@lj
2010-09-26 19:18 (ссылка)
Было довольно много компьютерных эпидемий по типу :кривой пакет данных приходит на сервер. Сервер начинает глючить, в судорогах он генерирует еще несколько подобных кривых пакетов, и так по нарастающей. IIRC пару лет назад от этого Gmail лег.

(Ответить) (Ветвь дискуссии)


[info]dibr@lj
2010-09-26 19:50 (ссылка)
Забавно - я думал, подобные глюки IP стека(?) - что-то времён ранних юниксов, и сейчас таких уже не делают.

По каким словам искать описание эпидемий? На слова broadcast storm гугль предлагает либо описание шторма при наличии "кольца" в локальной сети (т.е. аппаратной проблемы - вставили лишний провод в свитч), либо smurf/fraggle атак, которые строго говоря не дают самоподдерживающийся "шторм", поскольку используют умножение пакетов, но "режима автогенерации" не имеют, нужна внешняя подпитка.
А больше мне слов не придумывается :-)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tilimilitram@lj
2010-09-27 02:52 (ссылка)
Для автогенерации берем Фантом ОС :), которая умеет быстро восстанавливать упавшие процессы из создаваемых на лету контрольных точек. Генератор бомбардирует маршрутизатор плохими пакетами. В ситуации "получили пакет провоцирующий лавину + пакет вызывающий падение, сохранили контрольную точку, вызывали лавину и упали, мгновенно восстановились из последней точки" внешний генератор больше не нужен. Но это тоже не особенно интересно.

(Ответить) (Уровень выше)


[info]tilimilitram@lj
2010-09-28 02:03 (ссылка)
Наверняка, подобных неприятностей научатся избегать, не восстанавливая процессы упавшие несколько раз за короткое время, или пробуя восстанавливать их из все более ранних точек.

(Ответить)


[info]sergey_cheban@lj
2010-11-14 17:26 (ссылка)
К эпиграфу. Есть такое довольно известное выражение: "не делайте дуракам умных операций (http://wap.subclavia.borda.ru/?1-8-0-00000008-000-10001-0)".

(Ответить)