Skip to main content

V5.2.3 Sanitization and Sandboxing

Requirement:#

Verify that the application sanitizes user input before passing to mail systems to protect against SMTP or IMAP injection.

Explanation:#

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

Remediation:#

Исправление для защиты от SMTP- или IMAP-инъекций включает в себя филтрацию вводимых пользователем данных перед их передачей в почтовые системы. Этого можно достичь путем реализации следующих мер:

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

Вот пример фильрации пользовательского ввода в PHP перед его передачей в почтовую систему:

Фильтрация пользовательского ввода
<?php
$to = "recipient@example.com";
$subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING);
$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING);
mail($to, $subject, $message);
?>

В этом примере функция filter_var используется для очистки ввода темы и сообщений, введенных пользователем. Фильтр FILTER_SANITIZE_STRING удаляет любые потенциально опасные символы, которые могут быть использованы для внедрения вредоносных полезных данных в сообщения электронной почты. Затем очищенный ввод передается в качестве аргументов почтовой функции, которая отправляет электронное письмо указанному получателю.

Additional:#

https://cwe.mitre.org/data/definitions/147.html https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/10-Testing_for_IMAP_SMTP_Injection