Pull to refresh

Comments 268

офигеть. звучит как дешевенький сериал про погромистов-взломщиков, только на самом деле :)
Вот только непонятно какое это имеет отношение к «самой сложной программе».

Каким-нибудь бациллам антракса тоже удаётся «проскочить» через множество заслонов, имеющихся в организме и они имеют массу приспособлений, чтобы их до поры до времени не заметили — но сравнивать их со сложностью человеческого организма просто глупо.

Сломать — обычно проще, чем починить, так что STUXNET, при всей своей изощрённости и близко не дотягивает до сложности браузера, в котором вы сейчас читаете эту статью — а этот браузер, в свою очередь, гораздо проще, чем многие другие программы, с которыми он взаимодействует.
При всей сложности браузера, сделать его проще, чем такого червя.
Просто представьте сколько закрытых и специфичных знаний было в него вложено.
Представьте себе ВЕСЬ цикл отладки, который понадобился для того, чтобы можно было смело выпускать его в сеть. Ведь у него была только одна попытка — любая ошибка обратила бы все эти усилия в пыль, выдав его с потрохами.
Просто представьте сколько закрытых и специфичных знаний было в него вложено.
Примерно столько же, сколько в какой-нибудь WebRTC.

Ведь у него была только одна попытка — любая ошибка обратила бы все эти усилия в пыль, выдав его с потрохами.
А с этим пожалуйте в НАСА. У них часто есть одна попытка на то, чтобы удалённо исправить ту или иную ошибку — и ничего, справляются как-то.
А с этим пожалуйте в НАСА. У них часто есть одна попытка на то, чтобы удалённо исправить ту или иную ошибку — и ничего, справляются как-то.

В данном случае ошибку невозможно было бы ни обнаружить, ни исправить удалённо. Т.е. условия ещё более жёсткие, чем в НАСА.
Т.е. условия ещё более жёсткие, чем в НАСА.
Условия — да, более жёсткие, сложность программы — нет.

Единcтвенная часть, которую НАСА далает, а разработчики Stuxnet не делают — проверка результатов работы (у Stuxnet этим шпионы занимались, очевидно, а не программа). Всё остальное — так же.

Только разработчики Stuxnet сделали свою работу один раз, а в НАСА такие вещи делаются десятки (сотни?) раз в год…
UFO just landed and posted this here
В данном случае ошибку невозможно было бы ни обнаружить, ни исправить удалённо.

Там же сказано, что червь скачивает свою самую последнюю версию. Раз есть версионирование, значит и есть исправление ошибок, не вижу причин не перепрошить контроллеры ещё раз.
А как быть со сложностью реверсного инжениринга винды и сименса?
Нет, конечно, если у хакеров был доступ к исходным кодам и внутренней документации производителей — дело принимает другой оборот.
Но представим, что их не было. Тогда что?
А как тестировать софт на урановой центрифуге? Это вообще не штатное изделие, у которого можно заказать копию и отладить в лаборатории (как делает NASA со своими тестовыми экземплярами).
А зачем тестировать софт на центрифуге? Достаточно воспроизведения программного окружения и частотника, который крутит центрифугу, сама механика не обязательна
Ну сам барабан не нужен. Но ПО контроллера понадобится. В абстрактный код просто так не встроишся. Надо же знать на каких входах какие сигналы, как закодированы и т.д.
Прошу прощения, воспринял ваш комментарий
А как тестировать софт на урановой центрифуге? Это вообще не штатное изделие, у которого можно заказать копию и отладить в лаборатории (как делает NASA со своими тестовыми экземплярами).

как необходимость полного воспроизведения HW и SW, хотя на самом деле достаточно программного окружения, исходного проекта Step 7 и ПЛК+частотник из железа.
Ты попробуй эти данные достань, разберись с особенностями систем как Siemens, у которой даже документации нормальной нет. И все закрыто. Это ппц сколько надо было потратить сил и времени. А как это все отладить я даже представить не могу.
> При всей сложности браузера, сделать его проще, чем такого червя.

Только мы что-то не наблюдаем разнообразия браузеров.

Наблюдаем.
ls -la /usr/portage/www-client/ | grep -c ^d
37

Конечно не все они браузеры в привычном смысле, но и не для всех ебилды написаны, так что в целом думаю где-то так и есть.

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

Почему вы думаете, что у него была лишь одна попытка? Ведь не зря же в него была встроена функция самообновления.
Если переходить на ваш уровень сравнения. Организм — это операционная система с установленным ПО и драйверами. Естественно это уже совершенно другой порядок сложности.
Компьютерный вирус ведь не зря назвали именно так. Он моделирует работу реальных вирусов, которые взламывают защиту иммунной системы организма, мимикрируют выдавая себя за «своих». Но биологические вирусы «писала» эволюция сотни миллионов лет, и я бы не рискнул говорить, что по сложности они уступают биологическим системам защиты присутствующим в организме.
По этой ссылке:
Stuxnet был очень сложной программой, содержащей около 10 000 строк кода, написание которых заняло человеко-годы.
Ok 10 000 строк кода может занять 2-3 человеко-года, но это не самый большой объем кода из известных. Нпр., антикварный компилятор Pascal-8000 OS 360/370 содержал 10 000 строк исходного кода. Извините м.б. я чего не понял в этой статье?

Понятно, что была успешно проведена очень сложная операция, которая потребовала непростой подготовки, но в сложной операции не обязательно применяют только очень сложные инструменты. Нпр., центрифугу можно подорвать простым динамитом, но это не упростит задачу и не уменьшит заслуг ее исполнителей.
Мда, взорвать центрифугу нынче считается заслугой…
Сложность зависит не столько от количества строк кода, сколько от количества блоков со сложной логикой. Сложная логика — тоже понятие субъективное, я бы оценивал это как логика. которую сможет написать далеко не каждый считающий себя программистом (и чем меньше людей сможет это сделать — тем сложнее логика). Но и с этой точки зрения, данный червь — не рекордсмен, потому как если взять ядро какой-нибудь ОС — да хоть ядро Линукс, или Windows, — то там сложной логики тоже найдётся в достаточном количестве.

Но статья всё равно интересная :)
Сложная логика — тоже понятие субъективное, я бы оценивал это как логика. которую сможет написать далеко не каждый считающий себя программистом (и чем меньше людей сможет это сделать — тем сложнее логика).

В принципе согласен. Но интересны детали. Нпр., упомянутый компилятор Pascal-8000 (структура компиляторов Вирта) — это сложная логика? Вроде- да, но парсер для такого компилятора и YACC сгенерирует…
Парсер — это ничтожно малая часть компилятора.
Если это не C++. В C++ парсер должен являться компилятором. Такая вот рекурсия…
В компиляторе, о котором речь, довольно простая генерация кода и несложная оптимизация. Парсер выглядит наиболее сложной частью.
Уважаемый переводчик,
скажите, пожалуйста: а что самое сложное в этой программе?:
залезть на USB-диск? выйти в инет? найти ПО Siemens? проснуться? повысить давление газа? что-то еще?
Я бы предположил, что самое сложное оставаться незамеченным во время и после выполнения этих процедур
Так заметили же. Не сразу — но заметили.
Заметили после того, как троян выполнил свою функцию. Есессно заметили. Вы бы тоже заметили, что у вас производство накрылось медным тазом. А в случае урановой промышленности — перетрясли бы каждый электрочайник, не то, что оборудование…
И тем не менее обнаружили его не в Иране (где он ароде как выводил из строя центрифуги), и даже не в России, а в Беларуси. Где и центрифуг-то никогда не было.
Нет, обнаружили его в Иране. Просто произошло это усилиями белорусской компании.
Смотрел фильм про это дело. Там говорили, было много заинтересованных сторон. Сторонники более агрессивной атаки, чтоб быстрее и посильнее все сломать. Сторонники скрытности, чтоб долго и медленно и по чуть-чуть. И как-то таки задрали ему агрессивность слишком сильно. И тогда-то его и нашли.
Вмешаюсь (я не переводчик)
Думаю, что самое сложное в этоц программе — ее успешно достигнутая цель, незаметно трахнуть ядерную программу Ирана.
Как минимум то, что программа делала всё вышеперечисленное (а ещё захватывала компьютеры и размножалась по сети и через USB) в течение года и за всё это время никто её деятельность не обнаружил. Ни одна антивирусная компания.
Речь про антивирусные компании Ирана?
Речь идёт про все антивирусные компании в мире. В основном червь был распространён в Иране (58% хостов), но при этом так или иначе встречался во многих странах. В конце текста есть ссылка на отчет Symantec с подробным описанием.
P.S. Не знаю наверняка, на едва ли у Ирана есть свои компании — разработчики антивирусов. Скорее всего они использовали ПО известных компаний.
А сколько еще других вирусов больше года живет в инете?
Пока их не найдут, их одновременно много и совсем нет.
Ok. Пока они не станут ломать центрифуги их никто не будет искать. Т.о. чтобы быть сложным не надо ломать центрифуги…
Ok. Пока они не станут ломать центрифуги их никто не будет искать.
Неправильно, поскольку они используют уязвимости обычных ОС, то как только уязвимость закрывается, то по активности вируса в песочнице он сразу и попадётся.
Совсем не так. Антивирусы вычисляют большинство заразы ещё на этапе внедрения в систему. Совсем не важно, какая боевая нагрузка идёт бонусом. Сам факт наличия в системе постороннего кода (Пусть и безопасного) — вторжение. И вредоносов, реально скрытно формирующих ботнеты в интернете — единицы. Большинство просто не лечат. А тут — не обнаружили даже. И это не только касперский, а тот же симантек.
Никто не знает. Это как «а кто самый лучший преступник?» Мы не знаем.

Могла заразить через флешки без создания файлов? Никого не насторожили левые файлы, связь непонятно чего непонятно с чем. Это же все должно отлавливаться, чай не бюджетники. Или таки бедные бюджетники с экономией на IT?

Конечно, могла. Софт такого уровня, да еще в те годы по-любому скрывал свое присутствие в системе — драйвера, перхватывающие системные вызовы и т.п., позволяющее искажать список файлов. Загрузочный вирус, в конце концов.

Загрузочный же в виде файла? Искажать список файлов можно на зараженной машине, а на новой нет. Не отключить автозагрузку в нынешние времена? Странно это все. На критические машины вообще никаких носителей не должно быть лишних. Или это все по сети шло или непонятно. т.к. на флешке должны были быть файлы на которые должны были обратить внимание, если там конечно IT вообще был.

1. Достаточно поставить 'Hidden' на лишние файлы, в организациях почти нет гиков, которые работают в консоли или в FAR, с отображением системных и скрытых файлов.

