Skip to main content

JavaとKotlinのコードを分析する4つの簡単な方法

feature insights context

2024年8月13日

0 分で読めます

今日では、アプリケーションのセキュリティは、提供する機能と同じくらい重要です。そのため、コードを分析してセキュリティ脆弱性を見つけることは、アプリケーションの整合性を保ち、ユーザーのデータを守るうえで欠かせません。開発者は、この取り組みの最前線にいます。私たちには、作成するコードが機能的で効率的であるだけでなく、安全であることを確かめる責任があります。

静的アプリケーションセキュリティテスト(SAST)は、アプリケーションコードに潜むセキュリティ脆弱性を検出する手法です。アプリケーションのソースコードやバイトコードを分析し、セキュリティ侵害につながる可能性のある欠陥やその他の問題を探します。Snyk Codeは、この種の分析に最適なツールです。開発者は潜在的な脆弱性をすばやく簡単に見つけ、問題になる前に修正できます。

開発ライフサイクルでSnyk CodeのようなSASTツールを活用しないと、大きな影響が生じる可能性があります。開発サイクルの後半までセキュリティ問題への対応を先延ばしにすると、コストと時間がかかります。さらに重要なのは、脆弱性を見逃したまま最終製品に混入させてしまうおそれがあることです。セキュリティに先回りして取り組み、日々の開発プロセスにSASTを取り入れることで、時間とコストを節約し、深刻なセキュリティ侵害を未然に防げる可能性があります。

JavaプロジェクトでSnyk Codeを活用する

Snykは開発者向けのセキュリティツール群であり、ソースコード、オープンソースパッケージ、コンテナイメージ、クラウドインフラの設定ミスに潜む脆弱性を見つけて修正できます。Snykの強力な機能のひとつが、コードのセキュリティ脆弱性を分析するために設計されたSnyk Codeです。Snyk CodeはJavaやKotlinなど、さまざまなプログラミング言語に対応しており、JVMプロジェクトに最適です。

Snyk Codeは、機械学習を活用してコードに潜む潜在的なセキュリティ脆弱性を検出するSASTツールです。インジェクションの欠陥から安全でないデシリアライゼーションまで、さまざまな問題を特定できます。脆弱なコードがシステム内をどのように流れるかを表示するため、何が起きているのかを把握しやすくなります。さらに、詳細な修正アドバイスも提供し、アプリケーションのセキュリティ強化を支援します。

もうひとつのメリットは、特定の作業方法に縛られないことです。Snykはさまざまな形でこの機能を提供しているため、自分の作業スタイルに最適な方法を選べます。

オプション1:Snyk CLIを使ったソースコードスキャン

このセクションでは、Snykコマンドラインインターフェース(CLI)を使って、Javaのソースコードに潜むセキュリティ脆弱性を分析する方法を説明します。Snyk CLIを使えば、Snykの強力なセキュリティ分析機能を開発ワークフローに簡単に組み込めるため、開発プロセスの早い段階で脆弱性を特定し、対処できます。

Snyk CLIは、Snykプラットフォームのコマンドラインインターフェースです。Snyk CLIを使うと、Snykのセキュリティ分析をローカルの開発プロセス、CI/CDパイプライン、その他の自動化ワークフローに直接組み込めます。

Snyk CLIで静的アプリケーションセキュリティテスト(SAST)を実施するには、CLIをインストールし、Snykアカウントで認証する必要があります。手順は次のとおりです。

# Install the Snyk CLI using NPM
npm install -g snyk

# Authenticate the CLI with your Snyk account
snyk auth

インストールして認証したら、`snyk code test`コマンドを使ってJavaのソースコードを分析できます。

# Navigate to your project directory
cd /path/to/your/java/project

# Scan your source code with Snyk Code
snyk code test

このコマンドはソースコードを分析して脆弱性を検出し、見つかった問題の詳細なレポートを作成します。

Snyk CLIは柔軟性に優れており、ニーズに応じてさまざまな方法で使用できます。たとえば、変更をコミットするたびにコードをスキャンしたい場合は、CLIコマンドをpre-commitフックに組み込めます。また、CLIコマンドを継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに組み込めば、デプロイ前にコードの脆弱性を分析できます。

Snyk CLIの静的コード解析結果を表示するターミナル。XSS、SQLインジェクション、パストラバーサルなど、Javaのセキュリティ問題が8件示されています。

セキュリティ脆弱性を早く見つけて修正するほど、アプリケーションの安全性は高まります。コードをコミットする前に、ローカルマシンで始めてみませんか?無料のSnykアカウントを作成し、Snyk CLIをインストールするだけです。

