Skip to main content

V12.4.2 File Storage

Requirement:#

Verify that files obtained from untrusted sources are scanned by antivirus scanners to prevent upload and serving of known malicious content.

Explanation:#

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

Remediation:#

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

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

Вот пример того, как реализовать это исправление в коде:

# Secure code for scanning files from untrusted sources
import os
import subprocess
# Define the location to store the files
storage_dir = "/var/www/storage"
# Ensure that the storage directory exists
if not os.path.exists(storage_dir):
os.makedirs(storage_dir)
# Store the file from an untrusted source
with open(os.path.join(storage_dir, "file.txt"), "w") as f:
f.write(request.POST["file_content"])
# Scan the stored file with antivirus software
result = subprocess.run(["clamscan", os.path.join(storage_dir, "file.txt")], capture_output=True)
if result.returncode != 0:
# If the file is detected as malicious, delete the file
os.remove(os.path.join(storage_dir, "file.txt"))
raise Exception("The file is detected as malicious")

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

Additional:#

https://cwe.mitre.org/data/definitions/509.html