2. AutoRun не обязан быть включенным, вирус активировался из-за бага в отрисовке lnk-файла в проводнике, когда содержимое флешки просматривали через «Мой Компьютер».

3. В «критические» машины ничего и не сували, их заразили по сети, через другие уязвимости. Тут главное пройти в изолированную сеть.

За то есть ПО, которое ловит все эти автозагрузки и без антивируса.
Что за баг через lnk? Не встречал упоминаний.
Критические машины не должны быть в сети с остальными.

Что за баг через lnk? Не встречал упоминаний.
habr.com/post/99732

За то есть ПО, которое ловит все эти автозагрузки и без антивируса.
Если бы им ещё пользовались… К примеру, какое такое ПО установлено у нас в воинских частях или штабах? Я ничего такого не слышал.

Критические машины не должны быть в сети с остальными.
На момент проектирование разделение чёткое. А когда сдают в эксплуатацию, много лет компьютерами пользуются разные люди, немудрено и забыть, в какой компьютер что можно вставлять, а что нельзя.

Т.е. опять приходим к тому, что IT спецов там по сути не было. Экономили на допусках к секретам. Как обычно в прочем. Экономия.

А всё — из-за не совсем корректно переведённого слова:
"sophisticated" — в данном случае — скорее "изощрённый" чем «сложный» («complex», «difficult»).

Не берусь утверждать что Stuxnet действительно является одной из самых изощрённых программ, но так хотя-бы понятно что автор оригинального текста (на Quora) имел в виду.
А всё — из-за не совсем корректно переведённого слова:
«sophisticated» — в данном случае — скорее «изощрённый» чем «сложный» («complex», «difficult»).
Согласен. Интересно, что гугл предлагает еще вариант «вводящий в заблуждение». М.б. и этот вариант мог подойти для заголовка? ;)

Не берусь утверждать что Stuxnet действительно является одной из самых изощрённых программ
Наверное, можно утверждать, что программа Stuxnet прославилась тем, что сумела обмануть (надуть, оставить с носом и т.д.) службы безопасности сверхважного проекта целого государства (Ирана).

BTW Возникает интересный вопрос: если еще какое государство захочет освоить обогащение урана, то, опасаясь подобных диверсий, оно может заказать и закупить устаревшие центрифуги, которые применялись в докомпьютерные времена — там наверное была автоматика, но не сильно сложнее, чем предохранительный клапан первых паровых машин. Это будет интересный случай сознательного отказа от достижений прогресса по причине их уязвимости.
Никто такой херней страдать не будет. Просто не будут подключать ПК управляющие центрифугой к сети и запретят всовывать не пустые носители инфы.
Как тогда апдейтить центрифужный софт?
1. Так же как апдейтился софт большинства космических кораблей, спутников и луноходов/марсоходов (кроме самых современных) — никак.
Апдейты для такого критичного производства скорее вредны, чем полезны и нужны только при реальной критичной проблеме в софте, разумеется ОС и софт должны быть проверянными и отлаженными много раз до запуска в продашен.

2. Программист садиться за комп центрифуги, запускает компилятор, скажем, С++ программы, и с листочка переписывает изменения программы, отлаженные на тестовом стенде. А десяток других программистов, QA инженеров и чекистов стоят за его спиной и проверяют по своим листочкам.
1. Так же как апдейтился софт большинства космических кораблей, спутников и луноходов/марсоходов (кроме самых современных) — никак.
Апдейты для такого критичного производства скорее вредны, чем полезны и нужны только при реальной критичной проблеме в софте, разумеется ОС и софт должны быть проверянными и отлаженными много раз до запуска в продашен.
Рассказывает теоретик не имеющий ровно никакого представления о том, как устроены и работают космические корабли, спутники и прочее.

Про Apollo 14 слышали? А про Voyager? Про более современные марсоходы я уж и не говорю: апдейт софта для них — рутинная операция.

Разве что советские луноходы этого избежали: компьютеры тогда были настолько большими и медленными, что вместо программ использовался оператор, который следил за всем происходящим из ЦУПа с Земли.

Я надеюсь вы не предлагаете возле каждой центрифуги посадить оператора, который будет за ней следить?

2. Программист садиться за комп центрифуги, запускает компилятор, скажем, С++ программы, и с листочка переписывает изменения программы, отлаженные на тестовом стенде. А десяток других программистов, QA инженеров и чекистов стоят за его спиной и проверяют по своим листочкам.
И так — несколько сот раз. Я боюсь у программиста случится нервный срыв, а уж сколько раз программа будет вбита неверно, несмотря «десяток других программистов» — одному богу ведомо…
И так — несколько сот раз. Я боюсь у программиста случится нервный срыв, а уж сколько раз программа будет вбита неверно, несмотря «десяток других программистов» — одному богу ведомо…

Зачем сто раз? Достаточно один раз, а перекинуть апдейт от одного чистого компа к другому можно как по внутренней «чистой» сети, так и с помощью «чистых» накопителей, которые никогда не присоединялись к другим компьютерам. Это вполне обычные требования построения закрытых систем.

апдейт софта для них — рутинная операция

Я в курсе, что в ПО современные космичских аппаратов делают апдейты, раньше не всегда делали, а если и делали, то именно для очень критичных ошибок, любой апдейт потенциально может привести к гибели аппарата. То есть обноления для многих спутников или были невозможны или являлись самым последним средством, когда по другому аппарат будет потерен.
Достаточно один раз, а перекинуть апдейт от одного чистого компа к другому можно как по внутренней «чистой» сети, так и с помощью «чистых» накопителей, которые никогда не присоединялись к другим компьютерам. Это вполне обычные требования построения закрытых систем.
И это требования, которые достаточно просто нарушить.

Как только мы вводим в систему «доверенную» флешку или сеть, так тут же получаем шанс, что кто-то «для простоты» уберёт лишнее звено.

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

Довольно странно ожидать, что у центрифуг проблем никогда не будет и разбираться с ними никогда не придётся. Там и так с эффективностью проблемы, а вы предлагаете их очень сильно усугубить путём отказа от подстройки управляющий системы к реалиям…
так тут же получаем шанс, что кто-то «для простоты» уберёт лишнее звено.

За это трибунал с последующим лишением звания и тюремным заключнием на N лет.

И это требования, которые достаточно просто нарушить.

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

странно ожидать, что у центрифуг проблем никогда не будет и разбираться с ними никогда не придётся

Это разные условия, космос это одно, а произодственные приборы это другое. По хорошему ПО центрифуг должно позволять задавать любые возможные параметры и режимы без перепрограммирования. В отличии от космоса тут не внешних факторов, а все производственные режимы сто раз должны быть отлажены.
а перекинуть апдейт от одного чистого компа к другому можно как по внутренней «чистой» сети, так и с помощью «чистых» накопителей, которые никогда не присоединялись к другим компьютерам.

А еще придется убедиться, что сетевое оборудование чистой сети не содержит закладок, а новые носители из коробочки были действительно упакованы на заводе-изготовителе и действительно чистые.
Так закладка может быть и конролерах жестких дисков, процессоров и т.п. оборудовании. Поэтому на таком уровне паранои, гарантирована чистыми будет только отечественное железо и софт. Да и то, не на 100%.
UFO just landed and posted this here
десяток других программистов, QA инженеров стоят за его спиной и проверяют по своим листочкам
Проблема Ирана в том, что своих технологий нет. Оборудование иностранное, никаких исходников, обновления можно ставить только бинарные, полностью доверяя поставщику оборудования.
vedenin1980 говорит: пускай иностранный специалист от фирмы-поставщика приезжает на объект и под дулом автомата контролем местных безопасников перепечатывает апдейт с бумажки.
А я говорю о том, фирма-поставщик может дать только бинарный апдейт, закрытый цифровой подписью, который можно перепечатать за пару месяцев, но в котором никто ничего не поймёт. Чтобы были исходники, контроль и понимание, технология должна быть своя.
говорит: пускай иностранный специалист от фирмы-поставщика приезжает на объект и под дулом автомата контролем местных безопасников перепечатывает апдейт с бумажки.

Спасибо за перевод того что я говорю, но вообще-то я этого не говорил. Сами по себе апдейты оборудования в виде бинарных кодов от иностранного производителя при полном отсутствии альтернаативных средств контроля — гарантированная уязвимость, даже вирусов никаких не надо, достаточно найти способы давления на производителя или его инженеров.
Как нет, когда да?
2. Программист садиться за комп центрифуги, запускает компилятор, скажем, С++ программы, и с листочка переписывает изменения программы, отлаженные на тестовом стенде. А десяток других программистов, QA инженеров и чекистов стоят за его спиной и проверяют по своим листочкам.
UFO just landed and posted this here
Я не хочу видеть? Я привёл цитату vedenin1980, про которую он утверждает, что он такого не говорил.
Про перепечатывание бинарного файла вручную — не говорил ни он, ни я.
UFO just landed and posted this here
Если еще перечитайте цитаты, я говорил об одном из способов, как обычно делаются обновления для систем, которым запрещен доступ в внешний мир, вроде комьютеров управления ядерными ракетами или электоростанциями. Разумется, это бесмысленно в случае если программа сделана не в том же государстве или хотя бы нет полных исходных кодов.

Где вы там увидили предложение, чтобы иностранный программист приезжал за сверхсекретный объект чужой страны? Я не представляю ни одной страны, которая пустила бы гражданина другой страны на такой объект в принципе. Не говоря уже о гражданине потенциально-враждебного военного блока. И тем более, ни один иностранец на такой объект сам не приедет.
Ядерные объекты Ирана не были подключены к сети. И регламент носителей был. Не спасло это их из-за уязвимостей нулевого дня.
Ну и что? Всё равно никто не будет страдать покупкой древности. Просто регламент будет жестче — не втыкать флэшки вообще, например.
Почему вы так уверены? В банкоматах крупнейших банков мира стоит XP Embeded, которая до сих пор не снята с техподдержки. Во многом именно из-за большей предсказуемости поведения и большой временной проверки. Хотя большее старьё в мире живых ОС сыскать трудо. Почему бы и не взять какие-нибудь центрифуги времён российского докомпьютерного атомного проекта.
XP используется, потому что железо не тянет нихрена. А новое железо стоит как крыло от самолета, при этом смысла от него не много.
Это я с уверенностью заявляю как человек делавшим пару лет назад через своё ИП закупку XP Embedded для платежных терминалов партнера.
MS очень долго заявлял, что у его 10-ки системные требования в базовой версии ещё скромнее предшествующих ОС. Сам не сверял. Может и врали конкретно.
Но у вас есть ключевое: «смысла от него не много». А рисков-то больше. Не только в цене ИМХО дело.
«Я вам не скажу за всю одессу» (С)
Я не в курсе ситуации в каждом конкретном случае.
Мой единичный опыт однозначно указывает на единственную причину использования XP — legacy железо, которого уже закуплено дофига и давно используется. Нежелание менять кобыл, которые уже вывозят бизнес тыщу лет.
Не вижу причин полагать, что у других что-то отличается.
Стремление бизнеса к консерватизму вполне хорошо известно.
Я не могу представить человека(имеется ввиду не личность, а должность), который возьмет на себя ответственность перевести весь бизнес на другую ОС без веской причины.
MS очень долго заявлял, что у его 10-ки системные требования в базовой версии ещё скромнее предшествующих ОС. Сам не сверял. Может и врали конкретно.
По ресурсам достаточно посмотреть на минимальные требования: 64MB RAM у WinXP, 512MB Win10 IoT edition (самый тонкий), 256MB у Win10 IoT в режиме headless (т.е. только ядро и службы, без GUI).

