前回、Java Scriptが持つ脆弱性「Vulnerable JS Library」の脅威について記載しました。
こちらの記事では更に具体的な修正方法について記載致します。
脆弱性診断の結果で「Vulnerable JS Library」が表示された場合は参考にしてください。
目次
Java Scriptのセキュリティ対策 5つの対策方法
Vulnerable JS Libraryの修正方法には以下のような対策方法があります。どれか一つを実施するのでは複合的に対応することをお薦め致します。
1.Java Script ライブラリを最新バージョンへ更新
JavaScriptライブラリの最新バージョンが利用可能な場合、それを使用することで脆弱性を修正することができます。開発者は常にJavaScriptライブラリの最新バージョンをチェックし、適切に更新することが重要です。
これらの公式サイトで公開されている情報を確認すれば、特定のJavaScriptライブラリの最新バージョンを見つけることができます。
JavaScriptの各ライブラリに関する最新情報が頻繁に変わるためです。そのため、最新の情報は必ず公式な情報源から取得してください。
2. 修正パッチの適用
ライブラリの開発者が既知の脆弱性に対するパッチをリリースしていれば、それを適用することで脆弱性を修正できます。パッチは特定の問題を解決するためのコード改善で、脆弱性が存在するライブラリの一部を置き換えます。
Vulnerable JS Libraryの修正のために適用するパッチは、使用しているライブラリ毎に異なります。パッチを適用する手順は基本的に以下のようになります。
- JavaScriptをバージョン管理システムで管理している場合(例えば、NPMやYarnを使用している場合)などは以下のコマンドを使って依存関係をチェックします。
– NPMの場合: `npm audit`
– Yarnの場合: `yarn audit`
これらのコマンドはパッケージの依存関係をチェックし、既知の脆弱性が見つかった場合に報告します。
- これらのコマンドに脆弱性を確認した場合、以下のコマンドを使ってパッチを適用します。
– NPMの場合: `npm audit fix`
– Yarnの場合: `yarn audit fix`
これらのコマンドは可能な限り自動的にパッチを適用します。ただし、一部パッチを自動適用できない脆弱性もありますのでご注意下さい。
- 自動適用できない脆弱性がある場合、その脆弱性に関する報告を確認します。報告では、脆弱性が存在するパッケージの名称とバージョン、脆弱性の詳細、修正方法などが示されます。固有の問題に対する具体的なパッチは、この情報に基づいて適用します。
なお、ライブラリの更新やパッチ適用が難しい場合は、脆弱性のない他のライブラリに置き換えることを検討してください。
3. 代替ライブラリの使用
脆弱性が修正されないライブラリを使用している場合や、利用しているライブラリの更新が停止している場合などは、同等の機能を持つ別のライブラリに切り替えることを検討してください。
Vulnerable JS Libraryの修正のために、特定のライブラリに代替となるライブラリを選ぶ際は、その代替ライブラリが既に解決した特定の脆弱性を持つかどうか、また、そのライブラリが自分が解決したい問題に対して適合する(つまり機能的に匹敵もしくは優れている)かどうかを考慮する必要があります。
例として、JavaScriptのいくつかの人気のあるライブラリと、それらの一般的な代替品を挙げますので、こちらも参考にしてください。
1. jQuery
jQueryは人気のあるJavaScriptライブラリですが、より最近のフレームワークと比較すると、古い技術に依存しているため脆弱性が存在する可能性があります。代替としては、Vue.jsやReact.jsがあります。
2. Lodash
LodashはJavaScriptで頻繁に使用されるユーティリティ関数を提供していますが、古いバージョンには脆弱性が報告されていますので検討する際は注意してください。Lodashの代替としては、Underscore.jsやRamdaがあります。
3. Moment.js
データ処理用のライブラリであるMoment.jsはパフォーマンスとサイズに問題があり、一部の関数には脆弱性があります。代替としてDay.jsやdate-fnsがあります。
ここで紹介した代替ライブラリも常に最新版を利用し、既知の脆弱性がないかチェックするようにしてください。各ライブラリの公式ドキュメンテーションやGitHub、NPMパッケージページなどを確認し、必要な情報を得ましょう。
4. コードの見直し
必要に応じて自分のコードを見直し、特定の脆弱性に対する追加的な防御を実装することも役立ちます。これはサニタイザーの使用やコーディング規約の徹底などが考えられます。
Vulnerable JS Libraryの修正のためのコードの見直しは、頻繁に行うべき重要な事項です。脆弱性を修正するための見直しには、セキュリティベストプラクティスに基づいたいくつかの一般的なアプローチがあります:
- 入力の検証とサニタイズ: アプリケーションからの入力を常に検証し、必要に応じてサニタイズします。これは、クロスサイトスクリプティング(XSS)やSQLインジェクションなどの脆弱性を防ぐ基本的な手段です。
- パラメータ化されたクエリ: SQLインジェクション攻撃を防ぐための重要な対策として、可能であればパラメータ化されたクエリを使用します。
- コードの分離とセキュアなコーディングプラクティス: セキュアなアーキテクチャ設計とコーディングプラクティスを遵守します。一貫性のあるエラーハンドリング、最小限の権限、適切な認証・認可などを確保します。
- コードレビュー: 定期的にコードレビューを行い、新たな脆弱性が紛れ込んでいないかチェックします。特に、新たなライブラリやモジュールを導入した際、または重要な機能の変更を行った際には対応が必要です。
- 依存関係の管理: 使用するライブラリやパッケージのバージョンを常に管理し、セキュリティアップデートが適用されていることを確認します。npmやyarnのようなパッケージ管理ツールは、依存関係の管理を助けます。
セキュアなコードの書き方ついては、OWASP(Open Web Application Security Project)のような組織が提供するガイドラインなどが詳しい情報を提供していますのでそちらも参考にしてください。
なお、修正を行った後は、再びセキュリティスキャンやテストを行うなどして、修正が正しく行われ脆弱性が解消されたことを確認することが重要です。
JavaScriptのセキュリティチェックを定期的に実施する4つのメリット
JavaScriptの脆弱性であるVulnerable JS Libraryを発見するためにはWebアプリケーションの脆弱性診断は非常に重要な要素になります。使用されているJavaScriptに脆弱性が発生したタイミングをタイムリーに見つけるのは非常に難しいです。下記にWebアプリケーションの脆弱性診断を実施するメリットを記載しておきますので参考にしてください。
1. 既知の脆弱性の特定
脆弱性診断を行うことで、ウェブアプリケーションで使用されているJavaScriptライブラリに存在する可能性のある既知の脆弱性を特定することができます。
2. 不明な脆弱性の発見
また、セキュリティ専門家や自動化ツールによる診断により、開発者自身では気づかなかった脆弱性を発見することが可能となります。
3. リスクの評価
脆弱性診断は脆弱性だけでなく、それによって生じる可能性のあるリスクも評価します。これにより、脆弱性に対する優先順位をつけることができ、効率的な対策を設定することができます。
4. 幅広い防御措置
ライブラリ自体のセキュリティだけでなく、それを使用して構築したウェブアプリケーション全体のセキュリティも強化することが可能となります。
まとめ「広く使われているJavaScriptだからこそ適切な対策を」
Java Scriptは便利で様々なところで使用されています。重要な決済に関するアプリケーションにも利用されていることがあり脆弱性を放置しておくことは大きなトラブルを招くことになります。
上記の記事をご確認いただければ「たまにチェックをすればいい!」という認識は改めて頂き、毎日診断してリスクが発生したら迅速に対応できる体制を作ってください。secuasは月1万円から毎日診断を実施していますので万が一脆弱性が発生した場合でもすぐに検知しお伝えすることが出来ます。
まずは自社のサイトにリスクが無いか無料で診断してみてください。