Самая сложная программа

https://www.quora.com/What-is-the-most-sophisticated-piece-of-software-code-ever-written
  • Перевод
От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

Пристегни ремни.

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

Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.

Сначала червь появляется на USB диске. Кто-то мог найти диск, лежащий на земле, получить его по почте и заинтересоваться его содержанием. Как только диск вставлялся в компьютер c Windows PC, без ведома пользователя, червь автоматически запускал себя и копировал на этот компьютер. Существовало как минимум три способа, с помощью которых он мог себя запустить. Если не работал один, он пробовал другой. Как минимум два из этих методов запуска были абсолютно новыми и оба использовали две независимых, секретных ошибки в Windows о которых никто не знал до того момента, как появился этот червь.

Как только червь запускается на компьютере, он пытается получить права администратора. Его не сильно беспокоит установленное антивирусное ПО – он может игнорировать большинство таких программ. Затем, в зависимости от того, на какой версии Windows он работает, червь попробует один из двух ранее неизвестных методов получения прав администратора на компьютере. Как и ранее, до появления этого червя никто не знал об этих скрытых уязвимостях.

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

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

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

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

Червь, о котором мы говорим очень сложный. И мы ещё даже не начали.

После этого червь начинает использовать два недавно обнаруженных бага в Windows. Один баг связан с сетевыми принтерами, а другой – с сетевыми файлами. Червь использует эти баги, чтобы установить себя по локальной сети на все другие компьютеры в офисе.

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

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

Например, уран.

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

Но нет. Это сложный червь. И у червя есть другие планы.

Как только он захватил все центрифуга в твоем заводе… червь просто засыпает.

Проходят дни. Или недели. Или секунды.

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

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

В то же время, он увеличивает давление газа в этих центрифугах. Этот газ называется UF6. Очень вредная штука. Червь изменяет давление этого газа чуть-чуть за пределами безопасных значений. Ровно для того, чтобы при попадании газа в центрифуги во время работы появлялся небольшой шанс того, что он превратится в камни.

Центрифуги не любят работать слишком быстро или слишком медленно. И камни им тоже не нравятся.

Но у червя остался последний трюк. И он гениален.

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

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

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

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

Что бы вы делали, если бы управляли этим заводом по обогащению урана? Вы бы проверяли всё снова и снова и снова, не понимая в чем проблема. Вы могли бы при желании поменять все компьютеры в заводе.

Но центрифуги бы всё равно ломались. И у вас даже не было возможности узнать почему.

Со временем, под вашим надзором, около 1000 центрифуг ломаются или отключаются. Вы сходите с ума в попытках выяснить, почему всё работает не так, как планировалось.

Именно это и произошло на самом деле

Вы никогда не будет ожидать, что все эти проблемы были созданы компьютерным червем, самым хитрым и умным компьютерным червем в истории, написанным какой-то невероятно секретной командой с неограниченным количеством денег и времени. Червь был разработан только с одной целью: пройти через все известные способы цифровой защиты и уничтожить ядерную программу вашей страны так, чтобы его не поймали.
Создать программу, которая могла бы сделать ОДНУ из этих вещей само по себе маленькое чудо. Создать программу, которая может делать ВСЁ это и много другое…

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

