Skip to content

DOM Clobbering Gadget found in rollup bundled scripts that leads to XSS #187 #1754

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
trailstem opened this issue Mar 17, 2025 · 0 comments

Comments

@trailstem
Copy link
Contributor

trailstem commented Mar 17, 2025

Legacy Rollup DOM Clobbering vulnerability #187

対象アラート

https://github.com/voyagegroup/ingred-ui/security/dependabot/187

引き起こされている問題

この脆弱性を放置すると、非常に古いバージョンのrollup(0.63.5)を使用している部分でDOM Clobberingを介したXSS攻撃が可能になる。特に型定義パッケージ(@types/rollup-plugin-peer-deps-external)経由で導入されている古いバージョンが問題を引き起こしている。

概要

rollup 2.79.2未満のバージョン(この場合は特に古い0.63.5)に存在するDOM Clobbering脆弱性が検出された。この問題は@types/rollup-plugin-peer-deps-external 2.2.1を通じてプロジェクトに導入されている。この脆弱性により、document.currentScriptの参照を攻撃者がHTML要素で乗っ取ることが可能になり、XSS攻撃のリスクが発生する。

やるべきこと

  1. 型定義パッケージの依存関係解決:

    • @types/rollup-plugin-peer-deps-external 2.2.1の更新または代替策の検討
    • rollup 0.63.5を使用している他の依存関係がないか確認
  2. 古いバージョンの排除:

    • package.jsonにresolutionsフィールドを追加して古いバージョンを上書き
    • 型定義パッケージの依存関係を見直し
  3. セキュリティ対策の強化:

    • ビルド環境のセキュリティ強化
    • ユーザー入力を受け付ける部分のHTMLサニタイズ確認

やるべきことに対して実際に実施する詳細(簡単に)

  1. 型定義パッケージの更新:

    # 最新バージョンの確認
    npm view @types/rollup-plugin-peer-deps-external versions
    
    # 必要に応じて更新
    yarn add @types/rollup-plugin-peer-deps-external@latest --dev
    
  2. yarn.lockファイルへの解決策追加:

    # package.json に追加
    "resolutions": {
      "rollup": "^2.79.2"
    }
    
  3. 依存関係の再インストール:

    yarn install
    
  4. 古いバージョンが確実に排除されたことの確認:

    yarn why rollup
    
  5. 型定義パッケージの使用を見直し:

    • 必要性の再評価
    • 代替となる最新パッケージの検討
    • 依存関係を最小限に保つための構成変更
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant