Axios обнаруживает уязвимость высокого риска. Остается ли конфиденциальная информация в безопасности?
Axios обнаруживает уязвимость высокого риска. Остается ли конфиденциальная информация в безопасности?

Axios, как популярная клиентская библиотека HTTP, широко используемая в интерфейсной разработке, пользуется популярностью у многих разработчиков из-за ее простого API и асинхронной обработки на основе обещаний. Однако недавно в сообществе безопасности появилось сообщение о том, что Axios имеет важную уязвимость, связанную с обработкой механизмов защиты от подделки межсайтовых запросов (CSRF).

описывать

Проблема, обнаруженная в Axios 1.5.1, привела к непреднамеренной утечке секретного XSRF-TOKEN, хранящегося в файле cookie, путем включения его в HTTP-заголовок X-XSRF-TOKEN каждого запроса к любому хосту, что позволяет злоумышленнику просматривать конфиденциальную информацию. Если файл cookie XSRF-TOKEN доступен и параметр withCredentials включен, библиотека вставляет заголовок X-XSRF-TOKEN с секретным значением файла cookie XSRF-TOKEN во все запросы к любому серверу. Если злоумышленнику удастся получить это значение, это может привести к обходу механизмов защиты XSRF.

Дата выпуска ПНВ: 8 ноября 2023 г.

Запись словаря CVE: CVE-2023-45857.

Тип уязвимости: CWE-359 Предоставляет конфиденциальную информацию неавторизованным лицам.

Серьезность: Высокая

Влияние: обширное

Что такое CWE0359

Для получения более подробной информации, пожалуйста, просмотрите введение на официальном сайте:

Язык кода:javascript
копировать
https://cwe.mitre.org/data/definitions/359.html

CWE-359: Раскрытие частной личной информации неавторизованным лицам, да Common Weakness Запись в перечислении (перечисление общих слабостей), представляющая "Exposure of Private Information ('Privacy Нарушение')", то есть «Раскрытие частной информации (нарушение конфиденциальности)». У этой слабости описывание есть проблема с безопасностью.,Когда приложения не могут должным образом защитить конфиденциальные данные пользователей,Предоставление неавторизованным третьим лицам доступа или раскрытия этой информации.

В случае CWE-359 может произойти следующее:

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

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

Что такое CSRF и XSRF

Подделка межсайтовых запросов (CSRF) — это кибератака, которая позволяет злоумышленнику использовать статус входа пользователя в систему для инициирования вредоносных запросов к целевому приложению на другом веб-сайте. Опасность этой атаки заключается в том, что она может выполнять операции на целевом веб-сайте от имени пользователя без ведома пользователя, такие как смена паролей, перевод денег и т. д.

XSRF-TOKEN это обычная защитная мера,Он предполагает существованиеклиента, генерирующего токен (Token).,Этот токен будет проверен существующим при выполнении конфиденциальных операций. Этот токен обычно генерируется существованием, когда пользователь открывает форму.,и отправляется обратно как часть данных формысервер。сервер Проверим отправленную формуXSRF-TOKENСоответствует токену, хранящемуся в сеансе пользователя.,чтобы подтвердить, что запрос является законным.

Уязвимости могут возникнуть в следующих случаях:

  1. «Неправильная конфигурация сервера»:еслисервер Неправильно настроено или провереноXSRF-TOKEN,Таким образом, даже если существующийклиент устанавливает токен,Злоумышленник также может обойти этот механизм защиты. Например,Если сервер не проверяет токен для всех конфиденциальных запросов,Или есть изъян в логике проверки,Тогда злоумышленник сможет отправлять несанкционированные запросы.
  2. «Ошибка реализации клиента»:клиенткод,Например, JavaScript или веб-фреймворк.,может быть не правильносуществовать Отправляется в каждом запросеXSRF-TOKEN,Или возникла ошибка при обработке файлов cookie,Приводит к тому, что токен не включается в существующий запрос.
  3. «Отсутствует политика безопасности»:если网站不使用XSRF-TOKENили аналогичный защитный механизм,Или не включать его во всеобъемлющую стратегию безопасности.,может быть уязвим для атак CSRF.