Вопрос не сколько в мегагерцах/мегабайтах, сколько в поколении железа. XP можно включить на Pentium-1/133MHz (для терминала хватит), а для Win10 необходим процессор с проддержкой SSE2, NX и PAE. Т.е. Pentium-4 — минимум.
и не просто P-IV, а самые последние, на cedar mill, только у них NX появился
UFO just landed and posted this here
Самое сложное тут не завалиться ни на одном из шагов и выполнить поставленную задачу. В отличии от обычного ПО, вредоносное ПО не может быть так тщательно оттестировано и отлажено, хотябы потому что под рукой может не оказаться достаточного кол-ва центрифуг. Такого рода ПО использует множество недокументированных возможностей и багов. В любой момент что-то может пойти не так и не сработать. Такое ПО работает изначально во враждебной среде и его можно сравнить, например, с марсоходами)

А если рассматривать сложность в контесте глубин абстракции и сущностей, то конечно тут даже текстовый редактор со среднем функционалом его обойдет. Но вредоносам такая сложномть ни к чему, для них главное надежность. Поэтому чем проще, тем лучше
его можно сравнить, например, с марсоходами
Хороший пример! Задача написать ПО для марсохода выглядит сильно сложнее именно потому, что тестирование в реальных условиях невозможно ни за какие деньги, а вот в случае с центрифугами можно купить достаточное количество при условии достаточного финансирования проекта. К тому же, наверняка, можно (м.б. частично) использовать только части центрифуг и бракованные изделия. А испорченные (в ходе тестирования) ремонтировать. М.б. вместо покупки возможна аренда на время тестирования. Конечно, это задача не для школьного кружка информатики.

для них главное надежность. Поэтому чем проще, тем лучше
Ok. И для марсохода главное надежность.
Зато о действиях марсохода можно узнавать по телеметрии, и слать апдейты.
В случае же Stuxnet об его успехе/неуспехе можно было узнавать только по заголовкам иранских газет.
Насколько я понял червь в случае неудачи может обновиться и повторить попытку:
Затем червь проверяет, может ли он выйти в Интернет. Если может, он пытается посетить сайты www.mypremierfutbol.com или www.todaysfutbol.com. В то время эти серверы были Малайзии и Дании. Он открывает зашифрованный канал связи и сообщает этим серверам, что новый компьютер успешно захвачен. Зачем червь автоматически обновляет себя до самой новой версии.

После этого червь копирует себя на любое другое USB устройство, которое вам пришлось вставить.
Только на начальном этапе размножения. Всё интересное, в частности работа с центрифугами, происходит без доступа к интернету.
А что мешает слать апдейты? Зловред скопировал себя на USB-диск. Но в газетах (и в агентурных источниках) никаких сообщений, значит делают апдейт. И так до успеха или до полного провала.
Неизвестно, попал ли код на центрифуги. Возможно, код уже очень хорош, но просто его ещё не перенесли в защищённую сеть. В этом случае выпускать апдейт, меняющий поведение вируса, может быть вредно. Вдруг первая отработала бы правильно, а в новой версии либо слишком заметное поведение, либо новая не пойманная бага.
Неизвестно, попал ли код на центрифуги.
Скорее всего, поставщик центрифуг рассылает обновления ПО сразу всем своим клиентам. Поэтому про появление обновления не трудно узнать по официальным каналам. Вирус попадет вместе с очередным обновлением.

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

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

В статье указаны два возможных пути: 1) повысить давление газа; 2) повысить скорость. Если по первому не получилось, значит, придется пробовать второй, не получилось по второму — искать третий и т.д.
Скорее всего, поставщик центрифуг рассылает обновления ПО сразу всем своим клиентам.
Только зачем их устанавливать, если и так всё работает.
Только зачем их устанавливать, если и так всё работает.
Это вопрос к автору статьи — если бы их не ставили, вирус бы не добрался до цели.
Прочитайте статью, прежде чем комментировать. Она не очень длинная.
А что не так? М.б. Вы чего-то просмотрели?
В статье я не увидел упоминаний, что вирус проник благодаря установке обновлений.
А что еще могли таскать на USB-диске с одного компа (с инетом) на другой (без инета)? Неужели фотографии котиков?
Обычный документооборот в гос. учреждениях: отчётнось, заявления, приказы, планы. Котиков и порно тоже могли таскать, в личных целях.
Обычный документооборот в гос. учреждениях: отчётнось, заявления, приказы, планы. Котиков и порно тоже могли таскать, в личных целях.


При столь низком уровне безопасности задача вируса сильно упрощается.
Самое сложное — перевести текст на русский после гуглопереводчика.
Самое сложное
а) прописать сценарий со множеством ветвлений и распространения в неизвестной среде, сохранив скрытность
б) найти неизвестные доселе уязвимости в винде
в) найти неизвестные доселе уязвимости в сименсе
г) разработать алгоритм управления центрифугой, не имея на руках тестовой центрифуге (А откуда, это штучный товар)
разработать алгоритм управления центрифугой, не имея на руках тестовой центрифуге (А откуда, это штучный товар)

Я так понимаю это была операция спецслужб НАТО с приличным бюджетом, получить центрифуги для тестирования скорее всего не проблема, даже получить/купить бекдоры это только вопрос денег и влиятния.
Вот. Значит помимо кодеров ещё толпа агентов трудилась для разработки программного продукта. ИМХО это тоже надо включать в сложность общей разработки.
ИМХО это тоже надо включать в сложность общей разработки.
ИМХО в сложность общей разработки спец.операции, но не в сложность кода программы.
Речь всё-таки про сложность программы, а не всей операции. А то у нас программа для Аполлона самой сложной в мире станет…
Ну там роль программы скорее вспомогательная. Для обеспечения других операций. А тут наоборот — куча операций по обеспечению разработки ПО.
Тут программа не сильно сложнее, чем там, на самом деле.

Только там программа должна была довести ракету до луны и посадить её, а тут нужно довезти вирус до пещеры и там ломануть центрифугу…
на мой взгляд:
  1. Обнаружить никому неизвестные уязвимости
  2. Использовать совокупность этих уязвимостей вместе
  3. Завербовать инсайдеров в компаниях для кражи ключей
  4. Завербовать инсайдеров в Иране
  5. Скрытно оплатить их услуги
  6. Создать аналогичный лабораторный стенд
  7. Все то, что Вы описали

Господа не видели исходники линукса или хрома? Можно добавить исходники оракла, но тут согласен, их реально мало кто видел.
Ok. Also: в книге Диомидис Спинеллис, Анализ программного кода на примере проектов Open Source, М., СПб, Киев, 2004 в качестве примера «огромного кода» приведен Web-сервер apache.
Исходники ядра Linux покажутся цветочками по сравнению с монстром типа reload в коде GCC (почему-то при чтении заголовка статьи сразу подумал об этом).
снимаю шляпу и нервно тереблю в руках :) LLVM тоже вспомнился. По reload — вот это доставляет:
>Reload does everything, and probably no one exactly knows how much that is.
В то же время, он увеличивает давление газа в этих центрифугах. Этот газ называется UF6. Очень вредная штука. Червь изменяет давление этого газа чуть-чуть за пределами безопасных значений. Ровно для того, чтобы при попадании газа в центрифуги во время работы появлялся небольшой шанс того, что они превратятся в камни.

Кто "они"? Центрифуги? Пределы? Значения?

Речь шла о газе. Спасибо за замечание, поправил.
Пока я писал комментарий, автор исправил вызвавший претензии оборот. Однако здесь есть неочевидная штука (которую я выяснил, пока я писал комментарий, а автор успел исправлял оборот), поэтому я все же не удалю комментарий, а оставлю в исправленном виде.

В оригинале:
The worm makes the pressure of that UF6, just a tiny bit out of safe parameters. Just enough that the UF6 gas in the centrifuges, has a small chance of turning into rock, while the centrifuge is spinning.

Centrifuges don’t like running too fast or too slow. And they don’t like rocks either.


Т.е., выйти чуть-чуть из рабочего режима, чтобы гексафторид урана из газовой фазы мог превратиться в «твердь» во вращающейся центрифуге. Гексафторид урана — твердое соединение при обычных условиях, но у него тройная точка весьма близко к обычным условиям, и он легко возгоняется, а разделяют изотопы урана в газовой фазе. Небольшие изменения условий могут сильно менять агрегатное состояние гексафторида урана (газ/жидкость/твердое состояние), и понятно, что газовые центрифуги к такому фазовому переходу будут очень восприимчивы.
Как только прочел про случайно подобранную флешку, сразу подумал про стакснет.
Хотя, емнип, там было сложнее — заражение было двухфазным, сначала заразили компьютеры компании-разработчика ПО, которая имела выход в интернет. А оттуда уже заразили флешку, на которой переносили обновления в иранскую лабораторию, НЕ подключенную к интернету.

Много пафоса для простой истории в рамках хабра.
Дорогие критики, признайте, задумка червя гениальна, кто бы ни сделал это… он чертов гений!
И теперь подумайте, а что если… все компьютеры с виндой уже заражены… как вы проверите?
как вы проверите?
Подключим центрифугу и посмотрим нормально ли она работает:)
Вы про Reflections on Trusting Trust что-нибудь слышали? Люди над этими проблемами размышляют уже многие годы… а вы только что проснулись…
UFO just landed and posted this here
UFO just landed and posted this here
Зараза к заразе не пристает ;—)
Stuxnet- сдаже само название говорит, что асе может плохо кончится, а какая сторона плохо кончит-не известно. Вообщем-стухнет. И теперь понятно кто червь -создал;—)
Вообще-то, его так назвали не авторы, а вирусные аналитики, которые поймали червя. Может, авторы дали ему прекрасное название, а эти аналитики всё опошлили?
Ага, точно.
Ведь у секретных производств стандартизованные и известные API для управления их сердцем — центрифугами.
Центрифуги для секретных производств покупают у тех же производителей (Siemens и т.п.), что и для несекретных производств. Нету никаких «секретных заводов по производству секретных центрифуг», по крайней мере в Иране.
Маленькая поправочка: центрифуги Siemens не производит. Центрифуги производят совсем другие люди в совсем другом месте. И это производство — таки секретное (когда-то и завод был секретным, но те времена прошли).