Ну. И что?
Реклама
Комментарии 267
  • +18
    офигеть. звучит как дешевенький сериал про погромистов-взломщиков, только на самом деле :)
    • +34
      Вот только непонятно какое это имеет отношение к «самой сложной программе».

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

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

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

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

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

              Только разработчики Stuxnet сделали свою работу один раз, а в НАСА такие вещи делаются десятки (сотни?) раз в год…
              • +6
                Только разработчики Stuxnet сделали свою работу один раз, а в НАСА такие вещи делаются десятки (сотни?) раз в год…

                Справедливости ради, мы точно не знаем, сколько раз в АНБ делали такую работу. Мы знаем, что, как минимум, Stuxnet и платформа Flame/Duqu были обнаружены. Мы не знаем, сколько обнаружено не было.

              • +3
                В данном случае ошибку невозможно было бы ни обнаружить, ни исправить удалённо.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                          А еще придется убедиться, что сетевое оборудование чистой сети не содержит закладок, а новые носители из коробочки были действительно упакованы на заводе-изготовителе и действительно чистые.
                                                          • 0
                                                            Так закладка может быть и конролерах жестких дисков, процессоров и т.п. оборудовании. Поэтому на таком уровне паранои, гарантирована чистыми будет только отечественное железо и софт. Да и то, не на 100%.
                                                            • 0
                                                              И компилятор придётся брать верифицированный, и рантайм до мозга костей, по-хорошему.
                                                        • 0
                                                          десяток других программистов, QA инженеров стоят за его спиной и проверяют по своим листочкам
                                                          Проблема Ирана в том, что своих технологий нет. Оборудование иностранное, никаких исходников, обновления можно ставить только бинарные, полностью доверяя поставщику оборудования.
                                                          • 0
                                                            vedenin1980 говорит: пускай иностранный специалист от фирмы-поставщика приезжает на объект и под дулом автомата контролем местных безопасников перепечатывает апдейт с бумажки.
                                                            • +2
                                                              А я говорю о том, фирма-поставщик может дать только бинарный апдейт, закрытый цифровой подписью, который можно перепечатать за пару месяцев, но в котором никто ничего не поймёт. Чтобы были исходники, контроль и понимание, технология должна быть своя.
                                                              • –1
                                                                говорит: пускай иностранный специалист от фирмы-поставщика приезжает на объект и под дулом автомата контролем местных безопасников перепечатывает апдейт с бумажки.

                                                                Спасибо за перевод того что я говорю, но вообще-то я этого не говорил. Сами по себе апдейты оборудования в виде бинарных кодов от иностранного производителя при полном отсутствии альтернаативных средств контроля — гарантированная уязвимость, даже вирусов никаких не надо, достаточно найти способы давления на производителя или его инженеров.
                                                                • 0
                                                                  Как нет, когда да?
                                                                  2. Программист садиться за комп центрифуги, запускает компилятор, скажем, С++ программы, и с листочка переписывает изменения программы, отлаженные на тестовом стенде. А десяток других программистов, QA инженеров и чекистов стоят за его спиной и проверяют по своим листочкам.
                                                                  • +2
                                                                    Вы в упор не хотите видеть того факта, что никто вам исходники не даст, а перепечатывание бинарного файла вручную ничего не даст.
                                                                    • +1
                                                                      Я не хочу видеть? Я привёл цитату vedenin1980, про которую он утверждает, что он такого не говорил.
                                                                      Про перепечатывание бинарного файла вручную — не говорил ни он, ни я.
                                                                      • +1
                                                                        Зачем приводить цитату того, что в принципе невозможно?
                                                                        Про перепечатывание бинарного файла это единственная возможность сделать обновление «вручную» без прямого использования носителей информации.
                                                                        • 0
                                                                          Если еще перечитайте цитаты, я говорил об одном из способов, как обычно делаются обновления для систем, которым запрещен доступ в внешний мир, вроде комьютеров управления ядерными ракетами или электоростанциями. Разумется, это бесмысленно в случае если программа сделана не в том же государстве или хотя бы нет полных исходных кодов.

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

                                                                        Вопрос не сколько в мегагерцах/мегабайтах, сколько в поколении железа. XP можно включить на Pentium-1/133MHz (для терминала хватит), а для Win10 необходим процессор с проддержкой SSE2, NX и PAE. Т.е. Pentium-4 — минимум.
                                                                        • 0
                                                                          и не просто P-IV, а самые последние, на cedar mill, только у них NX появился
                                                              • 0

                                                                В чём проблема? — взломают производителей флеш-контроллеров.

                                                          • +6
                                                            Самое сложное тут не завалиться ни на одном из шагов и выполнить поставленную задачу. В отличии от обычного ПО, вредоносное ПО не может быть так тщательно оттестировано и отлажено, хотябы потому что под рукой может не оказаться достаточного кол-ва центрифуг. Такого рода ПО использует множество недокументированных возможностей и багов. В любой момент что-то может пойти не так и не сработать. Такое ПО работает изначально во враждебной среде и его можно сравнить, например, с марсоходами)

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

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

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

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

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

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


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

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

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

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

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

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

                                                                            В оригинале:
                                                                            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.


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

                                                                            Много пафоса для простой истории в рамках хабра.
                                                                            • –6
                                                                              Дорогие критики, признайте, задумка червя гениальна, кто бы ни сделал это… он чертов гений!
                                                                              И теперь подумайте, а что если… все компьютеры с виндой уже заражены… как вы проверите?
                                                                              • +62
                                                                                как вы проверите?
                                                                                Подключим центрифугу и посмотрим нормально ли она работает:)
                                                                                • +1
                                                                                  Вы про Reflections on Trusting Trust что-нибудь слышали? Люди над этими проблемами размышляют уже многие годы… а вы только что проснулись…
                                                                                  • +2
                                                                                    Любая венда, которая самостоятельно скачивает исполняемые файлы и запускает их без согласия пользователя (т.н. обновления) уже потенциально заражена.
                                                                                    • +3
                                                                                      все компьютеры с виндой уже заражены

                                                                                      Небольшое исправление.
                                                                                      • 0
                                                                                        Зараза к заразе не пристает ;—)
                                                                                        • –5
                                                                                          Stuxnet- сдаже само название говорит, что асе может плохо кончится, а какая сторона плохо кончит-не известно. Вообщем-стухнет. И теперь понятно кто червь -создал;—)
                                                                                          • +1
                                                                                            Вообще-то, его так назвали не авторы, а вирусные аналитики, которые поймали червя. Может, авторы дали ему прекрасное название, а эти аналитики всё опошлили?
                                                                                        • +3
                                                                                          Ага, точно.
                                                                                          Ведь у секретных производств стандартизованные и известные API для управления их сердцем — центрифугами.
                                                                                          • +14
                                                                                            Центрифуги для секретных производств покупают у тех же производителей (Siemens и т.п.), что и для несекретных производств. Нету никаких «секретных заводов по производству секретных центрифуг», по крайней мере в Иране.
                                                                                            • +6
                                                                                              Маленькая поправочка: центрифуги Siemens не производит. Центрифуги производят совсем другие люди в совсем другом месте. И это производство — таки секретное (когда-то и завод был секретным, но те времена прошли).

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

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

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

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

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

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

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

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

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

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

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


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


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


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


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

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

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

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

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

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


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

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

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

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

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

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

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

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


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

                                                                                                                        • 0

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

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