Repostat — это компонент React для получения и отображения информации о репозитории GitHub. До версии 1.0.1 компонент RepoCard уязвим для отраженного межсайтового скриптинга (XSS). Уязвимость возникает из-за того, что компонент использует `dangerouslySetInnerHTML` React для отображения имени репозитория (proper`repo`) во время состояния загрузки без какой-либо очистки.
Если разработчик, использующий этот пакет, передает непроверенный пользовательский ввод непосредственно в свойство repo (например, считывая его из параметра URL-запроса), злоумышленник может выполнить произвольный код JavaScript в контексте браузера пользователя. В версии 1.0.1 использование опасноSetInnerHTML было удалено, и свойство репо теперь безопасно визуализируется с использованием стандартной привязки данных React JSX, которая автоматически экранирует объекты HTML.
Показать оригинальное описание (EN)
Repostat is a React component to fetch and display GitHub repository info. Prior to version 1.0.1, the `RepoCard` component is vulnerable to Reflected Cross-Site Scripting (XSS). The vulnerability occurs because the component uses React's `dangerouslySetInnerHTML` to render the repository name (`repo` prop) during the loading state without any sanitization. If a developer using this package passes unvalidated user input directly into the `repo` prop (for example, reading it from a URL query parameter), an attacker can execute arbitrary JavaScript in the context of the user's browser. In version 1.0.1, the use of dangerouslySetInnerHTML has been removed, and the repo prop is now safely rendered using standard React JSX data binding, which automatically escapes HTML entities.
Характеристики атаки
Последствия
Строка CVSS v3.1