Что было закуплено у Siemens'а — это аппаратура контроля. Когда-то и она была секретной, но тут Иран решил «не париться», взял универсальную у Siemens'а — на чём и поплатился.
Специальные версии для отдельных клиентов — обычное дело, а иногда и неотъемлемое. И покупая «такие-же» может оказаться что они вовсе другие. Так даже если бы производство было не секретным, все равно пришлось бы довольно много узнать чтобы быть уверенным.

Очевидно авторы вируса имели доступ к установке и документации. И зная, что делать, написали червь, который ползает по интернету и делает выше указанные действия. Нужно было, чтоб всё выглядело загадочно, и им удалось. Сложность программы сразу возрастает, если думать, что она создавалась в той последовательности, как автор излагает свою статью. Тем не менее, соглашусь, что программа сложная. Но самая сложная...??? Сложный вопрос. Примерно из серии, какая конфета самая вкусная. Вначале ожидал математического доказательства.

Согласен. Мат. док-во необходимо.
Тут скорее не сам код сложный, а сложность в знаниях(куча 0-day уязвимостей разного уровня и железа; ключи, которыми подписывали драйверы), необходимых для написания этого кода.
Почти конспирологический намек на спецслужбы )
Нет никаких сомнений, что Stuxnet разработан спецслужбами. В первую очередь, у кого ещё найдутся деньги на оплату нескольких программисто-лет ради саботажа иранской ядерной программы, т.е. безо всякой денежной выгоды?
Возможно да, возможно нет. Доказательств нет — посему и получается то самое конспирологическое «а кто же еще?»)
+не совсем понятно как это все тестировать
Сдаётся мне, это заслуга не хакеров, а АНБ или ЦРУ, которые просто пришли в Рэдмонд — «а ну гоните нам бэкдоры для одной важной спецоперации».
Не куча, а всего 1 zero day, согласно вики, остальные 3 были известны на тот момент. Автор статьи приукрасил.

Отбрасывая теорию заговора, можно предположить, что где-то с начала 2000-х в Microsoft сидел рецидивист под видом junior'а и время от времени делал баги в ядре. А потом тот же самый рецидивист перешел работать в реалтек. После опыта то работы над ядром операционки они его охотно взяли к себе. После этого ему оставалось лишь вставить флэшку в чужой комп, чтобы найти нужный файл приватного ключа на какой-нибудь билд-машине, используя свои же собственные баги.

Я вас умоляю. В программе размера с ядро Windows количество багов измеряется тысячами.

Засовывать туда ещё несколько, а потом надеяться, что их никто не заметит и не удалит — нафиг нужно?

Исходники Windows у спецслужб есть (да даже некоторым ВУЗам их дают под подписку о неразглашении), технологии поиска ошибок — давно известны (недаром на Хабре регулярно в соответствующем блоге статьи публикуются). Получите доступ к исходникам, заплатите за несколько человеко-месяцев работы — и накопаете сколько нужно багов.

Приватные ключи китайских компаний утекают регулярно. Вот более свежий пример.

Особенность stuxnet'а не в том, что он как! то особенно сложен, а в том, что он как-то особенно бесмысленен: денег на его создание ушло явно порядком, а ущерб нанесён не слишком большой.
ну так не надо засовывать, и программировать не надо — надо просто подсадить агента в QA-отдел и чтобы он
1. сливал внутреннюю информацию о багах
2. иногда как бы не замечал баги на своем участке тестирования (но отдавал их в «центр»)

Если сознательно всовывать баги — велика вероятность попасться, тем более у джуниора. Такие вещи у джунов получаются бессознательно (баги, которые не может понять даже сеньор). Чтобы делать их сознательно — нужен уже скилл сеньора.

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


Конечно, это не джун в общепринятых терминах. Такой человек должен разбираться в своем деле, чтобы внедрить в код какие-то сознательные уязвимости. Он должен понимать, что, где и как можно сделать, чтобы потом использовать это в своих целях.


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


А может то и другое одновременно?.. Но это так просто мысли вслух :)


P.S. Кстати, все мы знаем, что в Microsoft QA-отдел не пользуется особым уважением. Так что я не думаю, что у них там в принципе весь код всегда тестируется на все уязвимости. Ну может есть там в процессе у них что-то такое, но точно там люди сидят не с уровнем знаний, описанном в статье.

Так что я не думаю, что у них там в принципе весь код всегда тестируется на все уязвимости.
Невозможно протестировать код на уязвимости. В редких случаях, когда у вас мало кода, можно формально доказать Coq и всё такое), но этого и близко нету.

История с Windows ограничивается тем, что дыры в ядре Windows ищут разработчики Windows и слоумышленники — и ни те ни другие не заинтересованы в публикации статистики.

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

Если вы верите, что ядро Windows в сотни раз надёжнее и безопаснее… ну верьте…
Если вы верите, что ядро Windows в сотни раз надёжнее и безопаснее… ну верьте…

А вы точно на мой комментарий ответили?) Я вроде не сравнивал ядра различных ОС. Глядя на то, какие баги фиксятся в очередном обновлении, я с уверенностью могу сказать, что не считаю Windows безопасной системой (как впрочем и любую систему, так как уязвимости есть везде).


Невозможно протестировать код на уязвимости

Есть достаточно много фирм, которые делают аудит кода за деньги. Вы это к чему?

А вы точно на мой комментарий ответили?)
На ваш, на ваш. Вы продолжаете настаивать на том, что кому-то нужен человек в Microsoft, который что-то там будет куда-то отсылать.

Я же говорю о том, что гораздо надёжнее такого человека иметь на довольствии в спецслужбе: нулевая вероятность что его спалят и вполне достататочная эффективность.

Невозможно протестировать код на уязвимости
Есть достаточно много фирм, которые делают аудит кода за деньги.
К тому, что в этом «аудированном коде» потом всё равно находят ошибки.

На тему кода без уязвимостей мой любымый пример — это Nintendi Wii. То, что она дырявая как решето — это ладно. Прикол в другом: в Wii есть загрузчик, boot1. 17K. Зашит намертво в процессор, а не во флеш, так что замене не подлежит. Понятно, что его аудировали и проверяли и всё такое прочее… и, тем не менее, первые два года — в нём была дыра, которую залатали только через — года.

17K… два года. А теперь посмотрите на размеры кода любой современной ОС…

Ну я спорить с вами не буду. Может быть дешевле (читайте надежнее), может быть не дешевле. Я лишь предположил возможный вариант.


По поводу уязвимостей. Были и будут. Вопрос в качестве кода и его тестировании. А что касается вашего нинтендо… Кто его знает? Может и аудировали вовсе?..

Может и не аудировали вовсе*

Если сознательно всовывать баги — велика вероятность попасться, тем более у джуниора. Такие вещи у джунов получаются бессознательно (баги, которые не может понять даже сеньор). Чтобы делать их сознательно — нужен уже скилл сеньора.
Что, никогда не озаряло: "***, вот это я баг там оставил"? А сознательно можно потом никому не сказать.
И что толку? Такие баги, которые появляются каждый день, приводят к неверным результатам, мелким визуальным глюкам интерфейса, тривиальным ошибкам типа деления на 0 или разыменовывания null-указателя. Они не приводят к несакционированному предоставлению доступа или выполнению кода в данных.
Какие это «такие»? Это может быть потенциально любой баг. Да, конечно большинство багов не потенциально опасны, но бывает. К примеру недавний баг проверки пароля в MAC OS вполне способен быть таким с озарением потом.

Я не говорю что это прямо регулярный случай, но нельзя исключать теоретическую возможность.
И баг проверки пароля в логин-форме никак не поможет проекту stuxnet.
То есть, мы обсуждаем, как гипотетический программист работает на ЦРУ, а пришли к сценарию, когда он сажает баги не для своего проекта, а для соседнего.
да даже некоторым ВУЗам их дают под подписку о неразглашении

Их можно даже скачать, только тссс — никому не говорите.
Особенность stuxnet'а не в том, что он как! то особенно сложен, а в том, что он как-то особенно бесмысленен: денег на его создание ушло явно порядком, а ущерб нанесён не слишком большой.

Вам известны менее затратные способы вывести из строя иранские центрифуги?
Есть способы менее затратные и намного более быстрые. Но международное сообщество не поймёт.
Это какие? Атомная бомба, она ведь дорогая, зараза. А обычным вооружением до иранских заводов, запрятанных в горах достать крайне сложно.
Основная стоимость атомной бомбы в её разработке (поговаривают, эти деньги Израиль заплатил ещё в семидесятые), сам боеприпас не столь дорогой. А в качестве неядерного решения, израильтяне прикупили у США GBU-28 в количестве.
Теперь, поскольку червь получил полный контроль над центрифугами, он может сделать с ними всё, что захочет. Он может их всех отключить. Он может немедленно все их уничтожить – достаточно крутить их на максимальной скорости до тех пор, пока они не разлетятся как бомбы, убив всех, кто по случайности оказался рядом.


Нельзя ли пояснить, почему вдруг центрифуги, раскрутившись на максимальной скорости, должны разлететься как бомбы? Почему они вообще способны разогнаться до скоростей, которые не будут выдерживать, и почему если это произойдет, то разорвавшийся цилиндр будет вести себя как бомба?
Почему они вообще способны разогнаться до скоростей, которые не будут выдерживать

На них стоит софт, который следит, чтобы они не разгонялись до скоростей, которые не будут выдерживать. Именно этот софт и стал мишенью для вируса.
в одном НИИ центрифуга из-за небольшого дисбаланса улетела через перекрытие на этаж выше и весело покатилась снося стены.

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

UFO just landed and posted this here
Это вы с прямым углом перепутали. Сверхкритические центрифуги вот только-только появились у Росатома, во временя Stuxnet'а их не было. Все центрифуги, которые могли быть у Ирана — подкритические, софт там следит, чтобы частота вращения не подходила слишком близко к критической частоте…
Остался непроясненным вопрос — сколько центрифуг было убито в процессе отладки?

Сколько секретных ядерных программ Ирана было убито в процессе отладки :)

Сколько секретных ядерных программ Ирана нужно, чтобы вкрутить лампочку :)

Две. Одна — для изначального существования лампочки, вторая, чтобы заменить лампочку, когда та stuxnet.
* многозначительно подмигивает