Snykアカウントをまだお持ちでない方は、今すぐSnykに登録して、コードの保護を始めましょう。

オプション2:IDEインテグレーションでSnyk Codeを使う

開発者にとって、統合開発環境(IDE)は主な作業場所です。セキュリティ機能をIDEにシームレスに組み込めば、時間を節約し、コードを脆弱性から守れます。SnykはIntelliJとVisual Studio Code向けのIDEインテグレーションを提供しており、IDEから直接Javaコードのセキュリティ脆弱性を分析できます。

Snyk IntelliJプラグイン

Snyk IntelliJプラグインは、Javaコードのセキュリティに関するフィードバックをリアルタイムで提供する強力なツールです。プラグインをインストールしたら、プロジェクトを右クリックしてSnyk、次にScan Projectを選択するとスキャンできます。プラグインがコードを分析し、潜在的な脆弱性、その深刻度、修正方法の提案を一覧表示します。

HomeController.javaにおける重大度の高いSQLインジェクション脆弱性を、6段階のデータフローと修正例とともに示すSnykダッシュボード

上記の例では、Snyk IntelliJプラグインがSQLクエリにSQLインジェクション攻撃の脆弱性があることを検出します。

Snyk VS Codeプラグイン

Snyk VS Codeプラグインも、Javaコードのセキュリティ脆弱性を分析するのに優れたツールです。使用するには、VS CodeマーケットプレイスからSnyk拡張機能をインストールします。インストール後、Explorerビューでプロジェクトを右クリックし、Scan with Snykを選択します。プラグインがJavaとKotlinのコードを詳細に分析し、検出されたセキュリティ脆弱性の一覧と、推奨される修正手順を表示します。

IDEでSnykが脆弱性を分析し、ProductController.javaの93行目にあるクロスサイトスクリプティングの問題を強調表示しています。

上記の例では、Snyk VS CodeプラグインがHTML出力にクロスサイトスクリプティング(XSS)攻撃の脆弱性があることを検出します。

SnykをIDEに組み込めば、開発の最初からJavaコードのセキュリティを確保できます。デプロイまでセキュリティ対策を後回しにしないでください。

オプション3:GitリポジトリをSnykに接続してコードスキャンを有効にする

GitリポジトリをSnykに接続することは、Javaコードとアプリケーションのセキュリティを強化するための重要なステップです。SnykはGitHub、GitLab、Azure Repo、BitBucketなど、一般的なソース管理リポジトリとシームレスに連携します。このインテグレーションにより、Javaコードを継続的にスキャンし、アプリケーションのセキュリティを強化できます。

クロスサイトスクリプティング(XSS)の脆弱性、Javaコード、深刻度フィルター、問題スコアを表示するSnyk Code Analysisのダッシュボード。

