Я пишу эти строки на компьютере, где нет ни одной программы Microsoft. Ни MS Office, ни MS Windows, никакой другой! И пусть кто-то назовёт меня параноиком, я делаю это уже больше десяти лет и точно знаю, почему.
Я поступаю так потому, что потерял веру в способность Microsoft содержать в порядке то сложнейшее программное обеспечение, которое сама же компания и породила. Следствие чрезмерной сложности — ошибки и, соответственно, врождённая небезопасность её программ, а я не желаю, чтобы мой компьютер был открыт для взломщиков, недоброжелателей, вирусов или спецслужб.
И если информация на вашем компьютере имеет для вас хоть какую-то ценность, настоятельно советую вам поступить так же. Не так важно, чьи именно программы вы станете использовать, важно, чтобы на них не стояло клеймо Microsoft.
Параноик? Но снова и снова, по многу раз в год, случай подтверждает мою правоту. Как раз в эти дни раскручивается скандал вокруг очередного такого доказательства — и знать о нём полезно каждому, кто всё ещё пользуется майкрософтовским программным обеспечением. Это скандал вокруг ошибки в MS Office, со скучным номером CVE-2017-11882 (такие номера присваивают, чтобы сведения об ошибке было легче отыскать в Сети), но весьма опасной, а главное, с далеко идущими последствиями.
Ошибками в программах нынче никого не удивишь. Даже дети знают, что в каждой программе есть как известные, так и пока ещё не обнаруженные «проблемные места», которыми однажды могут воспользоваться к своей выгоде злоумышленники всех сортов, вирусы, конкуренты, шпионы. И всё-таки попадаются ошибки особенные — потому что стоящая за ними история позволяет сделать важные, масштабные выводы. Названная выше ошибка в MS Office — как раз из таких.
Отыскали её специалисты по компьютерной безопасности из Embedi: небольшой компании, квартирующей в США, но состоящей преимущественно из сотрудников с русскими именами. Приступая к работе, они задались вот какой интересной задачей. Согласно популярной легенде, бытующей среди компьютерщиков уже не одно десятилетие, стиль написания программ, принятый в Microsoft, может быть назван «спагетти-программированием». Так в шутку называют привычку выпускать программы, похожие на тарелку лапши. Они такие же запутанные, плохо поддающиеся анализу: попробуйте-ка разобраться в хитросплетениях хаотично наваленных макарон!
Ничего хорошего в таком стиле нет, но Microsoft, очевидно, в какой-то момент просто не смогла действовать иначе. Ведь она владеет несколькими самыми популярными программами в мире. Взять тот же MS Office: в нём десятки тысяч функций и, чтобы их запрограммировать, понадобились десятки миллионов строк кода (предположительно, там сейчас уже за 100 миллионов). Постоянно появляются новые функции, но ради совместимости (вдруг кому-то когда-то понадобится) Microsoft вынуждена сохранять и функции старые.
В результате в MS Office сейчас имеются компоненты, написанные программистами компании (или хуже того, подрядчиками со стороны) десятилетия назад! И, поскольку в те далёкие времена подходы к программированию были другими (в частности, о безопасности тогда почти не задумывались), ошибки в таких старых компонентах тоже наверняка имеются и эксплуатировать их должно быть сравнительно легко.
Но до сих пор это всё было на уровне догадок и программистского юмора. Вот в Embedi и задались целью проверить легенду о «лапше». И, опуская детали, которые можно отыскать в их подробной публикации, скажу: легенда подтвердилась! Они действительно нашли в MS Office компонент, изготовленный аж 17 лет назад и с тех пор не менявшийся: программный модуль для отображения и редактирования математических формул. А внутри него отыскалась и опасная ошибка.
Если коротко, с помощью текстового документа, содержащего особую формулу, всего лишь заставив жертву открыть его, можно перехватить управление компьютером. Это сработает с любой версией MS Office от начала века, с любой версией MS Windows, любой разрядности, без малейшего намёка для пользователя, что происходит что-то нежелательное для него! Есть, конечно, нюансы (в частности, документ должен быть открыт с жёсткого диска или из «облака», а не просто загружен из интернета), но, повторюсь, в данном случае важна не столько сама ошибка, сколько стоящая за ней история.
Почему же Microsoft не удалила этот архаичный компонент из MS Office? Ведь её программистам и менеджерам точно известно, что методы разработки программ семнадцать лет назад были менее безопасными, чем сегодня. Так почему не удалила или хотя бы не переработала его в соответствии с современными правилами? А ответ простой до смешного: по той самой причине приверженности «спагетти-программированию».
Удалить старый код нельзя: вдруг кому-то понадобится! А переписывать его боятся — потому что никто из действующих сотрудников разобраться в этой «лапше» не в состоянии! Отсюда — и логичное предположение, сделанное Embedi: в компоненте, отвечающем за отображение формул, наверняка найдутся и другие опасные ошибки, которые будет так же легко эксплуатировать. Но и отсюда же глобальный вывод: поскольку такой компонент в продуктах Microsoft наверняка не единственный, от её программ следует держаться подальше.
Трезво мыслящий читатель заметит, конечно, что то же правило может быть распространено практически на любой программный продукт возраста, скажем, больше десяти лет, пользующийся достаточной популярностью. И будет прав. Однако из этого правила есть важное исключение: продукты, развивающиеся под свободными лицензиями (GPL, Creative Commons, BSD и др.), или, как их ещё иногда называют, «свободные» или open source-продукты. Они находятся в более выгодном положении.
Дело в том, что исходные тексты свободных программ доступны всем желающим — и для просмотра, и для изменения. Образцами таких программ могут служить, например, LibreOffice, способный заменить MS Office, и Linux, способная заменить MS Windows. Продукты же Microsoft находятся в оппозиции: их код засекречен настолько, что, к примеру, для MS Office никто не знает в точности даже сколько в нём строк! И изучать его, без специальных инструментов и методов, могут лишь сотрудники самой Microsoft.
Совершенно очевидно, что чем меньше секретов в программе, то есть чем большее количество взглядов к ней приковано, тем меньше в ней останется ошибок и тем труднее скрыть плохое программирование. Статистика это подтверждает: в свободных программах ошибок меньше и они менее опасные.
Впрочем, я не призываю вас непременно пользоваться только свободным софтом (хоть сам принципиально пользуюсь исключительно им). Хотите минимизировать риски для себя и своего бизнеса? Выбирайте программы наименьшей сложности: более молодые, меньшие по размеру. Альтернатив тому же MS Office на рынке предостаточно: как локальных, так и «облачных», платных и бесплатных.
Что же до Microsoft, то ей, чтобы вернуть утраченное доверие, необходимо сделать минимум две вещи. Во-первых, радикально реформировать все свои крупнейшие программные продукты, как она уже проделала с операционной системой MS Windows 7 и браузером MS Edge: переписать «с нуля», избавившись от «лапши», накопившейся за десятилетия. Но самой по себе переписи кода ещё недостаточно. Во-вторых, ей необходимо организационно вернуться в те далёкие времена на рассвете её карьеры, когда разработкой программ руководили не пресловутые «эффективные менеджеры», заботящиеся только о деньгах, а технари, понимающие и ценящие хороший код.
Лично я оцениваю вероятность второй реформы как ничтожную. Microsoft проиграла. Делайте ставку на других игроков.
--------------------------------------------
Этот текст всегда доступен по адресу linux.su/121217.shtml