Имея в наличии доступ к документации, коду проекта и неограниченное количество ресурсов, можно сделать/украсть виртуальный прототип и отлаживать там.

UFO just landed and posted this here
Соль в том, что они атаковали не хлебопечку в лавке Махмуда, а самый охраняемый объект государства, в котором тоже неплохо откормленная разведка и службы безопасности и ресурсы и всё такое.
UFO just landed and posted this here
Или прокатило: они же объявили три неделю назад, что сворачивают ядерную программу.
Ракету и боезаряд к ней они сделали. И у них штольни засыпало.

Так что приостановка (вряд ли полное сворачивание) произошли по «естественным» причинам.
"… две независимых, секретных ошибки в Windows о которых никто не знал..."
видимо дядюшке Билли сделали предложение от которого он не смог отказаться.

Я глянул в оригинал...


В обсчем, там тоже очень неверное в профессиональном смысле выражение: моторы сами по себе просто не могут называться частотно-регулируемым приводом — это достаточно серьёзная неточность.


Скорее, червь искал определённые виды частотных приводов — например, по типам GSD-данных в профинет/профибус конфигурации — и смотрел, какие именно двигатели к ним подключены.

Основная сложность здесь это незакрытые уязвимости. Обычному человеку сложно найти несколько уязвимостей 0-го дня, но для спецслужбы любой страны, думаю, это проблемы не составит. Достаточно найти сотрудника с доступом к коду и тикетам, и воздействовать на него деньгами или другими способами. Сотрудников таких сотни хоть в MS, хоть в Сименсе. Да и за такую утечку скорее всего никому ничего не будет, максимум — уволят, если докажут.
Ребята, тут больше вопрос к переводчику, а не к автору статьи и вопроса.
«sophisticated» — больше вопрос о изощренности, а не о сложности. И переводить статью нужно было как вопрос «Какая, на ваш взгляд, самая хитроумная программа, написанная на текущий момент?»
Хочу понять — надо ли центрифуги подключать к компьютеру с интернетом?
Простая блокировка роутером всех IP адресов и сайтов кроме указанного для передачи данных куда-либо могли бы предупредить такую проблему.
Собственно если мы говорим о средней азии, то это менее развитые народы. Видимо скрытые файлы для их админа в новинку. Да и XP наверняка везде стоит.
Фишка в том, что компьютеры НЕ БЫЛИ подключены к Интернету. Честный, настоящий, air gap. Но зато в качестве компенсации — годами не обновляющаяся винда и персонал, особо не думающий ни о каких брандмауэрах…
Это не спортивно!) Очевидно, это целенаправленная атака, вирусня написана спецслужбами под определенную задачу.
Если говорить про сложный софт, то это ОС/базы данных, если про вирусы — Zmist(2002) — произведение искусства от нашего соотечественника Z0mbie и финальный салют вирусной сцены. По сложности и продвинутости так никто эту планку не взял, а дальше наступила эра унылоты — теперь вирусные аналитики разгребают комбинации технологий двадцатилетней давности, а самые олдовые с теплотой вспоминают те дни и шедевры.
They say a good picture is worth a thousand words. The T-1000 model from the film Terminator 2 is the easiest analogy to use. Zmist integrates itself into the code section of the infected application as the T-1000 model could hide itself on the floor.
Art of Computer Virus Research and Defense

Увы, принятие ст. 273 УК РФ надёжно заблокировало все исследования вирусных технологий, даже в лабораторых условиях и исключительно в исследовательских целях.

Государство хотело защитить своих граждан, а на деле уникальная тусовка, которая сложилась в ex-СССР в 90-е, здесь больше не появится. Самые сильные хакеры будут появляться, например, в Китае (вспоминаем, на кого теперь молятся все геймеры-пираты после выхода очередной Denuvo).

Учитывая, в какие годы принят этот закон и влияние в эти годы наших заокеанских партнёров, продвижение этого закона могло быть спланированной спец-операцией :D
Такое явление как сцена уже не появится нигде, и дело не в законе, также как китайские хакеры — это не про сцену.

В некотором смысле Win32.Zmist, появившийся в начале XXI ве-
ка, – это финальный «салют» всей эпохе Win32-вирусов. После его
появления писать вирусы для заражения PE-файлов стало бессмыс-
ленно – никто не оценит, никто не поймет. Можно, конечно, упомя-
нуть «монстра» Win32.MetaPHOR, написанного пару лет спустя.
И все.
Нет, Win32-вирусы, конечно, пишут. Ежегодно появляются не-
сколько новых разновидностей «заразы» для Windows. Но, во-первых,
«несколько» – это не те «десятки» и «сотни», которыми был отмечен
рубеж тысячелетий. Во-вторых, не то что «переплюнуть», а хотя бы
встать вровень с Win32.Zmist и Win32.MetaPHOR современным
вирусам не под силу. Да и изменились побудительные мотивы виру-
сописателей. Почти никто уже не стремится «сказать новое слово» и
«оставить след». Современные Win32-вирусы тоже очень сложны, но
они представляют собой наборы давно известных технологий, меха-
нически объединенных в единое целое. Назначение подобных виру-
сов (например, Win32.Virut и Win32.Sality) – заразить на компьюте-
ре все, что возможно, а затем постоянно висеть в памяти, – рассылая
«спам» и зарабатывая деньги своим авторам.
Компьютерные вирусы и антивирусы: взгляд программиста(2013)


проникнуться той эпохой:
z0mbie.daemonlab.org — z0mbie, с 2005 о нем не известно ничего
z0mbie.daemonlab.org/mistfall.txt — описание вируса от автора
dsr.segfault.es/stuff/website-mirrors/29A — здесь автор трудился и издавался)
Те студенты, которые составляли «ударную силу» IT-фронтира начала нулевых — выросли и закономерно захотели денег. Теперь они уже ни строчки кода не напишут без предварительно составленного плана монетизации.
А новых энтузиастов не появилось и уже не появится, потому что эпоха фронтира закончилась. Исчез тот ореол таинственности и романтики, который привлекал молодых людей с горящими глазами. Компьютеры стали слишком обыденной вещью.
Учитывая, в какие годы принят этот закон и влияние в эти годы наших заокеанских партнёров, продвижение этого закона могло быть спланированной спец-операцией :D

Вы так говорите, как будто законы, принятые в РФ в любые другие годы, были сильно полезнее.

Из тех программ, с которыми я сталкивался, самой сложной был бинарник, реализующий бизнес-логику Поиска Google.


Начать с размера — у Поиска есть жёсткие правила по добавлению новых зависимостей, так как бинарник близок к размеру, при котором линкер вылетает с OOM.


Быстродействие измеряется миллисекундами. Для оптимизации в числе прочего используются трюки с выделением памяти: большое количество мелких объектов удаляются не независимо, а все вместе — одним блоком памяти. (proto arenas)


В процессе работы над запросом вызываются от десятков до сотен бэкэндов. Все они должны закончить работать в пределах отведённого времени, причём на любом континенте, где у Гугла есть датацентры. Для обеспечения concurrency в этом фреймворке есть кастомная реализация green threads.


При генерации ответа запускаются десятки или сотни модулей, заточенных на ответы на вопросы определённого вида. Некоторые из них генерируют не сам ответ, а всевозможную дополнительную информацию: ссылки на похожие вопросы и т.п.


В эту программу вложено десятки тысяч человеко-лет работы.

Смешно звучит фраза «Моторы, которые он ищет, называются «частотно-регулируемые приводы»»
Словно компетенция автора очень далека от этой сферы и он даже не собирается посмотреть что там глубже.
А я бы в первую очередь PLC Siemens и рассматривал как источник вируса.
Я б придумал такую теорию заговора:
Stuxnet — это муляж, прикрытие для настоящего источника вируса.
Сам вирус находится во Flash микроконтроллеров частотного преобразователя.
Либо он там сразу сидит, либо попал во время ремонтов или тех. обслуживания.
Возможно в SoC-ах частотников сидят микро RF приемопередатчики. Скажем замаскировать RF часть под микросхему гальванического изолятора. Тогда перепрошить их мог персонал дистанционно.
Все частотники соединены Ethernet сетью. Это стандартное решение у Siemens-а. Но протоколы в той сети проприетарные, и даже речи не идет о их контроле сторонним оборудованием. Т.е. у Siemens полная свобода и безнаказанность действий в локальной сети.
Самая сложная вещь во всем этом деле была поднять хайп вокруг флешек со Stuxnet чтобы никто не вспомнил про Siemens.
Кстати подъем частоты центрифуги в два раза вызовет увеличение потребляемой мощности в 4-е раза т.е. в квадрате. На такие скачки потребления мгновенно должна была среагировать автоматика, если она опять же не была от Siemens.


Центрифуги работают на доли процентов ниже предела прочности. Если бы их возможно было раскрутить ещё на несколько процентов — уже раскрутилибы, так как это сильно увеличивает выход изотопов.

Так что речь идёт об чрезвычайно тонком увеличении оборотов. Незначительно ближе к пределу отвердевания гексафторида, немного недостаточно для того что бы центрифуги начали разрушаться.
Я не специалист по безопасности и не хакер, но какой-то детсад в этой конторе по обогащению урана — флешки может вставлять кто угодно и куда угодно. Почему сразу не был сделан физически закрытый контур, все компьютеры кроме администратора без устройств ввода с физических носителей, а у админа CD-DVD дисковод только для чтения, с которого инсталлировать с CD-DVD дисков софт только от поставщика и только присланный поставщиком на диске? Windows можно было вообще поставить один раз и не обновлять, потому что в физически закрытом контуре без разницы есть там дырки или нет, работает да и ладно.
И ходили бы любые черви вокруг этого закрытого контура кругами и ничего бы не сделали.
Просто удивляюсь этой ситуации, вроде бы серьезные люди делали серьезное дело, а об элементарных вещах не думали.
Там так и было. Вирус заразил 58% компьютеров СТРАНЫ, чтоб попасть на флешку человеку, у которого есть доступ.
Примерно так и было. Я читал, цель была — заразить все фирмы, которые присылали техников для обслуживания чего-то (не центрифуг, конечно) внутри комплекса. Так преодолели air gap. А дальше уже по локалке.
UFO just landed and posted this here
Я за давностью лет уже позабыл, как там было, а лезть в википедию лень, но вроде бы не было там никакого airgap'а. Ну, то есть, авторы stuxnet были уверены, что он там есть и делали упор на распространение через флешку. А червя в конечном итоге поймали непосредственно через интернет, потому, что с этих компов и центрифугами рулили и порнуху смотрели.
На мой взгляд самая сложная такая программа, детали работы которой никто не знает. И которая при этом очень большая. Например, нейросеть AlphaGo и другие.
Например, нейросеть AlphaGo и другие
А тут, кстати, очень интересно. Сама по себе программа, строящая нейросеть не слишком велика и сложна.

