Введение

Наиболее важным аспектом любого приложения является пользовательский ввод. Каждое приложение в первую очередь зависит от пользовательского ввода (предоставление функций входа, регистрации). Таким образом, большинство уязвимостей, которые могут возникнуть, также вызваны действиями пользователя. Если пользовательский ввод не обрабатывается должным образом, может возникнуть серьезная уязвимость, такая как обход пути, удаленное выполнение кода или внедрение SQL, что может поставить под угрозу данные организации.

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

Что такое уязвимость обхода пути?

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

Почему это происходит?

Источник

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

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

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

Давайте разберем это на примере:

Рассмотрим веб-сайт «somesite.com». Он отображает изображения с использованием этого HTML-атрибута.

‹img src="/file.php?filename=user.png"›

Параметр имени файла принимает имя файла и возвращает содержимое «user.png». Изображения хранятся в папке /var/www/html/images, так как это путь по умолчанию в системе Linux. Когда имя изображения передается в параметр имени файла, полный путь выглядит следующим образом. Таким образом, в основном он включает полный путь в параметр, а затем извлекает изображение.

/var/www/html/images/logo.png

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

https://somesite.com/file.php?filename=/../../../etc/passwd

Четыре последовательных последовательности ../ ведут из местоположения /var/www/html/images/ в файловую систему /root/. Таким образом, злоумышленник может прочитать конфиденциальный файл — /etc/passwd — вместо файла изображения.

Злоумышленник также может прочитать конфиденциальную информацию приложения, такую ​​как

https://somesite.com/images?filename=/../../index.php

Or

https://somesite.com/images?filename=/../../login.php

Поскольку эти файлы хранятся в /var/www/html, требуется только 1 запись ../.

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

Как исправить

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

Как я использовал WhiteSource Cure для исправления

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

Мне предложил WhiteSource Cure мой друг, который в прошлом использовал этот инструмент для исправления Java. Они утверждают, что являются первым в мире программным обеспечением для автоматического восстановления безопасности для пользовательского кода. При использовании инструмента для этого руководства я обнаружил, что он устраняет барьер между безопасностью и скоростью — проблемы безопасности не должны замедлять скорость, с которой вы доставляете код и приложения.

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

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

Как использовать средство WhiteSource

Использовать WhiteSource Cure очень просто. Для этой демонстрации я использую известное приложение OWASP WebGoat для поиска уязвимостей.

  1. Перейдите на GitHub и скопируйте ссылку на репозиторий WebGoat.
  2. Перейдите по этой ссылке, и она покажет вам такую ​​страницу:

3. Введите ссылку на репозиторий в первое поле ввода, оставьте второе поле пустым и нажмите Исправить!

4. После этого откроется страница со всеми уязвимостями, обнаруженными в вашем репозитории.

Нажмите на любую уязвимость, и она покажет вам, где эта уязвимость возникает.

5. Если вы хотите найти исправление, щелкните вкладку исправления, и она покажет вам код, необходимый для устранения этой проблемы.

Вывод

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