上記のJavaコードの例では、GitリポジトリをSnykに連携すると、Snyk Codeが静的アプリケーションセキュリティテスト(SAST)を使ってコードを自動的に分析します。この分析では、SQLインジェクション、クロスサイトスクリプティング(XSS、安全でないデシリアライゼーションなどのセキュリティ脆弱性を検出し、Snykのユーザーインターフェース(UI)に表示します。

Snykの特長は、脆弱性を特定するだけでなく、修正アドバイスも提供することです。SnykのUIでは、特定された脆弱性の詳細を確認し、想定される影響を把握したうえで、修正方法に関するアドバイスを得られます。この機能によってSnykは他のセキュリティツールと差別化され、アプリケーションのセキュリティ強化に取り組む開発者にとって貴重なリソースとなります。

脆弱なコード変更が含まれていないかプルリクエストをチェックする

Snykのもうひとつの優れた機能は、脆弱性を持ち込む可能性のあるコード変更がないか、プルリクエストをチェックできることです。これにより、潜在的なセキュリティ問題をメインのコードベースにマージする前に検出できます。この予防的なアプローチは、Javaアプリケーションの整合性とセキュリティを維持するうえで欠かせません。

オプション4:CIパイプラインと連携してSnyk Codeを活用する

Snyk CodeをCI/CDパイプラインに組み込むと、コードのセキュリティ分析を自動化し、Javaコードに脆弱性がないことを確認できます。Snyk Codeの機能を活用することで、セキュリティ問題がアプリケーションへの脅威となる前に検出して修正できます。

このセクションでは、プラグインを使ってSnyk Codeをパイプラインに組み込む方法、Snykが提供するGitHub Actionsを使ってSASTスキャンを実行する方法、そしてCLIとJSON出力を使ってSnyk Codeとのカスタムインテグレーションを作成する方法を説明します。

SnykはJenkins、CircleCI、Azure Pipelinesなど、さまざまなCI/CDツール向けのプラグインを提供しています。これらのプラグインを使ってSnyk Codeをパイプラインに組み込むと、Javaコードに潜むセキュリティ脆弱性の検出と修正を自動化できます。

Snykが提供するGitHub ActionsでSASTスキャンを実行する

SnykはSASTスキャン用のGitHub Actionsも提供しています。これらのアクションを使えば、GitHubリポジトリ内のJavaコードに潜むセキュリティ脆弱性のスキャンを自動化できます。

Snykが提供するGitHub Actionを使ってJavaコードをスキャンする例を紹介します。

name: Snyk
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
jobs:
  security:
    runs-on: ubuntu-latest
    steps:
    - name: Check out code
      uses: actions/checkout@v2
    - name: Run Snyk to find vulnerabilities
      uses: snyk/actions/java@master
      env:
        SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

この例では、masterブランチへのプッシュまたはプルリクエストのたびに、Java向けのSnyk Actionでコードをスキャンします。

CLIとJSON出力を使ってSnyk Codeのカスタムインテグレーションを作成する

CLIとJSON出力を使って、Snyk Codeのカスタムインテグレーションを作成することもできます。Javaコードのセキュリティ脆弱性をスキャンするプロセスをカスタマイズしたい場合に便利です。

作成方法の例を紹介します。

#!/bin/bash
# Run Snyk test and output the results as JSON
snyk test --all-projects --json > snyk_output.json

この例では、Snyk CLIでSnyk testを実行し、結果をJSON形式で出力します。このJSON出力は、その後の処理や分析に利用できます。

Snyk CodeをCI/CDパイプラインに組み込むと、Javaコードのセキュリティ脆弱性を継続的にスキャンでき、アプリケーションのセキュリティをより強固にできます。

開発のあらゆる段階でコードをスキャンする

まとめとして、JavaとKotlinの開発者にとって重要なポイントを確認しましょう。それは、開発のあらゆる段階でアプリケーションコードを継続的にスキャンすることの重要性です。問題を早く、頻繁に見つけることは、単にバグを修正するだけではありません。最初から品質とセキュリティを重視する文化を築くことにつながります。Snyk CodeのようなSASTツールを使うのは、開発者のツールセットに新たなツールを加えるだけではありません。どのような環境を構築していても、日々の仕事に欠かせない基本的な習慣を確立することです。プロセスに適切に組み込めば、最初からそこにあったかのように、作業を妨げることなく問題の発見を支援してくれます。

開発者は、ビジネスロジックの作成から、コードベースの安全性とパフォーマンスの確保まで、さまざまなタスクを同時にこなしています。IDEプラグイン、CI/CDパイプライン、Gitとの直接連携など、自分たちに合った方法に適応するSASTスキャナーを取り入れれば、セキュリティと品質のチェックを、作業を中断させる負担ではなく、開発プロセスの自然な一部にできます。この柔軟性により、コードが脆弱性やアンチパターンについて継続的に評価されているという安心感を得ながら、優れたJavaおよびKotlinアプリケーションの開発に集中できます。

開発サイクル全体でSnyk Codeのようなツールを活用すれば、プロジェクトの品質とセキュリティを向上できます。スキャンを日々の開発に欠かせない手軽な作業にすることで、問題が深刻化するずっと前に発見し、対処できるようになります。早期かつ頻繁にスキャンする習慣を広めましょう。コードの品質、セキュリティ、そして安心感という、開発者にとって大きな価値につながります。

開発しながらコードを安全に

Snykはコードの品質とセキュリティ上の問題をスキャンし、IDE上で修正方法を提案します。

続きを読む

blog feature snyk container custom base recommendations
Blog

Evo Agentic AppSecのご紹介:AI開発のスピードに追随するセキュリティ

AIを活用した開発は、従来のセキュリティワークフローを上回るスピードで進んでいます。SnykのAgentic AppSecは、セキュリティエージェントが脆弱性を継続的に検出、修正、検証し、人が基準を定められるようにします。

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

illustration hero ai
Blog

AIハリケーンが到来

AIはソフトウェア開発とサイバー攻撃の双方を加速させています。リーダーは、エージェントとコードを開発の初期段階から保護し、実行時に制御を徹底するとともに、防御策を独立して検証しなければなりません。