А вот уже построенная нейросеть — это десятки мегабайт каких-то цифр… Можно ли и нужно ли считать их программой? Как понять — насколько она на самом деле сложна? Вопрос оссенно философский…
нейросеть является функцией от х переменных (х — число рецепторов), собственно процесс обучения сети — это попытка построить поверхность функции решающей поставленную задачу (из простых примеров — объяснение почему xor не строится на однослойной сети — тупо не получается создать такую поверхность)
Если рассматривать червя как функцию то станет ясно что не так уж и много у него входных параметров, поверхность решений тоже не сильно многомерная, в общем то тему развернули уже в обсуждении — речь идет не о сложности а о суммарном knowledge вложенном в него. Скрипт считающий по уравнению e=mc^2 напишет любой школьник, а что бы само уравнение вывести нам пришлось ждать Пуанкаре и Эйнштейна.
UFO just landed and posted this here
Coq сам по себе нет, там чекер тривиальный, а вот его примочки/стратегии — да, соглашусь.
UFO just landed and posted this here
лежащая именно в основе чекера математика — тривиальна. Это реализация чекера на основе символьной логики, там по сути единственная операция — это инсерт над строкой. принцип такой же как в metamath, просто чуть более сложная реализация. metamath (если понимать что имеешь дело с символьной логикой, сам создатель в своей книге 30 страниц посвятил описанию поиска решения но ни разу не озвучил про символьную логику) — так вот, если это понимать то исходник чекера metamath раскуривается за один вечер и это не преувеличение. На Coq однозначно уйдет больше но не намного. Другое дело — вывод типов, это да, посложнее и математика там повеселее. Но это как раз стратегии, ибо теории дающей вывод типов на вершине лямбда куба нет и что самое отвратное — доказуемо быть не может, поэтому либо ограничения системы типов (и получаем детерминированный Хиндли-Милнер) либо гуляем по полной но не все что можем написать можем доказать (и получаем эвристики/стратегии и необходимость в приличном математике, который будет чутко останавливать полет фантазии когда код полезет в недоказуемую область)
UFO just landed and posted this here
Идрис да, мне понравился. По моему с Вашей же подачи с ним и познакомился. Но там да, в отличие от Coq, ядро — вывод типов а не чекер пруфа. Не знаю как в идрис, но подозреваю также как в хаскеле — документацию читаешь как математический трактат )
UFO just landed and posted this here
В статье нагнали много жути про неуязвимость червя, но вот эта фраза:
Если может, он пытается посетить сайты www.mypremierfutbol.com или www.todaysfutbol.com.
заставляет усомниться в идеальной конспирации.
Какая дрянь с моего ПК, периодически ломится на непонятные адреса и при этом даже сосёт с них какой-то трафик… Хорошо настроенный файервол должен сразу реагировать на подобные вещи.
Вы не понимаете, это был ну очень сложный червь, понимаете? Очень, сложный! Вот прям совсем сложный. Не верите? Он использовал три недокументированные уязвимости компьютерных мышек. Теперь понимаете? У них колесики начинали крутится сами собой, пока мышка не выходила из строя. Тогда ее заменяли на новую, а она уже с обновленной прошивкой червя! Все потому что он был очень сложный.
В русскоязычной Википедии сейчас читаю, что этот вирус обнаружили белорусы. Переключаюсь на английский — там уже Касперский открыл. Тут, в комментариях, дают ссылку на статью где Symantec рассказывают что видели этот вирус еще за год до событий. Антивирусные компании, такие антивирусные…
Каждый был первым, потому что каждый не может доказать что остальные не правы. Так, кстати, много где бывает.
Белорусы вычленили тело stuxnet непосредственно на иранских компьютерах. Остальные находили червя в процессе его размножения, но не видя всей картины, не понимали на что именно он ориентирован.
В английской википедии также сказано, что «The worm was at first identified by the security company VirusBlokAda in mid-June 2010.»
Сейчас да.
Просто когда я писал комментарий, английская статья начиналась со строчки, что это найденный Касперским червь. Кто-то неравнодушный уже подправил. Там в истории видно.
Неравнодушные делают мир лучше.
Бред! причем бред рассчитанный на офисных програмеров.
Засомневался, когда дочитал до фразы «Моторы, которые он ищет, называются «частотно-регулируемые приводы»» и убедился в этом окончательно, когда прочитал про увеличение давления газа и «И у вас даже не было возможности узнать почему.»

Уж очень этот креатив похож на рекламу «обеспечения информационной безопасности»

вот если бы червь заражал сей девайс вот это была бы действительно сложная программа
вот если бы червь заражал сей девайс вот это была бы действительно сложная программа

И куда этот девайс вставлять в урановой центрифуге? И сможет ли он в принципе показать разницу давления, которую создавал вирус. А главное, Вы готовы стоять около крутящейся урановой центрифуги в течении смены и смотреть на него?
Там есть две планки, которые, что характерно, выставляются отверткой. Как только давление выходит за выставленные отверткой пределы, замыкаются/размыкаются контакты, и соответственно рубится питание и выбрасывается блинкер (флажок).
Именно блинкер, для того чтобы обеспечить, квитирование (взвод блинкера) человеком.
Только после взвода блинкера допускается повторный пуск установки. В некоторых случаях квитирование производится под подпись-протокол-отпечатки пальцев.
И вот задача вируса была — подвести центрифуге поблике к «блинкеру», но так, чтобы флажок не упал.
Но это означат, что кто-то уставку на манометре неправильно поставил. Кстати эти уставки делаются тоже под подпись-протокол-отпечатки пальцев.
так это точно бред или вы просто засомневались из-за плохо выглядящих терминов?

я тоже не люблю статьи, в которых плохо с терминами, которые я знаю, но я всегда отдаю отчет, что есть ошибка в описании мелких деталей и есть ошибка в описании системы в целом

здесь, в статье — системные ошибки есть?
Бред…
Автор не имеет понятия как строятся программно-аппаратные комплексы соответствующие промышленной безопасности.
Первый уровень защит, самый надежный, механический (самый простой пример — реверсивный пускатель), мне улучалось видеть установку в которой открыть дверь в опасную зону можно только застопорив приводной вал.
Второй уровень защит электромеханический (пример «реле обрыва поля»), в последнее время стало модно использовать электронику, так называемые желтые реле безопасности. Червям там негде разместится, там даже процессора нет. Как правило эти устройства рубят всю установку при выходе параметра за уставки.
И только потом контроллеры, которые должны быть безопасны, с этим сложнее. Производители напихивают в них столько фишек, что уже сами не в состоянии отследить баги и дыры. Поэтому, я сторонник самописаных контроллеров, с потребным в данной задаче функционалом.

По поводу частотников — ни один серийный частотник не подойдет для урановой центрифуги. Это очень очень уникальное изделие, подозреваю, что даже все уставки жестко прописаны в коде, а код сидит в аппаратно защищенной от записи флеш.

Перескочил на частотники, забыл написать про HMI, человеко машинный интерфейс, в роли которого, чаще всего, выступает десктоп. Вот там вирусам есть где разгулятся.
Но в том числе и в целях безопасности, управляющая программа сидит на контроллере (Бекэнд — контроллер, фронтэнд — HMI) и просто не воспринимает преступные указания от HMI, какие бы вирусы в нем не жили.
спасибо, но вы описали как надо строить, а не реальность
а в реальности мало кто строит системы «как надо»

другими словами — вы хотите поручиться, что в Иране все было сделано именно на таком уровне безопасности, который вы считаете нужным?

если вы причастны к иранской программе или просто знаете точные факты о её реализации — напишите хотя бы краткий пост, все очень высоко оценят и будут вам благодарны
С иранской ядерной программой не знаком, но думаю, что в Иране живут такие же инженеры как и везде.
Насчет того «как надо» все прописано в огромном количестве нормативных актов. И существует множество государственных служб контролирующих исполнение этих нормативных актов. От ГосТехНадзора до пожарных.

По поводу частотников — ни один серийный частотник не подойдет для урановой центрифуги. Это очень очень уникальное изделие, подозреваю, что даже все уставки жестко прописаны в коде, а код сидит в аппаратно защищенной от записи флеш.

Так частотники были кастомные, а вот контроллеры, которые ими управляли — обычное. Там ничего сложного и не надо, просто команды посылать-принимать.
Windows, Realtek, JMicron: США — Иран, Тайвань — Китай; физики-ядерщики на подмоге у взломщиков. И не только они. Так что, думаю, сложность работы самой «неизвестной команды» проргаммистов сильно преувеличена. Много чего и много кто им попросту слил.
А звучит красиво, конечно.
Кстати да. Тут путают сложность программы и сложность всей спецоперации, частью которой была программа.

Программа — среднего уровня сложности, в общем-то. А вот если добавить сюдя всё что там есть, кроме, собственно, кода… тут да — много интересного…
UFO just landed and posted this here
Данный сюжет чем-то напоминает, сюжет из книги «Проблема трех тел», где инопланетная раса
с планеты Трисолярис, отправили в сторону Земли «софоны» — микро-суперкомпьютеры, одной из задач которых, было вносить хаос в измерения (в ускорителях частиц), тем самым, останавливая научный прогресс, в то время как инопланетный флот добирался до земли.

Финал этой трилогии ("Конец смерти") — одно из самых больших разочарований :(

UFO just landed and posted this here
UFO just landed and posted this here
Ну, первый же баг в системе безопасности Ирана — это использование Windows.

Далее: недопустимо поручать управление системой (центрифугой) и контроль параметров — одной системе. Тут надо разные системы — желательно максимально разные, т.е. если программные, то на процессорах разных типов (например, ARM и MIPS).
Желательно реализовывать контроль параметров работы максимально аппаратно, без участия программ вообще. Ну или на примитивных процессорах.

И наконец, на этом примере становится очевидно, почему любой стране, желающей политической независимости, нужна максимальная технологическая/экономическая независимость от мировых рынков. Почему надо производить внутри страны, а не покупать у внешних солидных контор, плотно сидящих под колпаком враждебных спецслужб.

Ну, первый же баг в системе безопасности Ирана — это использование Windows.


Это не Ирана баг, а производителя этой SCADA-системы — компании Сименс. Иранцы конечно изрядно помогли автору stuxnet — в их сети творился страшный бардак в области безопасности (самый страшный бардак из когда либо устроенных, хаха), но избавиться от windows было не в их силах.


нужна максимальная технологическая/экономическая независимость от мировых рынков


А это, увы, в наше время невозможно. Какие-то ключевые технологии могут быть собственными, но построить полную производственную цепочку ВСЕГО — сейчас не в состоянии ни одна страна. Нет независимых стран. Ни США, ни Китай, ни Северная Корея от чего-то подобного не застрахованы.

Баг Ирана — в том, что они выбрали поставщика, который поставляет SCADA-систему под Windows. Надо было хотя бы требовать возможности запуска SCADA-системы под WINE или типа того. А в идеале — требовать многоплатформенную систему.

Кроме того, баг был в том, что систему заказали у потенциального противника — страны-члена НАТО.

Я понимаю, что в наше время полная автономность невозможна. Но к ней надо стремиться. И по хорошему — надо укрупнять государства: например, единое государство из России, Китая и Бразилии уже вполне способно быть почти самодостаточным.
Тут собрать Украину-Беларусь-Казахстан-Россию невозможно, а вы на Китай с Бразилией замахиваетесь )))
Набор стран я составил достаточно случайно, ориентируясь на размер и возможности этих стран. Реалистичность создания единого государства из именно этих трёх государств — я не рассматривал.
Ну да, сходство с БРИКС чисто случайно вышло )))
Дж.Оруэлл — безусловно, гений. Но его предсказания хоть и сбылись в главном — очень сильно отличаются от реальности. В частности, у него нет ни автоматической обработки изображений, ни даже хранения видеоархива, чтобы прежнее поведение подозреваемого можно было просмотреть уже после появления подозрений.

