Похоже, что уязвимость, связанная с атаками Path Traversal.
Атака на траекторию пути направлена на доступ к файлам и каталогам, которые хранятся вне корневой папки в Интернете. При просмотре приложения злоумышленник ищет абсолютные ссылки на файлы, хранящиеся на веб-сервере. Путем манипулирования переменными, которые ссылаются на файлы с последовательностями «dot-dot-slash (../)» и их вариантами, может быть доступно доступ к произвольным файлам и каталогам, хранящимся в файловой системе, включая исходный код приложения, конфигурацию и критические системные файлы, ограниченным управлением операционным доступом системы. Злоумышленник использует последовательности «../» для перехода к корневому каталогу, что позволяет осуществлять навигацию через файловую систему.
Это описание взято из OWASP. (Дополнительная информация: https://www.owasp.org/index.php/Path_Traversal)
Я предполагаю, что переменные PatientLastName, PatientFirstName под управлением пользователя (атакующего). Это означает, что мы не можем доверять этим переменным.
Также позвольте мне поделиться некоторой информацией о функциях GetInvalidFileNameChars.
The following characters are invalid in a path:
Char Hex Value
", 0022
<, 003C
>, 003E
|, 007C
Цикл for ищет эти символы, потому что мы не можем использовать один из них в имени файла в ОС Windows. Но, похоже, нет препятствий для использования обратной косой черты (\).
Предположим, что переменная PatientLastName содержит «.. \ .. \ .. \ test». поэтому переменная fileName имеет значение «.. \ .. \ test_DATA_DATA.pdf». Когда вы пытаетесь создать этот файл с помощью функции File.Create (DirName & fileName). Это может привести к созданию этого файла на выходе из каталога.
Для смягчения вы можете заменить обратную косую черту тоже (..% 2f ..% 2f - это кодировка формы .. \ .. \! Пожалуйста, учтите это тоже). Fortify может снова отмечать эти коды как уязвимые, но на этот раз он будет ложным.
Дополнительная информация, пожалуйста, прочитайте OWASP File System статьи (https://www.owasp.org/index.php/File_System)
Скорее всего Fortify указывают на это, как уязвимость из-за переменной FileName. Я предполагаю, что PatientLastName, PatientFirstName содержит данные, предоставленные пользователем. Это означает, что злоумышленник может обмануть этот variablis что-то вроде .. \ .. \ .. \ c: это наиболее распространенная атака обхода пути. Но, похоже, вы решили эту возможность для цикла. - Я не знаю, VB, я просто догадываюсь. Если вы считаете, что решили путь, и нет пути обхода (например, ...% 2F ..% 2fc: URL Encoded form), то он просто ложный. –