Призрак прошлого: как легаси-код угрожает кибербезопасности

BOOX

Стаж на ФС с 2012 года
Команда форума
Служба безопасности
Private Club
Регистрация
23/1/18
Сообщения
29.223
Репутация
11.695
Реакции
61.957
RUB
50
Легаси-код — это призрак, который бродит по коридорам IT-инфраструктуры, неся с собой не только технические сложности, но и серьезные угрозы информационной безопасности.


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

tdvi2w05deqi7a9sqzov3tuxk7qqvvvc.jpg

Что такое легаси-код и почему он опасен

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

Легаси в общем смысле — это устаревшая кодовая база, некое наследие, которое сложно и долго поддерживать и которое есть почти во всех крупных проектах. Чаще всего это код, который был написан, например, 10 и более лет назад, его авторы, скорее всего, уже не работают в компании, а для текущего коллектива разработчиков это своего рода «черный ящик». В него неохотно вносят правки, придерживаются подхода «не улучшать и вообще не трогать то, что работает», а если в таком коде случаются проблемы, то говорится что-то вроде «это легаси, тут нормально править себе дороже, поэтому давайте поставим костыль или задействуем наложенное внешнее средство защиты».

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

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

В нашей практике злоумышленниками использовались уязвимые сервисы, код которых не обновлялся долгое время. Например, CRM, в которой фильтрация вводимых данных была недостаточной, что позволяло загружать на файловый сервер документы офисного формата с вредоносными макросами, либо файлы устаревшего формата (ярлыки ОС), провоцирующие smb-запросы при факте открытия файлового сервера. В данном случае разработчику CRM стоило бы добавить простейшую фильтрацию по типу, а валидные файлы предварительно обрабатывать в песочнице с помощью API-запроса, и только после проверки сохранять в хранилище. Все эти действия подразумевают установку наложенных средств защиты.

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

Один из частых рисков — использование web-приложения OWA от Microsoft. Сама по себе OWA на данный момент не содержит известных критичных уязвимостей, однако недостатком является возможность перебора логинов владельцев почтовых ящиков. Приложение выдает разный по времени ответ в зависимости от наличия или отсутствия почтового ящика с запрашиваемым названием. Пентестеры и злоумышленники часто используют эту особенность для выяснения логинов сотрудников компании, чтобы в дальнейшем найти их в слитых базах данных и использовать в атаке. В данном случае также необходимы наложенные средства, либо отказ от использования сервиса хотя бы в общедоступной сети.

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

Проблема легаси-кода

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

К сожалению, легаси-код все еще часто встречается в современных системах, и вот почему:
  1. Инерция. В некоторых случаях отказаться от устаревших систем просто невыгодно. Переход на новые технологии требует значительных инвестиций и может оказаться слишком рискованным.
  2. Нехватка ресурсов. Не всегда есть достаточно специалистов, которые могут перевести системы на более современный код и обслуживать их.
  3. Зависимость от старых данных. Иногда данные, хранящиеся в старых системах, не могут быть переведены в современный формат, что делает отказ от них невозможным.
Отказ от обновления легаси-кода неизбежно влечет за собой финансовые и репутационные риски. Утечка данных, сбой системы, отсутствие функциональности — все это может привести к финансовым потерям, ущербу репутации, а также к юридической ответственности. В некоторых случаях защитить устаревшие элементы ИТ-инфраструктуры пытаются с помощью наложенных средств защиты.

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

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

Защита устаревших элементов ИТ-инфраструктуры с помощью наложенных средств защиты, таких как файрволы, сегментация сети, IDS/IPS, антивирусы, виртуальные патчи, многофакторная аутентификация и журналирование может быть достаточно эффективной мерой для повышения их безопасности.
Эффективность зависит от правильной настройки и комплексного подхода, включающего регулярный аудит и обучение персонала. Хотя наложенные меры могут существенно повысить безопасность, они не устраняют всех уязвимостей, и модернизация устаревших систем остается важной задачей.

Решение по замене кода или использованию наложенных средств защиты стоит принимать исходя из сложности инфраструктуры конкретной системы и важности данных, которые требуют защиты.

Как перейти с легаси-кода на современные технологии

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

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

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

Существует несколько стратегий миграции с легаси-кода в сторону более современных технологий.

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

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

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

Поэтапное обновление — постепенный перенос функциональности с легаси-кода на новые технологии. Это позволяет снизить риски и постепенно переходить на новую систему.

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

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

Необходимо учитывать:
  • сложность системы — чем сложнее система, тем более рискованным будет переход;
  • зависимость от старых данных — если система хранит важные данные, необходимо убедиться в их безопасной миграции;
  • влияние на бизнес — необходимо учитывать, как переход повлияет на работу бизнеса.
Организация миграции требует тщательного планирования, включая разработку пошагового плана с определением сроков и ресурсов. Важно проводить регулярное тестирование измененного кода и системы, а также вести подробную документацию о внесенных изменениях. После завершения миграции необходимо провести всестороннее тестирование новой системы, чтобы убедиться в ее корректной работе, безопасности и производительности.

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

Заключение

Легаси-код — это все еще реальность современного IT-мира. Он может принести как пользу, так и риски. Необходимо осознавать угрозы, связанные с ним: уязвимости в безопасности, отсутствие поддержки, сложности с интеграцией и сохранением данных.

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

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


 
  • Теги
    web-приложения owa легаси-код пентестеры
  • Сверху Снизу