Авторы сценария и режиссёры
Создавать программное обеспечение можно двумя способами: или писать его на языках разного уровня, компилировать и собирать в исполняемые форматы и библиотеки, или писать его на языках сценариев и так и оставлять в виде мусорной кучи отдельных файлов. У обоих способов есть набор преимуществ и недостатков. У первого преимущества серьёзные и существенные: высокая производительность, простой и очевидный контроль версий, а главное, сложность подмены готового продукта неуполномоченными лицами. Недостатки в некоторой степени происходят от этих же преимуществ: сложность ввода в действие и некоторые другие. У второго всё наоборот: его недостатки — это преимущества первого.
Нам следует понять, почему в последние лет 5 с небольшим работники сферы ИТ повально отказываются от компилируемых языков и валом валят писать сценарии. Внимательный читатель серии спросит: они что, ленивые или некомпетентные? Отчасти он будет прав, но только отчасти. Да, при создании ПО на языках сценариев не приходится задумываться о многих вещах, которые представляют сложность при использовании компилируемых языков. Интерпретаторы сценариев, выполняющие их построчно, как правило берут на себя все эти сложности: управление памятью и другими ресурсами. Цена, которую приходится платить — это низкая производительность. Всё это очевидно и на виду даже у новичков. Но есть кое что другое.
По некоему совпадению, те же пять с лишним лет продолжается повальный перенос всего ПО подряд в облачные сервисы, такие как Google Cloud, Amazon AWS, Azure и другие. Если задуматься, то ПО на построчно исполняемых языках сценариев в облаках оказывается как на ладони для владельцев последних: это просто текст, смысл которого можно понять, просто открыв файлы в текстовом редакторе, тогда как откомпилированные исполняемые и библиотечные файлы на вид непонятны, и требуется кропотливая работа по декомпиляции и дизассмемблированию, чтобы составить мнение о том, что они делают.
С одной стороны, владельцам облаков намного спокойнее держать у себя мусорную кучу сценарных файлов: их можно просмотреть при помощи каких-то автоматизированных решений и определить, могут ли они навредить и т.д, тогда как в исполняемых файлах уверенности нет. Кто знает, что эти непонятные «кракозябры» из файла с расширением EXE или DLL под Windows или SO под Linux там делают втихаря? Просмотреть, говоришь? Да, именно просмотреть, а заодно узнать всё о процессах, секретах, технологиях, клиентах, поставщиках и партнёрах потребителя услуг облака и т.д. и т.п. Все формулы, алгоритмы, изобретения, открытия, константы, переменные, пароли, явки, адреса и т.д. и т.п., заложенные в файлы сценариев, лежащие на облаке, становятся немедленно известны владельцу облака и всем, кто имеет доступ к накопителям виртуальных машин.
У этого есть и другая сторона: эти файлы совершенно не защищены от несанкционированного изменения. В любой момент любой сотрудник или программа, имеющие доступ к этим накопителям, могут незаметно подменить содержание файла на короткое время, произвести желаемое действие, и замести следы, вернув это содержание обратно. Скажете, дата последнего изменения обновится? Ха-ха! Её тоже нетрудно подменить — это же файлы на файловой системе! С ними можно сделать всё, что угодно. Популярный нынче Linux не умеет шифровать файловые системы, так что всё как на ладони, а Windows хоть и умеет, но толку от этого мало. Некоторые говорят, что они умеют это делать. И вы говорите, может быть, кто-нибудь поверит!
Если дать волю воображению, то можно легко себе представить, что таким образом можно открыть банковские счета или купить билеты на транспорт или мероприятие тем, кому это запрещено. Можно перевести средства. Можно выдать липовые документы. Можно сменить личные данные или внешность. Можно сменить курс ценных бумаг или изменить цену товаров. Можно... Да много чего можно. Организованной преступности, которая обеими ногами влезла в индустрию облачных сервисов, построчно исполняемые файлы сценариев идеально подходят, тогда как откомпилированные исполняемые и библиотечные файлы их не устраивают.
Всеядным поклонникам всего прогрессивного из сферы ИТ задуматься бы, когда из каждого утюга их склоняли переходить с C++, Delphi, Java и C#.NET на PHP, Ruby, Python, JavaScript и прочие приблудные языки, не к ночи они будь помянуты. Но увы, думать нынче не модно, а конформизм и погоня за всем новомодным и прогрессивным в почёте, поэтому в эксплуатации оказываются одно за другим решения, уязвимые не то что к деятельности искусных хакеров, а к банальному редактированию в «Блокноте» мальчиком-эникейщиком или девочкой-дизайнером.
О безопасности в Интернет любят кричать все, кому не лень, особенно владельцы и операторы облачных сервисов. Голосят, как на поминках: обновите то, замените это, отключите того, запретите этого. Их вой на болотах разносится на сотни вёрст вокруг, но у него есть одна особенность: он относится только к потребителям. Их самих он никогда не затрагивает. Это мы почему-то обязаны прогибаться кренделем, чтобы следовать их указаниям. А кто следит за тем, чтобы сами владельцы облаков действительно вели свою деятельность безопасно? Их ЦОДы находятся на другом конце света, и в них работают неизвестно какие личности с неизвестной квалификацией и совершенно тёмным прошлым. Мы не знаем, продавал ли запрещённые вещества на углу тот или иной сотрудник, до того как его приняли на работу администрировать облака. Мы не знаем, наведались ли к нему представители организованной преступности и сунули ли ему в карман УСБ-свисток с подменным файлом, сунув ему в ноздрю дуло пистолета. Облака для их потребителей — это чёрные ящики: гудят, греются, деньги списывают, а что там внутрях, никто понятия не имеет.
Ладно ещё, при скачивании программ на JavaScript браузером во время посещения ресурсов в Интернет можно указать, чтобы проверялась контрольная сумма. Если посмотреть исходный код страниц, можно увидеть эти инструкции в элементе «script». Гениально! Но если страницу, ссылающуюся на этот файл подменят вместе с этой суммой, то какой от неё толк? Об этом гениальные кукловоды подумали? Похожее решение есть в PowerShell компании Microsoft: их файлы сценариев можно подписывать электронной подписью и разрешать исполнение только подписанных. Беда лишь в том, что на PowerShell не пишут Интернет-приложения. Остальные приблудные языки сценариев этим не озаботились, что не удивительно: им это не нужно от слова совсем. Замысел был совсем не такой.
Не стоит забывать, что очередное сумасшествие человечества, пресловутый ИИ, написано на Python, то есть состоит из мусорной кучи отдельных файлов сценариев. Может быть, именно для этого нужно было орать на каждом углу, чтобы переходили на этот язык, чтобы появился контингент кадров, способных выдать на гора огромный объём кода на этом языке для создания ИИ, а затем быть выброшенными на улицу? Это как тюльпанный пузырь XVII века: дуракам посулили баснословные доходы, они и ломанули.
И вот опять человечество из кожи вон лезет, чтобы доказать: оно хронически неспособно расставлять правильные приоритеты, и всегда и всюду ставит грошовую экономию во главу угла, забывая о главном и важном. Оно с каждым днём полагается на индустрию ИТ всё больше и больше, в упор отказываясь замечать, что она применяет всё худшие и худшие решения, которые приходится балансировать повышением налогов, раздуванием законодательной базы и персонала, который должен следить за её исполнением, перекладыванием этих задач на граждан и прочими менее чем разумными и надёжными мерами. А решение-то простое и экономичное: гнать поганой метлой всех сторонников приблудных языков сценариев, исполняемых построчно.
Свидетельство о публикации №226091701506