Посмотреть похожие статьи:

Язык кода:javascript
копировать
https://portswigger.net/web-security/csrf/preventinghttps://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html

Чтобы защитить ваше приложение от атак CSRF, вам следует:

  • Используйте токены CSRF для всех конфиденциальных операций.
  • Убедитесь, что серверная часть выполняет проверку токена везде, где это необходимо.
  • Установить и обеспечить соблюдение политики в отношении контента Security Policy,CSP) для снижения риска атак с использованием межсайтовых сценариев (XSS).,XSSАтаки могут быть использованы для кражиXSRF-TOKEN
  • Обязательно используйте HTTPS, чтобы предотвратить атаки «человек посередине», которые могут перехватить токен.
  • Регулярно обновляйте и исправляйте все зависимости программного обеспечения.,Включает клиентскую библиотеку и серверную среду.

Появляться вновь

Этапы воспроизведения

Запустите новый проект, используя последнюю версию Next.js, выполнив следующую команду: npx create-next-app@latest. Затем установите последнюю версию библиотеки Axios с помощью этой команды: npm i axios Создайте экземпляр Axios со следующей конфигурацией и включите защиту от подделки межсайтовых запросов (CSRF), включив учетные данные в запрос:

Язык кода:javascript
копировать
  const instance = axios.create({
    withCredentials: true,
  });

Установите файл cookie XSRF-TOKEN с определенными атрибутами. Установите для файла cookie значение «любой» и настройте строгую политику одного и того же сайта для домена «localhost»:

Язык кода:javascript
копировать
    const cookies = new Cookies();
    cookies.set("XSRF-TOKEN", "whatever", {
      domain: "localhost",
      sameSite: "strict",
    });

Выполняйте запросы между источниками, используя экземпляр Axios. В этом примере мы делаем запрос GET на «https://www.com/» и обрабатываем ответ и потенциальные ошибки:

Язык кода:javascript
копировать
    instance
      .get("https://www.com")
      .then((res) => console.log(res.data))
      .catch((err) => console.error(err.message));

Запустите проект и откройте вкладку сети браузера для отладки и мониторинга сетевой активности. Убедитесь, что запрос перекрестного происхождения к «https://www.com/» содержит заголовок «X-XSRF-TOKEN» со значением «что угодно». Убедитесь, что значение файла cookie «XSRF-TOKEN» передается на любой сторонний хост при отправке запросов с использованием экземпляра Axios. Это критически важно для безопасности, поскольку вы не хотите передавать токены CSRF неавторизованным лицам. Фрагмент кода lib/adapters/xhr.js:191

Язык кода:javascript
копировать
const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))

ожидаемое поведение

Ожидаемые результаты: XSRF-TOKEN не будет передаваться сторонним хостам.

Фактический результат: утечка XSRF-TOKEN в каждом запросе, сделанном с использованием экземпляра Axios.

Версии Axios [v0.8.1] - [v1.5.1]

Ссылки:

[1]https://portswigger.net/web-security/csrf/preventing

[2]https://github.com/axios/axios/issues/6006

[3]https://nvd.nist.gov/vuln/detail/CVE-2023-45857

[4]https://cwe.mitre.org/data/definitions/359.html

Киллиан

2023-11-14

Знаете ли вы этот базовый терминологический словарь K8s?

Как выполнить пакетное удаление и запланировать резервное копирование в Linux?

В чем разница между async/await и цепочкой обещаний?

Запустите проект next.js за три минуты

Быстро начните работу с миром открытого исходного кода за три минуты!

Как Python вызывает интерфейс Chatgpt?

Springboot+vue3 быстро запускает приложение

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose