Как устранить предупреждение об обходе пути Сника?Python

Программы на Python
Ответить
Anonymous
 Как устранить предупреждение об обходе пути Сника?

Сообщение Anonymous »

Мне нужно читать и записывать файлы JSON в моем проекте, и Сник помечает «уязвимость обхода пути» в моем коде. Первоначально я динамически создавал пути к файлам, используя пользовательский ввод (параметры командной строки), что, как я понимаю, может представлять угрозу безопасности. Например:

Код: Выделить всё

filename = f"{category.lower()}_{subtype.lower()}_columns.json"
with open(filename, 'r', encoding='utf-8') as f:
data = json.load(f)
Поскольку этот подход позволял создавать имена файлов на основе входных значений, он был помечен как уязвимость обхода пути.
Чтобы исправить это, я полностью удалил динамическое построение пути к файлу и заменил его жестко запрограммированным поиском по словарю.

Код: Выделить всё

file_mapping = {
"category_a": {
"subtype_x": "C:/mytrustedfolder/a/x_columns.json",
"subtype_y": "C:/mytrustedfolder/a/y_columns.json",
},
"category_b": {
"subtype_x": "C:/mytrustedfolder/b/x_columns.json",
"subtype_y": "C:/mytrustedfolder/b/y_columns.json",
}
}
Теперь путь к файлу строго определяется поиском по словарю, без объединения строк или форматирования на основе пользовательского ввода:

Код: Выделить всё

final_path = file_mapping[category][subtype]

with open(final_path, 'r', encoding='utf-8') as f:
data = json.load(f)
Поскольку «категория» и «подтип» могут быть только действительными ключами из словаря, пользователь не может вводить произвольные пути к файлам или атаковать обход «../».
Даже после внесения этого изменения Сник по-прежнему помечает это как уязвимость обхода пути, утверждая, что ненадежные входные данные передаются в «open(...)».
Я пробовал:
  • Убедиться, что все пути к файлам жестко закодированы в словаре.
  • Нормализация путей и проверка попыток обхода.
  • Добавление комментария Snyk ignore («# SNYK ignore PathTraversal»), но он
    все еще отмечает проблему. (Предложение ChatGPT)
Несмотря на эти изменения, Snyk продолжает обнаруживать уязвимости.
Почему Snyk до сих пор помечает это как уязвимость обхода пути, если все пути к файлам заранее определены в словаре и ими нельзя манипулировать? Есть ли дополнительный способ явно доказать Снику, что это не представляет угрозы безопасности?
Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... al-warning
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»