CSV-инъекция


CSV-инъекция, также известная как инъекция формулы, происходит, когда веб-сайты получают ненадежные входные данные в виде файлов CSV.

Когда для открытия CSV-файла используется программа для работы с электронными таблицами, такая как Microsoft Excel или LibreOffice Calc, любые ячейки, начинающиеся с будут интерпретироваться программным обеспечением как формула. Злонамеренно созданные формулы могут быть использованы для трех ключевых атак:

  • Удаленный доступ к компьютеру пользователя путем использования уязвимостей в программном обеспечении для электронных таблиц, таких как CVE-2014-3524.
  • Удаленный доступ к компьютеру пользователя путем использования склонности пользователя игнорировать предупреждения о безопасности в электронных таблицах, которые они загрузили со своего собственного веб-сайта.
  • Извлечение содержимого из электронной таблицы или других открытых электронных таблиц.
Чтобы не допустить, убедитесь, что ячейки не начинаются с любого из следующих символов:

  • Равно (=)
  • Плюс (+)
  • Минус (-)
  • Собака (@)
  • Табуляция (0x09)
  • Возврат каретки (0x0D)
При создании электронных таблиц поля, начинающиеся с любого из вышеперечисленных символов, должны предваряться одинарной кавычкой или символом апострофа ('). Microsoft Excel сохранит целостность данных, скрыв этот символ при отображении электронной таблицы. В качестве наилучшей меры безопасности рассмотрите возможность удаления всех завершающих пробелов, где это возможно, и ограничения всех предоставленных клиентом данных буквенно-цифровыми символами.

Имейте в виду, что недостаточно убедиться, что ввод данных ненадежным пользователем не начинается с этих символов. Вам также необходимо позаботиться о разделителе полей (например, ',' или ';') и кавычках (например, 'или "), так как злоумышленники могут использовать это, чтобы начать новую ячейку, а затем добавить опасный символ в середине пользовательского ввода, но в начале ячейки.

В качестве альтернативы, примените следующую очистку к каждому полю CSV, чтобы их содержимое считывалось редактором электронных таблиц как текст:

  • Заключите каждое поле ячейки в двойные кавычки
  • Добавляйте к каждому полю ячейки одинарную кавычку
  • Экранируйте каждую двойную кавычку, используя дополнительную двойную кавычку
Два примера:



Вообще говоря, эта проблема не относится к веб–приложениям или какому-либо конкретному формату файлов - можно использовать любую ситуацию, когда ненадежный контент попадает в электронную таблицу. Помимо выявления многочисленных уязвимых приложений, существует множество возможностей для дальнейших исследований самой этой техники атаки. Ключевым улучшением было бы найти способ извлекать содержимое из документов, не полагаясь на какое-либо взаимодействие с пользователем.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, информационная безопасность, excel




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




Программа Карточный помощник
PHP 8.0 поставляется с типами объединений, JIT-компиляцией
Поля и методы в Java: константы поля