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 перед его передачей в почтовую систему:
В этом примере функция 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