Vulnerable JS Library
概要
- 脆弱性の名前: Vulnerable JS Library (脆弱な JavaScript ライブラリ)
- 問題の要点: Web サイトで使用している JavaScript ライブラリに既知の脆弱性が存在し、攻撃者がその脆弱性を悪用して Web サイトやユーザーに損害を与える可能性がある状態。
- よくある発生シーン: 開発者がライブラリのバージョンを更新せずに放置している、または脆弱性のあるライブラリを誤って導入してしまう。クラウド環境では、複数のサービスが連携して動作することが多いため、依存関係の管理が複雑になり、脆弱なライブラリが混入しやすくなります。
背景
JavaScript ライブラリは、Web サイトの機能を拡張するために広く利用されています。しかし、多くのライブラリには脆弱性が存在し、攻撃者によって悪用される可能性があります。
脆弱性のあるライブラリを使用している場合、Web サイトの改ざん、ユーザーの個人情報の詐取、マルウェアの感染などのリスクが高まります。
近年、Web アプリケーションのセキュリティ対策として、使用しているライブラリの脆弱性管理が重要視されています。
セキュリティ上のリスク
- クロスサイトスクリプティング (XSS) 攻撃による、Web サイトの改ざん、ユーザーの個人情報の詐取。
- サービス拒否 (DoS) 攻撃による、Web サイトの停止。
- リモートコード実行 (RCE) 攻撃による、サーバーの乗っ取り。
- サプライチェーン攻撃による、Web サイトの信頼性の低下。
対処方法の具体例
JavaScript
誤った設定例
脆弱性のあるバージョンの jQuery を使用している例:
<!-- 誤った例: 脆弱性のあるバージョンの jQuery を使用している -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
正しい設定例
最新版または脆弱性の修正されたバージョンの jQuery を使用するように修正する例:
<!-- 正しい例: 最新版の jQuery を使用している -->
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
npm
誤った設定例
package.json
ファイルで、脆弱性のあるライブラリのバージョンを指定している例:
{
"dependencies": {
"脆弱なライブラリ": "1.0.0"
}
}
正しい設定例
package.json
ファイルで、最新版または脆弱性の修正されたライブラリのバージョンを指定するように修正する例:
{
"dependencies": {
"脆弱なライブラリ": "^2.0.0"
}
}
PHP
PHP 自体で JavaScript ライブラリを直接管理することはありませんが、Composer などのパッケージマネージャーを使用して JavaScript ライブラリを管理している場合は、同様にライブラリのバージョンを更新する必要があります。
AWS
正しい設定例
AWS Lambda 関数で使用している JavaScript ライブラリを更新する場合、Lambda 関数のデプロイパッケージに最新版のライブラリを含めるようにします。
検出方法
OWASP ZAP での出力例
- Alert 名: Vulnerable JS Library
- リスク: Medium
- URL: 脆弱なライブラリが使用されている URL
- パラメータ: なし
- 詳細: 脆弱なライブラリの名前、バージョン、および CVE ID などの情報
手動再現例
- Web ブラウザの開発者ツールを開き、Network タブを選択します。
- Web サイトにアクセスし、読み込まれている JavaScript ライブラリのバージョンを確認します。
- NVD (National Vulnerability Database) などの脆弱性データベースで、そのバージョンに既知の脆弱性がないか確認します。
まとめ
- CVSS 基本値: 4.0 - 10.0 (Medium - Critical)
- 運用チームや開発者が意識すべきポイント:
- 使用している JavaScript ライブラリのバージョンを定期的に確認し、最新版または脆弱性の修正されたバージョンに更新する。
- 脆弱性スキャンツールを使用して、Web サイトで使用しているライブラリの脆弱性を検出する。
- ライブラリの依存関係を適切に管理し、不要なライブラリを削除する。
- セキュリティに関する情報を収集し、脆弱性に関する情報を常に把握する。
- 再発防止:
- 開発プロセス全体でセキュリティを考慮する (Security by Design)。
- コードレビューを実施し、脆弱性のあるライブラリが使用されていないか確認する。
- 自動脆弱性診断ツールを導入し、定期的にスキャンを行う。
- CI/CD パイプラインに脆弱性スキャンを組み込む。
以上の対策と検出方法を活用して、Vulnerable JS Library のリスクを低減してください。