Skip to main content

あなたのウェブサイトに脆弱性はありませんか?今すぐ解決しましょう!

著者
Snyk is Now Integrated with Chromes Lighthouse

2020年3月5日

0 分で読めます

GatsbyやWordPressで構築した本格的なSaaSウェブアプリケーションから、小規模なブログ、個人運営のGitHub Pagesサイトまで、ウェブサイトを運営するうえで対策すべき重要な課題のひとつが、セキュリティ脆弱性です。

JavaScriptは最も人気のあるプログラミング言語であり、ウェブサイト構築において開発者に好まれている言語であることから、サードパーティ製JavaScriptライブラリのセキュリティ脆弱性は、特に重大な懸念事項のひとつです。オープンソースコミュニティの貢献者が開発したコードやモジュールに依存する慣行は、今後も広がり続けると考えられますが、それに伴い重要なセキュリティ上の課題も生じています。

2019年10月、Snykは2019年版JavaScriptフレームワークのセキュリティレポートの調査データに基づき、ウェブサイトの84%がjQueryのXSS脆弱性の影響を受けていると発表しました。

しかし、これはそれほど意外なことではありません。Snykの過去のレポートでも、インターネット上にJavaScriptのセキュリティ脆弱性が広く存在することが明らかになっています。

実際、開発者やウェブサイト運営者がインストール済みのJavaScript依存関係を更新しないと、問題はさらに深刻になります。使用中のバージョンに脆弱性が見つかった場合、不要なリスクを抱えることになるからです。

Cloudflareは最近、コンテンツ配信ネットワーク(CDN)サービスから収集したデータで明らかになったセキュリティ上の懸念についてブログ記事を公開し、JavaScriptライブラリはインストール後、ほとんど更新されないと結論づけました。

では、あなたのウェブサイトに脆弱性はあるでしょうか?

サードパーティの依存関係が原因で生じるセキュリティリスクを軽減する簡単な方法は、使用しているライブラリとバージョンを特定し、信頼できる脆弱性データベースと照合したうえで、脆弱性のある依存関係を修正版にアップグレードすることです。

これは思ったより簡単です。ウェブサイトで使われている脆弱なライブラリの情報を確認しやすく、簡単に検出できるようにするため、私はis-website-vulnerableというオープンソースプロジェクトを作成しました。このプロジェクトは、フロントエンドのセキュリティ脆弱性に関するSnyk Vulnerability Databaseと、SnykのLighthouseインテグレーションを利用します。

is-website-vulnerableを使って、ウェブサイトのフロントエンドで使われているJavaScriptライブラリに存在する、一般に公開されているセキュリティ脆弱性を見つけましょう。

npxのターミナル出力。jQueryとAngularJSの依存関係に、合計14件の脆弱性が表示されています。

実行するだけでウェブサイトを簡単にテストできる、コマンドライン(CLI)アプリケーションです。

ウェブサイトに脆弱性が見つかりました。次回から防ぐには、どうすればセキュリティテストを追加できますか?

自動または手動でウェブサイトの動的セキュリティスキャンを実施するには、多くの場合、非常に時間と費用がかかります。また、テスト対象のウェブサイトやウェブアプリケーションに合わせて適切に設定するには、関連するセキュリティの専門知識とアプリケーションのコンテキストも必要です。

is-website-vulnerableのようなツールは、古いライブラリやメンテナンスされていないライブラリに潜むJavaScriptの脆弱性をすばやく見つけるのに役立ちます。実行の速いテストを追加でき、脆弱性のあるバージョンをアップグレードするよう提案することで、利用に伴う全体的なセキュリティリスクを軽減できます。

GitHub Actionsを使っている場合は、is-website-vulnerableを利用して、継続的インテグレーションのパイプラインでウェブサイトを自動スキャンしましょう。脆弱性のあるバージョンのJavaScriptが使われていた場合にビルドを失敗させることができます。

スキャンするウェブサイトのURLを指定して、ファイル .github/workflows/is-website-vulnerable.yml を作成します。

name: Test site for publicly known js vulnerabilities

on: push
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
      - name: Test for public javascript library vulnerabilities 
        uses: lirantal/is-website-vulnerable@master
        with:
          scan-url: "https://yoursite.com"

CIにGitHub Actions以外を使う場合は、is-website-vulnerableのDockerイメージを使うか、CLIをインストールしてCIのステップから直接実行してください。

ウェブサイトに脆弱性が見つかりました。どうすれば修正できますか?

使用しているJavaScript依存関係のセキュリティ脆弱性を把握することは、対策の第一歩です。しかし、それを修正し、ソースコードリポジトリに自動でセキュリティ修正を受け取れるようになれば、さらに一歩進んだ対応ができます。

Snykはオープンソースプロジェクトに加え、プライベートパッケージも一部利用制限付きで無料で利用できます。ソースコードリポジトリをSnykに接続すると、プロジェクトで使用しているオープンソース依存関係を監視できます。さらに、Snykが監視・修正できるプロジェクトで脆弱性が見つかると、アップグレードを提案するプルリクエストをリポジトリに自動で作成します。

Snyk Open Sourceのセキュリティ修正を利用するメリット:

  • Snykは脆弱性を解消するために必要な最小限のアップグレードを特定し、コードに影響が出るリスクがある場合は通知します。

  • 直接依存関係に対するSnykの修正提案で、推移的依存関係の脆弱性のトリアージを迅速化できます。

  • アップグレードによる影響が大きすぎる場合や、アップグレードできない場合は、メンテナーと共同開発したSnyk独自のパッチで、迅速かつ的確に修正できます。

ぜひお試しください!

利用可能なアップグレードやパッチがあるセキュリティ問題と、「修正PRを開く」ボタンを表示した「修正PRを開く」インターフェース

Capture the Flagを始めよう

オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。