Deepak A Rajput Ответов: 2

Проблема Ibm appscan security pathtraversal в методе file. copy в VB.NET


Я запустил IBM AppScan tool на VB.Чистый источник.Я получаю одну проблему безопасности в файле.Скопируйте метод в категорию обхода пути.
Детали Выпуска -
Тип Уязвимости
PathTraversal
Этот API принимает каталог, имя файла или и то, и другое. Если для создания пути к файлу используются предоставленные пользователем данные, то этим путем можно манипулировать, указывая на каталоги и файлы, доступ к которым запрещен или которые могут содержать вредоносные данные или код.

Как я могу исправить эту проблему?
Imports System.Web.Security.AntiXss
Private Function ProcessFile() As Boolean
    Dim drive As String = String.Empty
    Dim folder As String = String.Empty
    Dim filename As String = String.Empty
    Dim sourcePath As String = String.Empty
    Dim destinationPath As String = String.Empty
    drive = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Drive").ToString()))
    folder = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Folder").ToString()))
    filename = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("File").ToString()))

    sourcePath = Path.Combine(drive, folder, filename)
    destinationPath = Path.Combine(drive, folder, "text2.txt")

    Try
        If sourcePath.IndexOfAny(Path.GetInvalidPathChars()) = -1 AndAlso destinationPath.IndexOfAny(Path.GetInvalidPathChars()) = -1 Then
            File.Copy(sourcePath, destinationPath, True)
            Return True
        Else
            Return False
        End If

    Catch ex As Exception
        Return False
    End Try
End Function


Что я уже пробовал:

Мы попробовали следующие подходы, чтобы исправить эту проблему, но она не работает-

1) Путь.Метод Combine () - используется метод Combine для объединения значений, которые мы получаем из конфигурационного файла, вместо использования & для конкатенации строк.
2) используемые классы DirectoryInfo и FileInfo и метод GetFullPath
3) объявление переменных только для чтения-создается переменная только для чтения и назначается путь к файлу.
4) Проверьте имя файла с помощью Path.GetInvalidFileNameChars () перед передачей-используется этот метод для проверки имени файла.
5) Проверка имени файла с помощью регулярного выражения - используется регулярное выражение для проверки пути к файлу перед передачей его в файл.Функция Copy или CreateDirectory.

F-ES Sitecore

Это зависит от того, какая именно проблема у него с File.Copy. Говорить, что у него есть проблема, но не объяснять точно, в чем она заключается, - это просто бороться вслепую.

Dave Kreskowiak

Не зная, на что смотрит инструмент ApPScan и что вызывает срабатывание этого сообщения,вы шарите в темноте. Вы должны выяснить, на что он смотрит.

Честно говоря, ИМХО, люди тратят слишком много времени на то, чтобы сделать инструмент счастливым, вместо того чтобы понять, что это за инструмент и должен ли он вообще применяться к конкретной ситуации.

Deepak A Rajput

Инструмент IBM Appscan используется для выявления уязвимостей, присутствующих в приложении. Когда я сканирую наше приложение, оно показывает проблему безопасности в файле.Метод копирования (источник, назначение )в разделе тип проблемы обхода пути и классификация как покрытие сканирования. Он рассматривает параметры метода как ненадежные пользовательские входные данные. В то время как я извлекаю эти значения из конфигурационного файла.

Dave Kreskowiak

Я знаю, что делает этот инструмент. Это правило, на которое он жалуется, вы должны знать. Опять же, возникает вопрос, приемлемо ли это в вашей ситуации? На этот вопрос можешь ответить только ты.

2 Ответов

Рейтинг:
1

Mehdi Gholam

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


Рейтинг:
0

Patrice T

Я не специалист в этом вопросе, но ваш код выглядит сложным и излишним.

drive = AntiXssEncoder.XmlEncode(String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Drive").ToString()))

Насколько я понимаю:
System.Configuration.ConfigurationManager.AppSettings("Drive")

это строка, которую вы преобразуете в строку:
System.Configuration.ConfigurationManager.AppSettings("Drive").ToString()

Затем вы форматируете его как идентичную строку:
String.Format("{0}", System.Configuration.ConfigurationManager.AppSettings("Drive").ToString())

Ваш код должен упрощаться следующим образом:
drive = AntiXssEncoder.XmlEncode(System.Configuration.ConfigurationManager.AppSettings("Drive"))

и то же самое для folder и file.
Я даже не уверен, что вам нужно кодировать строку.

Для вашей уязвимости внимательно прочитайте сообщение !
Это уязвимость, если это пользовательский ввод- но это не ваш случай.