Так что и границы государств вряд ли совпадут с тем, что он предсказывал. И количество государств м.б. не три.
Я только не понимаю, зачем сворачивать программу.
Сломались центрифуги, можно начать заново, с нуля. Никто не продаёт оборудование — можно своё спроектировать. Ведь США и СССР обогащали уран 70 (!) лет назад. Сейчас возможностей в тысячи раз больше. И информации больше везде, и оборудование (даже гражданского назначения) такое, которое немыслимо было в те времена.
зачем сворачивать программу

Чтобы не надорваться. Попытки сделать во что бы то ни стало всё своими силами могут в лучшем случае отодвинуть реализацию проектов вправо на неопределенный срок. А могут и окончательно надорвать экономику страны.
В случае Ирана — передвинуть влево
Сейчас возможностей в тысячи раз больше. И информации больше везде, и оборудование (даже гражданского назначения) такое, которое немыслимо было в те времена.
И тем не менее все компании, серийно делающие центрифуги — делают их на основе разработок СССР! Удивительно — но факт.

Первым был СССР, как уже упоминалось (замечание для тех, кто будет праздновать «победу советского образования»: разработчиком был Макс Штеенбек из Германии, хотя Арцимович и многие другие приняли в этом деятельное участие). Сегодня это дело продолжает ТВЭЛ.

Дальше — центрифуга появилась в Европе, куда уехал один из разработчиков. Там тоже много чего интересного произошло, но, в конце-концов, «у них получилось» и сегодня ETC (компания, которой владеют совместно URENCO и AREVA) тоже умеет их делать.

Наконец Китай. Тут, в общем, пока непонятно. Через некоторое время после того, как в бурные 90е (в 1997м, если быть точным) Китай получил завод с центрифунгами из России CNNC создала-таки «самостоятельно» центрифуги. Вот только… на дату новости посмотрите, да? И учтите, что это — центрифуги, «успешно прошедние испытания». USEC в Америке испытания-то своих центрифуг (разработанных, как бы, в 1977 году, то есть уже 40 лет назад) провёл… а работающего завода у них нет до сих пор.

Такие дела.

А теперь — вопрос:
Ведь США и СССР обогащали уран 70 (!) лет назад.
Как же так-то? Если, как уже упоминалось, США до сих пор не освоили центрифуги, то откуда взялись малыш и толстяк? А очень просто: кроме пресловутых центрифуг есть ещё много способов обогащения урана. Американцы использовали газодиффузный.

Вот только есть одна беда: все способы, кроме центрифуг — на порядок дороже (минимум на порядок). То есть вот для изготовления бомбы — они подойдут, да. А для АЭС — нет. Слишком дорого.

Такие дела…
Опять же, можно вести исследования на опережение, а не догонять.
Лет 5 назад все науч-поп сайты писали о сенсации — лазерном способе обогащения урана, и как мировое сообщество стопорит эти исследования, чтобы в любом гараже не обогащали. Вот Ирану стоит проверить, есть ли здравое зерно за этой шумихой.
Опять же, можно вести исследования на опережение, а не догонять.

Это может себе позволить Китай, но не Иран.

Лет 5 назад все науч-поп сайты писали о сенсации — лазерном способе обогащения урана, и как мировое сообщество стопорит эти исследования, чтобы в любом гараже не обогащали.
А 25 лет назад они про «холодный термояд» писали.

Если на всё подобные «сенсации» деньги бросать — можно быстро стать банкротом. Какую-нибудь лабораторию профинансировать — можно (и не исключаю, что так Иран и делает) но «по крупному» вкладываться в «сенсации науч-попа» не стоит.

Конкретно с Ураном беда в том, что у него 900 энергетических уровней и 9000 переходов. «Попасть» в один из них — так же сложно, как сделать газовую центрифугу. Когда и если кому-то удастся — все будут точно также копировать. Но сколько времени и денег уйдёт на опыты — никому сейчас неведомо…
UFO just landed and posted this here
khim
20.05.18 в 08:45
И тем не менее обнаружили его не в Иране (где он ароде как выводил из строя центрифуги), и даже не в России, а в Беларуси. Где и центрифуг-то никогда не было.

trimtomato
20.05.18 в 15:18
В русскоязычной Википедии сейчас читаю, что этот вирус обнаружили белорусы. Переключаюсь на английский — там уже Касперский открыл. Тут, в комментариях, дают ссылку на статью где Symantec рассказывают что видели этот вирус еще за год до событий.

Немного истории…
Во времена Союза в Белоруссии было крупнейшее научно-производственное объединение по разработке и производству различных центрифуг. Объединение разрабатывает и производит в Беларуси центрифуги и в настоящее время.
10 июля 2010 компания «ВирусБлокАда» (Беларусь, Минск) в своем пресс-релизе сообщает об обнаружении 17 июня 2010 года вредоносной программы, использующей новую уязвимость для своего распространения и описывает процесс заражения и распространения.
23 июля 2010 компания «ВирусБлокАда» в своем пресс-релизе "Об уязвимости CVE-2010-2568 в операционных системах Microsoft" опять возвращается к этой теме.
В документе "SCADA & PLC VULNERABILITIES IN CORRECTIONAL FACILITIES" (от 7/30/2011) указывается, что Stuxnet обнаружил Сергей Уласень из VirusBlokAda (17 июня 2010 года). С переводом этого документа "Уязвимости SCADA и PLC в исправительных учреждениях" (от 10.11.2011) можно ознакомиться на SecurityLab.
Спасиба за комментарий. То есть получается, что на SIEMENS перевели и управление центрифугами в России? Просто раздолбаев было меньше и флешку с вирусом никто не сунул?
Неужели так сложно использовать linux вместо windows? Дешевле, безопаснее, удобнее…
Написать подобную программу под Linux — не сильно сложнее, чем под Windows.
На самом деле, сильно сложнее добиться столь же эффективного распространения (58% компьютеров в стране?), если писать под малопопулярную ОС. А шанс преодолеть air gap напрямую зависит от повального заражения компьютеров всех причастных к предприятию.
Для этого вирус может быть двухкомпонентым. Если он на windows-машине, то linux-часть спит, и наоборот.
А такой вирус написать примерно вдвое сложнее, чем лишь одну из его половин.
Так что Dugnist прав: использование Linux существенно бы усложнило задачу атакующих.
не сильно сложнее, чем под Windows
Я думаю, намного сложнее. Главная уязвимость — CVE-2010-2568, которая крашит проводник при ошибке структуры lnk-файла. Для эксплуатации что важно: нужно точно знать структуру стека в уязвимой ф-ции и по каким известным адресам находятся нужные байты, чтобы в адрес возврата положить указатель на код типа lea eax, [ebp+20] / jmp eax, что запустит код в стеке.

Под windows всё понятно — у нас Windows Explorer определённых версий, которых всего 3-4 штуки (WinXP, SP1, SP2). Можно очень заморочиться и сделать эксплойт под 3 системы. Но включение в поддержку любой дополнительной бинарной сборки ОС, чтобы везде одинаково работало, повышает сложность эксплуатации на порядок.

Под linux сразу вопрос — какой DE? Если знаем DE, то какой бинарник, в каком окружении, какие ещё известные (с точностью до адресов нужных байт) so-файлы есть в процессе. Тут ещё сложность — одна промашка, и вместо запуска вредоносного кода получаем креш процесса и сразу это всё привлекает внимание программистов при массовом распространении и сразу уязвимость закрывается.

Да и глупостей нет в linux, типа autorun или открытия списка файлов при вставке флешки.
UFO just landed and posted this here
Да и глупостей нет в linux, типа autorun или открытия списка файлов при вставке флешки.
Зато есть автомонтирование. Причём монтируются все файловые системы, какие нашлись на флешке. А создатели этих файловых систем проповедуют «страусиную политику»: если ваша файловая система битая — то мы ни за что ответственности не несём. Дальше — организуем пачку файловых систем, под разные ядра. И всё.

Тут ещё сложность — одна промашка, и вместо запуска вредоносного кода получаем креш процесса и сразу это всё привлекает внимание программистов при массовом распространении и сразу уязвимость закрывается.
Не креш процесса, а креш ядра. Который, если мы всё успешно заэксплоитили, можно и из логов вычистить. И никто ничего закрывать не будет — максимум запустят fsck, убедятся, что файловая система таки действительно побилась, чертыхнутся и будут дальше работать…
А создатели этих файловых систем проповедуют «страусиную политику»: если ваша файловая система битая — то мы ни за что ответственности не несём.
Это я понимаю как «не отвечаем за сохранность данных», дальнейшая запись на битую FS может попортить ещё больше. Но никак не «нам тут отрепортили RCE в ядре, но мы его фиксить не будем, потому что FS битая».

максимум запустят fsck, убедятся, что файловая система таки действительно побилась
офигеют немного, что на флешке откуда-то возникла «пачка файловых систем, под разные ядра».

Мы же говорим о массовой эпидемии? Если вирус будет крешить систему хотя бы на 5% машин, то кто-то из исследователей обязательно доберётся до причины и вскроется, что пол-страны заражено. А когда разберут код пейлоада, усилят меры безопасности на объектах и второго шанса не будет.
Но никак не «нам тут отрепортили RCE в ядре, но мы его фиксить не будем, потому что FS битая».
Когда уже есть готовая RCE — тут и Microsoft просыпается и фиксит. А вот когда «всего лишь» переполнение… ошибки могут годами висеть. Пока кто-нибудь RCE не изобразит. Вот тут — подробнее.

