デジタルイノベーション推進室のbenishougaです。昨今では様々なOSSがあらゆるアプリケーション開発に利用されています。今回は、そのアプリケーション開発で依存するOSSを対象にその品質をチェックする、SonarQubeの新機能 Advanced Securityを紹介したいと思います。

目次

1.    SonarQubeとは
2.    これまでのセキュリティ関連機能の紹介
3.    新機能Advanced Securityとは
   ・SCA
   ・Advanced SAST
4.    まとめ

1.SonarQubeとは

SonarQubeとは、端的に言うと静的解析ツールですが、現在はコード品質や生産性の改善を行うプラットフォームとして進化してきているツールです。開発者がコードのバグや脆弱性、保守性の問題を早期に発見し、修正することを支援します。SonarQubeにはSonarQube IDEで行う開発時のリアルタイム分析と、SonarQube Server(Cloud)で行うCI統合された分析により、開発プロセス全体で一貫した品質管理を実現します 。

 

SonarQubeに関する記事について、当ブログでは以下のようなものアップしているので、興味ある方は参考にしていただければと思います。

SonarQubeの紹介 | Tech Blog | CRESCO Tech Blog


SonarQube ServerをAWSで構築 | Tech Blog | CRESCO Tech Blog


SonarQubeをESLintと比較し紹介します | Tech Blog | CRESCO Tech Blog
 

2.これまでのセキュリティ関連機能の紹介

SonarQubeには、SASTやTaint Analysis、Secrets Detection、IaC Scanningなど多くのセキュリティ関連機能があります。

 

  • SAST
    SAST(静的アプリケーションセキュリティテスト)は、ソースコードを静的に分析し、潜在的なセキュリティ脆弱性やコーディングの欠陥を早期に発見するための機能です。これにより、開発者はコードの品質を向上させ、セキュリティリスクを低減することができます。
  •  

  • Taint Analysis
    Taint Analysis(汚染分析)は、外部入力がシステム内をどのように流れるかを解析し、セキュリティリスクを特定するための機能です。これにより、SQLインジェクションなどの脆弱性を発見し、セキュリティリスクを低減することができます。
  •  

  • Secrets Detection
    Secrets Detectionは、コード内に紛れ込むことのあるパスワードやAPIキーなどの機密情報を探し出すための機能です。これにより、情報漏洩のリスクを大幅に低減することができます。
  •  

  • IaC Scanning
    IaC Scanningは、インフラストラクチャコードをスキャンし、クラウド環境や設定に関するセキュリティ問題を早期に発見するための機能です。これにより、セキュリティリスクを低減し、クラウド環境の安全性を向上させることができます。

 

紹介したこれらのセキュリティ機能は、標準ルールの変更や、独自ルールの追加といったカスタマイズができ、 CWEやOWASPといった業界標準に基づく様々なレポート出力機能と合わせて、多様なセキュリティニーズに対応することができます。

3.新機能Advanced Securityとは

当記事の冒頭でも触れた通り、昨今のアプリケーション開発では、OSSの活用は当たり前に行われており、実際に動くアプリケーションコードのうち、OSSが占めるコードの割合はさらに増えています。しかし、ライセンス条項が示す通り、OSSコードの責任を負う者はいません。つまり、何か問題があった場合、実際に責任を取る必要があるのは、アプリケーションを提供する自分たちとなってしまいます。

 

今回紹介しているAdvanced Securityは、SCAやAdvanced SASTの2つの新機能が追加され、自分たちで開発したコードだけでなく、OSSに含まれる問題や脆弱性の検知も可能となりました。これにより、上記のOSS使用に関わる懸念を解消することができます。

 

以下、それぞれの機能を詳しく紹介します。

 

  • SCA
    SCAとは、Software Composition Analysis(ソフトウェア構成分析)の略で、アプリケーションが依存しているOSSライブラリを洗い出し、脆弱性やライセンスによるトラブルがないかをチェックし、レポートするツールや仕組みです。このチェックを言語によらずプロジェクト全体で行うことができます。避けたいライセンスが利用されていないことを確認できるツールと考えると想像しやすいと思います。近い機能としてJavaScriptのパッケージ管理ツールnpm で提供されているnpm auditなどがあります。

     

    このSCAの機能は、Sonar社がゼロから開発したものではなく、2025年初期に買収した Tideliftという会社の技術を利用しています。TideliftはこのSCAの機能を長年運営してきており、その運営含め SonarQube に取り込まれています。

     

    他社のSCAツールとの差異や特徴についてですが、まずSonarQubeでは数多くのOSSの開発者/メンテナーと提携し、直接情報を得ている点があげられます。これにより、直接的で正確な影響情報提供が可能となっています。次にSonarQubeと統合された機能であることがあげられます。他社SCAツールは独立したツールとなっていることが多く、自分たちで開発プロセス/ワークフローに統合するには個別にその作業をする必要がありますが、SonarQube の SCA では、すでに設定したワークフローの中でチェックまで行うことができます。PullRequestのデコレーションや、課題の割り当てなども、今までの管理に載せることができます。

     

    現在SonarQubeのSCAではJava、JavaScript、Python、C#、Ruby、Go と、それらのパッケージマネージャをサポートしています。サポート言語は、今後のバージョンアップで、さらに増やしていく予定のようです。(詳しくはAnalyzing projects for dependencies (SCA) | SonarQube Server Documentationを確認ください)また、SBOM形式(CycloneDX、SPDX形式)のエクスポートに対応しており、他のツールとの連携やインシデント時の問題の追跡に役立ちます。
  •  

  • Advanced SAST
    Advanced SASTは、従来のSonarQubeのSASTよりも解析範囲を広げ、OSSライブラリの中のコードまで分析する機能です。今までは、アプリケーション処理の多くがOSSライブラリに依存しているにも関わらず、その解析が十分に行えず、見逃しや偽陰性につながっていました。

     

    Advanced SASTは依存しているOSSライブラリも含めて、その相互作用までコードを分析します。これによりアプリケーション全体の挙動をより正確に把握できるようになり、Taint Analysisでは依存関係を考慮したデータフロー分析が可能になり、誤検知率を低減しながら、これまで見逃されていた脆弱性も検出できるようになっています。OSS側の解析結果はSonar社が管理しているAPIサーバーでデータを蓄積し再利用することにより、パフォーマンスへの影響が抑えられるように設計されているようです。Advanced SASTは現在Java、JavaScript、TypeScript、C#に対応しています。

4.まとめ

SonarQubeの新機能Advanced SecurityはOSSの問題に対処する待望の機能です。SCAを通じOSSライブラリの脆弱性やライセンス問題を迅速に発見し、Advanced SASTによってコード全体を精密に分析することが可能になりました。これにより、開発者は包括的なセキュリティ管理を実現し、リスクをより効果的に低減することができるようになりました。

 

Advanced Securityの機能を利用するには別途オプションライセンスが必要ですが、OSSを多用した開発環境におけるその価値は非常に高いものとなると感じます。アプリケーションの安全性と品質向上のために、ぜひ検討してみてください。

 

クレスコではSonarQubeを提供しているSonar社とパートナーシップを結び、その販売を行っています。またSonarQubeを活用したTrust Code Hubというシステム開発におけるコード品質の継続的な改善を通じて、開発効率とソフトウェア品質の向上を実現するソリューションも展開しています。興味を持たれた方はぜひ以下のページからお問合せください。

 

Trust Code Hub|株式会社クレスコ