Мысли о проблемах безопасности Log4j, о том, что они означают для сообщества разработчиков в целом, и о конкретном влиянии на разработчиков RAD Studio.
Если вы не живете на удаленном острове без подключения к Интернету, вы наверняка слышали о проблемах с Log4j, которые затронули так много приложений и интернет-сервисов за последние 10 дней. Случайное обнаружение этой критической ошибки в контексте сообщений консоли Minecraft (набор сообщения в игровом клиенте Minecraft может позволить кому-то выполнить код на сервере Minecraft) из-за использования чрезвычайно популярной библиотеки ведения журналов Java под названием Log4j вызвало все ИТ-компания и каждая компания, использующая программные приложения, чтобы проверить, затрагивает ли проблема программное обеспечение компании, размещенные службы, внутренние веб-сайты и любой другой сценарий использования.
Список затронутых программных приложений ( например, одно из них есть здесь ) довольно внушителен, потому что, несмотря на потерю некоторой шумихи и маркетингового толчка, Java был и остается одним из самых популярных языков в мире, а JVM — одним из самых популярных. популярные среды исполнения.
Собственный код RAD Studio и отсутствие зависимости от Java
Что это значит для Embarcadero в целом и для RAD Studio в частности? Напрямую не очень. Программное обеспечение, созданное в Delphi или C++Builder, не использует и никак не зависит от Java (за исключением приложений Android) и, следовательно, не использует Log4j. В общем, Delphi и C++Builder создают приложения, скомпилированные в собственном коде, которые менее подвержены проблемам со средой выполнения (здесь я имею в виду среды выполнения Java, .NET или JavaScript). Однако в данном случае проблема была не в среде выполнения, а в популярной библиотеке, и разработчики RAD Studio используют дополнительные компоненты и сторонние библиотеки, как и любое другое сообщество разработчиков.
Позвольте мне еще раз уточнить: веб-сервер или веб-служба, созданные в Delphi или C++Builder (или C++ в целом), не затронуты проблемой Log4j. То же самое верно и для веб-приложений, созданных на ASP.NET, Python или PHP. Проблема характерна для программного обеспечения, написанного на Java, а существует множество программ для Java, как указано выше.
Возвращаясь к Delphi и C++Builder, скомпилированный код помогает с безопасностью, но этого недостаточно. Также важно выбирать только библиотеки и компоненты, которым вы можете полностью доверять (как минимум, требуя включения исходного кода). Более того, для разработчика также важно писать код, уделяя особое внимание безопасности. Как упоминалось на прошлой неделе, кодирование методом копирования и вставки (хотя оно и не несет прямой ответственности за проблему с Log4j) — это стиль кодирования, обратная стороне написания безопасных приложений.
Содействие обратному исходному коду
Есть еще одна ключевая проблема, которую выявили проблемы Log4j: существуют многомиллионные проекты, управляемые крупными корпорациями, которые полагаются на проекты с открытым исходным кодом без финансирования, которыми разработчики управляют в свободное время (вне своей основной работы). Идея о том, что вы можете использовать открытый исходный код для экономии средств, не вкладывая время, ресурсы или деньги в проекты, которые вы используете, становится огромной проблемой в отрасли.
Это также относится к экосистеме Delphi и C++Builder: Embarcadero начала финансировать и жертвовать несколько библиотек с открытым исходным кодом, но мы должны сделать больше. Мы также призываем все бизнес-приложения, которые значительно используют библиотеки и инструменты Delphi с открытым исходным кодом, внести свой вклад в них, в том числе путем оценки безопасности!
Сколько проектов с открытым исходным кодом вы используете для своих профессиональных приложений и когда в последний раз вы делали пожертвования для какого-либо из них?
Безопасность многогранна
Безопасность — это континуум, требующий нескольких точек зрения, и каждый из приведенных ниже пунктов может помочь:
- Приложения, скомпилированные в собственном коде
- Нет зависимости от среды выполнения во время выполнения
- Использование проверенных и доверенных сторонних библиотек и компонентов
- Обязательство внести свой вклад в проекты с открытым исходным кодом, которые вы используете
- Фокус безопасности при написании кода (без копирования и вставки кода)
- Инструменты для проверки исходного кода приложения
- Безопасное хранение исходного кода (во избежание внедрения исходного кода)
- Безопасная среда сборки (чтобы избежать внедрения двоичного кода)
- Подписание исполняемого файла приложения
Несмотря на то, что он не является исчерпывающим и с уклоном в сторону скомпилированного кода (мы действительно думаем, что это важно), мы надеемся, что этот список и общая реакция на инцидент с Log4j помогут вам и вашей организации переосмыслить безопасность и повысить ценность роли разработчиков. которые являются краеугольным камнем любого безопасного сценария разработки.
Приятного программирования с помощью RAD Studio без Log4j 😉
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition