IASTってなに？セキュリティをシフトレフト！

# TL;DR
アプリケーションセキュリティテスト手法の一つであるIAST (Interactive Application Security Testing)は、リアルタイムかつ高い検出精度で効率的なセキュリティテストを可能にする手法です。アプリケーションパフォーマンス監視サービスであるNew Relic APMはIAST機能を内包しており、信頼性の高いコードを早いスピードでリリースするDevSecOpsの実現に寄与します。この記事ではNew Relic IASTによるセキュリティテストをご紹介します。

:::note info
この機能に関する詳細はこちら
[New Relic アップデート(2023年7月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202307 "New Relic アップデート(2023年7月)")
[New Relic アップデート一覧](https://newrelic.com/jp/blog/nerdlog/new-relic-update)
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！
](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::

# IASTとは？
IAST（Interactive Application Security Testing）とは、アプリケーションセキュリティテスト手法の一つです。アプリケーションの実行環境で動作するエージェントがアプリケーションのトラフィックを捕捉し、パラメータ等を変更した別のデータを流すファジングによってアプリケーションの脆弱性を検出する方法です。

上記の特徴からIASTは、リアルタイムにソースコードのレベルの詳細度で脆弱性を把握できることに加え、脆弱性が露出する具体的な攻撃方法も把握できるというメリットがあります。
また、アプリケーションの機能テストなどで流れるトラフィックを捕捉してテストをすることができるので、既存の開発プロセスに組み込み易く、信頼性の高いコードを早いスピードでリリースするDevSecOpsを実現できる点も特徴です。


IASTについては以下の公式ブログもご参照ください。

https://newrelic.com/jp/blog/best-practices/what-is-iast


# 従来のテスト方法との違い？
アプリケーションセキュリティテスト手法には、IASTが登場する以前からあるDAST（Dynamic Application Security Testing）やSAST（Static Application Security Testing）などがあります。それぞれの詳細についてはここでは細かく説明しませんが、一般的に言われている以下のようなDASTやSASTの欠点をIASTは補うことが可能です。
### DAST
・専門チームやベンダーに依存（テストのシナリオを作る必要があり、専門家の知識が必要）
・コードの特定ができない（ブラックボックステストのため）
・テスト時間が長い

### SAST
・誤検知が多い（検知したものが本当に問題かどうかエンジニアが確認する工数がかかる）
・動的に変わるものやOSSのコードなどは検出できない
・テスト時間が長い

IASTによってDAST/SASTが完全に不要になることはありませんが、得手不得手を理解し、うまく組み合わせることでより効率的にアプリケーションのセキュリティリスクを排除することが可能になります。
![IAST.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/05a82f98-43c9-2a7e-364c-f70af6243f1f.png)



# New Relic IASTとは？
New Relic IASTの前にNew Relic APMを説明します。

New Relic APMは、アプリケーション実行環境で稼働するエージェントがアプリケーションのトラフィックを計装することによってアプリケーションのボトルネックやエラーをソースコードやDBクエリレベルで即座に特定することができるものです。New Relic APMによって、開発やステージング環境での品質向上（非機能の作り込み）によるシフトレフトや、リリース後のサービスレベルの把握と問題の早期解決が可能になります。

そして、New Relic APMは現在IAST機能も備えており、パフォーマンスやエラーだけでなくセキュリティテストも実行可能になっています。従来同様New Relic APMエージェントを導入し、設定ファイル等でIASTの機能を有効にするだけで利用可能となり、OWASP TOP 10などを即座に特定できるようになります。

なお、2024年8月時点では、Java、Node.js、Ruby、Goで開発されたアプリケーションをサポートしています。

# 試してみよう
## アプリケーションの用意
今回は簡単のため、Javaの[Spring Petclinic](https://github.com/spring-projects/spring-petclinic)を利用します。設定方法についてはGithubの説明を参照してください。

## APMエージェントの導入
Spring Petclinicの準備ができたらAPMエージェントを導入します。New Relicにログイン後の画面左メニュー「Add Data」からAPMエージェントの導入方法は確認できます。
スクリーンショットはMaven経由で導入する方法ですが、その他の方法でも同様です。
![Add Data Java.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/01bd77e3-9839-fb26-ecad-ec942057ab7a.png)


## IASTの有効化
Javaの場合、IAST機能はNew Relic APMエージェントの設定ファイルにてオプションを有効にするだけで利用できます。設定ファイルのsecurityのセクションにて赤枠の二つの部分をtrueにします。言語ごとの設定については公式ドキュメントを参照ください。
![iast-settings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/f9dc257f-0349-0471-4004-5a8226c7468d.png)


これで準備ができました。必要なのはこれだけです。アプリケーションを起動し、アプリケーションにアクセスしてみましょう。アクセスするとバックグラウンドでセキュリティテスト（ファジング）が開始されます。

## 結果の確認
New Relic ログイン後の画面にIASTというメニューが追加されて、ここから該当のアプリケーションの脆弱性が確認できます（2023年9月時点）。いくつかのユースケースと共に実際の画面をご紹介します。

### アプリケーションの脆弱性把握
まず、今IASTを有効にしてテストしたアプリケーションについて脆弱性があるか確認します。以下の画像にある通り、アプリケーションには脆弱性が検出されており、すぐに対処すべきクリティカルなものがどの程度あるのかを把握できます。
![iast_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/ad57aba4-6628-dd54-98a3-bbda2f956ed4.png)

### APIやメソッド単位での脆弱性箇所の把握
アプリケーションに脆弱性が検出されている場合、APIやメソッド単位でどこに脆弱性があるのかがわかりますので、APIやモジュールを担当するエンジニアがすぐに対応する必要があることを把握できます。
以下の画像は脆弱性の検出状況をAPIごとに一覧しています。
![iast_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/ed0d4d98-c58f-ed1a-7bf3-82fd23e58eac.png)


以下はメソッド単位です。
![iast_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/73991703-3050-27ca-ab7d-130f5ec0e74a.png)

### 脆弱性の詳細把握
検出された脆弱性は、脆弱性の説明とともに、その原因、顕在化するための攻撃方法、解決方法とともに提示されます。エンジニアは問題があることがわかるだけでなく、それがなぜ起きていてどう直せばいいのか把握できますので脆弱性の対処が迅速化できるようになります。
![iast_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/5750f2eb-cc0f-7dbf-d36c-96de53c1d7d8.png)
![iast_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/9b405d9f-156f-4558-2171-680e8248cd92.png)


### アプリケーションのカバレッジの把握
New Relicでシステム全体をカバーすることによりアプリケーションセキュリティテストのカバレッジが把握できます。これにより未テストなアプリケーション、つまり潜在的に脆弱性のリスクのあるアプリケーションが把握できるので、対策されずに本番にリリースされることを未然に防ぐことが可能になります。
![iast_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/535230/712a1a80-747e-ef4d-8f45-778c79fa58c5.png)



# まとめ
この記事では、New Relic APMによってサポートされたIASTというアプリケーションセキュリティテスト手法、およびテスト結果がどう見えるのかを紹介しました。冒頭の通り従来のアプリケーションセキュリティテスト手法の問題点を解消し、セキュアなソフトウェアを素早くリリースすることを実現することが可能になりますので是非お試しください。

なお、IASTはアプリケーションのトラフィックを捕捉してファジングするという性質上、本番環境ではなく、本番リリース前の環境（例えばテスト環境）などで利用する形になります。本番環境で機能を有効にしないようご注意ください。


:::note info
最新のアップデートの詳細はこちら
[New Relic アップデート(2023年7月)](https://newrelic.com/jp/blog/nerdlog/new-relic-update-202307 "New Relic アップデート(2023年7月)")
[New Relic アップデート一覧](https://newrelic.com/jp/blog/nerdlog/new-relic-update)
:::

:::note info
無料のアカウントで試してみよう！
[New Relic フリープランで始めるオブザーバビリティ！
](https://qiita.com/ktst79/items/5ee74b34e6adb8a7a6fa)
:::

:::note info
[New Relic株式会社のQiita Organization](https://qiita.com/organizations/newrelic)では、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
:::