офигеют немного, что на флешке откуда-то возникла «пачка файловых систем, под разные ядра».
Многи ли пользователей будут разбираться с тем, что там творится на флешке, если она выглядит как обычная флешка без всяких странностей? После того, как вы запустили код в ядре можно уже спокойно все эти файловые системы отмонтировать…

Если вирус будет крешить систему хотя бы на 5% машин, то кто-то из исследователей обязательно доберётся до причины и вскроется, что пол-страны заражено.
А с чего он будет крешить машину? Ядро в таких случаях не любит умирать. Да, «kernel oops» в логах может остаться, но и только. И вирус, в конечном итоге, таки обнаружили, так что и под Windows — та же история…
Это я понимаю как «не отвечаем за сохранность данных», дальнейшая запись на битую FS может попортить ещё больше. Но никак не «нам тут отрепортили RCE в ядре, но мы его фиксить не будем, потому что FS битая».
Вот кстати, свеженькое обсуждение как раз в тему. Краткая выжимка:
Keep in mind that filesystems are persistent structures that have
lifetimes of tens of years. We have to support users with old
formats, regardless of the unfixable problems they may have. We do
what we can to mitigate those issues for them and encourage users to
upgrade their kernels and on-disk formats, but we can't just shut
off access to the old formats in new kernels because a new fuzzer
found an old problem we've known about for years.

IOWs, when we came across this problem, we had the choice of two
things when initially validating the log size:

— only warning users of v4 filesystems and leaving them exposed to a
bug that could caused runtime hangs in very rare corner cases
(very low risk); or

— preventing them from accessing their filesystems and data on
kernel upgrade, thereby directly affecting millions of existing
filesystems in production around the world.

In this case, the *choice of least harm* was to warn about the
problem for v4 filesystems and continue onwards, but to reject
mounts that failed log size validation on the new v5 filesystem
because the on-disk format bug is fixed in v5 filesystems.



What's the point of doing that when the attacker can just move to
some other exploitable filesystem e.g. ext2/3/4, vfat, btrfs, hfs,
etc? They have known vulnerable and exploitable on disk formats,
too.
По моему это куда ближе к «нам тут отрепортили RCE в ядре, но мы его фиксить не будем, потому что FS битая», чем к «не отвечаем за сохранность данных», дальнейшая запись на битую FS может попортить ещё больше.»
Позиция примерно понятна:
— это устаревший говнокод с ошибками, мы в него лезть не будем, потому что мы энтузиасты и за свой интерес работаем только с новым кодом, и вообще, чего вы к нашей FS прицепились — вон, в btrfs такая же ошибка;
— но и вырезать этот код из ядра тоже не будем, потому что у юзеров отвалятся диски, отформатированные 10 лет назад старым форматом.

Вывод? Если бы я был закоренелым линуксоидом, наверное у меня было бы больше аргументов.

Может, забагованные подсистемы все как-то помечены и их можно исключить из сборки ядра для критичных к безопасности дистрибутивов? Как минимум, было бы логично, если бы кто-то взялся за работу по созданию таких дистрибутивов. Возможно, эта проблема сферическая в вакууме, относится к использованию ретро-fs от какого-нибудь 8-битного Commodore, и не относится к дистрибам типа CentOS.
Вывод? Если бы я был закоренелым линуксоидом, наверное у меня было бы больше аргументов (может, забагованные подсистемы все как-то помечены и их можно исключить из сборки ядра для критичных к безопасности дистрибутивов?)
Увы… Это часть переписки между security researcher'ами из Гугла и официальными мейнтейнерами XFS, одной и популярнейших Линуксовых серверных файловых систем…

Из того же треда:

I disagree with Google's syzbot strategy, and I dissent most vehemently!

The whole point of constructing free software in public is that we
people communally build things that anyone can use for any purpose and
that anyone can modify. That privilege comes with a societal
expectation that the people using this commons will contribute to the
upkeep of that commons or it rots. For end users that means helping us
to find the gaps, but for software developers at large multinational
companies that means (to a first approximation) pitching in to write the
code, write the documentation, and to fix the problems.

Yes, there are many places where fs metadata validation is insufficient
to avoid misbehavior. Google's strategy of dumping vulnerability
disclosures on public mailing lists every week, demanding that other
people regularly reallocate their time to fix these problems, and not
helping to fix anything breaks our free software societal norms. Again,
the whole point of free software is to share the responsibility, share
the work, and share the gains. That is how collaboration works.

Help us to improve the software so that we all will be better off.


как минимум, было бы логично, если бы кто-то взялся за работу по созданию таких дистрибутивов
Взялись, да — только пока неясно когда оно будет готово…

Ну потому что подход: мы тут говнокодим, а когда в нашем коде кто-то находит ошибки — то пусть он их и правит… не слишком конструктивен.

Так что, увы, к флешкам Линус узявим почти также, как и Windows…
Так в Windows нет незакрытых публичных уязвимостей по флешкам, так что «почти также» надо заменить на «много хуже».

А вообще, мне понравился пассаж «Мы тут стараемся-кодим, а Гугл в своём секьюрити-еженедельнике нам в морду баги тычет, ай-ай-ай, как не этично. Нам теперь что, всё бросить и фиксить?»
Прикольно, спасибо. Я думаю, перевод сильно выиграл бы, если использовать «ты» вместо «вы». А то как в старой шутке, в Англии все такие вежливые, что даже с кошками на вы.
Нормальная страна имеет своё собственное ПО, включая процессоры, операционные системы и языки программирования. И её программные комплексы, вырабатывающие уран, не связаны с Инет. Только и всего. Если такие условия не соблюдаются, это не развитая страна.
И она всегда будет находиться под угрозой атаки своего импортного оборудования.
Кстати, все станки импортного производства соединены с Инет и получают из него обновления и новые инструкции. Не говоря уже про банковские системы, которые без Инет жить не могут. Ведь глобализация!
И всё это может каюкнуться в произвольный момент. Это если верить официальной пропаганде, где неоколониальная страна всегда борется со своим реальным хозяином, что только и мешает ей стать самостоятельной.

Но успокойтесь. Каюк никогда не придёт из Инет! Т.к. Инет и есть главный фактор, привязывающий неоколониальные экономики к неометрополиям. И станки, банки, центрифуги — всё это служит лишь привязкой, а не средством развития самостоятельности.
Впрочем, были и обратные примеры. И они работали отлично. Но на этом ресурсе они не популярны.

Кстати, этот ресурс также не может существовать без подпитки извне))) Интересно, правда?
Нормальная страна имеет своё собственное ПО, включая процессоры, операционные системы и языки программирования. И её программные комплексы, вырабатывающие уран, не связаны с Инет. Только и всего. Если такие условия не соблюдаются, это не развитая страна.
Только это не «нормальная страна», «сферически-вакуумно-нормальная страна». Ибо под ваш критерий не подходит ни одна страна в мире, а обсуждать несуществующие в природе обьекты довольно-таки бессмысленно.

Дальнейшие рассуждения вообще непонятно о чём.
Согласен. Но существовавшие ранее страны обсуждать, считаю, можно. И обсуждаю. Т.к. то, что существовало, может быть как минимум повторено. Это диалектика.
Впрочем, были и обратные примеры. И они работали отлично.


А какие именно примеры, расскажите, пожалуйста, подробнее?
Больше удивляет разгильдяйство иранцев: большинство серьезных производств (и не урановых в том числе) регулярно проводят проверки оборудования, в том числе проверку скоростей моторов (простым языком: клеится светоотражайка на вал и специальным лазерным «пистолетом» меряют обороты).
Обычно всё это по некоторому графику производится. Потому помогает против проблем с оборудованием, но не против диверсии, которая может крутить центрифуги нормально во время проверок и с повышенной скоростью, когда их нет.
Насколько я понял по документу, вот что делает червь с ПЛК (программируемыми логическими контроллерами):
Подменяется библиотека обмена данными с PLC. Каждые 5 минут дергается PLC, не в сети ли.

Для PLC 315:
Библиотека передачи данных записывает на PLC 315 новый блок FC1869. Шифрует его, программатор его не видит.
В OB1 и OB35 прописывает выполнение FC1869.
В SDB ищет коннекшны с частотными преобразователями (ЧП) фирм Fararo Paya и Vacon NX, присоединенные по profibus (сеть такая) в том числе через CP (коммуникационный процессор). Также есть упоминание, о том, что заражает по profibus другие PLC, но я не очень понял про этот пункт.
После некоторого затишья (~13 дней) ожидает скорости ЧП в районе 800-1200 Гц. Затем циклически начинает менять скорость от 2 до 1400гц. Затем следует 27 дневный перерыв и действие повторяется, но со скоростями 2-1064Гц. Через 27 дней все повторяется по кругу.

Для PLC 417:
Записываются куча блоков в PLC.
Программно создаются новые DB с текущей адресацией profibus. Видимо собираются данные для системы мониторинга WINCC.
На profibus выбираются почти случайно несколько девайсов и изменяется их поведение на ~7 минут. Всего 110 девайсов из 164.
Уничтожаются все созданные DB.
Затем следует 35 дневный перерыв и все повторяется.
Что за девайсы, по коду неизвестно.
ничего себе: «на границе дозволенного», выглядит как будто хотят рандомно словить какие то резонансы или вообще перегреть двигатель(это возможно?) частым старт-стопом
Вряд ли перегрев. Скорее преобразователь перегреется, чем двигатель, и остановится с выдачей аварийного сообщения.
Резонансы тоже врядли. Если только превышение макс. скорости. Разгон и торможение происходит по рампе, она-то точно тестированая. Вероятно атака как-то ломает оборудование в сочетании с действиями plc 417.
Там проблема в самих центрифугах. К них есть критическая частота, при которой они очень быстро выходят из строя. Самые современные, так называемые сверхкритические, как понятно из названия, работают на частоте выше критической и просто быстро при запуске эту частоту проскакивают. Но пока они есть только у Росатома. Американцы тоже пробовали, но в какой-то момент у них… сработала пожарная сигнализация и всё грубо ожесточила. Половина центрифуг превратилась в груду металлолома сразу, а остальные — потом, когда выяснилось, что эта, денег на ремонт нету.

С подкритическими, которые были у Ирана, такого жесткача быть не может, но подобравшись ближе к критической частоте можно много бед наделать… износ, как минимум, кратно ускорить…
Самая сложная часть — сделать так, чтобы большая часть мира пользовалась техникой, скрытые уязвимости для которой делаешь ты
Червь блокирует их так, что если кто-то заметит, что что-то странное, он не сможет отключить эти центрифуги.
Утверждение выглядит очень подозрительно.
Sign up to leave a comment.

Articles