OSSのIAST「DongTai (火线-洞态IAST)」の翻訳メモ
「DongTai / 火线-洞态IAST (火线安全平台 : huoxian 社)」というOSSのIAST(Intereactive Application Security Testing)が珍しいので、リポジトリやドキュメント周りを勝手に翻訳(DeepL)したメモ書きです。
(2021/12/26 時点の情報です)
リポジトリ: HXSecurity/DongTai
製品公式サイト (首页-洞态)のトップはこのような感じ。
簡単なメモ
- エージェントとサーバサイドの構成
- どちらもOSS
- サーバサイドは huoxian社 がSaaSとしても提供
- サーバサイドの構築は Docker Compose や Kubernetes が提供されており自前の環境にもデプロイ可能。さらに容易
- テスト対象アプリケーションの言語は以下に対応
- Java
- Python
- PHP(ベータ版)
⬇︎ ドキュメント ⬇︎
ドキュメントは中国語と英語がある。
Introduction
About IAST
インタラクティブ・アプリケーション・セキュリティ・テスト(Interactive Application Security Testing)は、2012年にガートナー社が提唱した新しいアプリケーション・セキュリティ・テスト・プログラムである。
IASTは、相互に関連する実行時セキュリティ検出技術であるDASTとSASTの組み合わせに相当する。Webアプリケーション上に配置されたエージェントを用いて動的に動作し、実行時に送信されるトラフィックを監視してトラフィックの流れを分析し、リアルタイムにセキュリティの脆弱性を特定することができる。
IASTツールは、より高いテスト精度を提供するように設計されており、アプリケーションのソースコード内の脆弱性の種類と正確な位置を含む明確な結果を得ることができます。開発者がリスクにおけるリスクをリアルタイムに修正するのに役立ちます。
IASTはスキャンではなく、セキュリティテストです。
IASTセキュリティツールには、大きく分けて Active IASTと Passive IAST の2種類があります。
- Active IASTは、DASTソリューション(ウェブスキャナー)とアプリケーションサーバー内で動作するエージェントを組み合わせたアプローチです。
- Passive IAST もまた、セキュリティテスト環境において、アプリケーションにエージェントをインストールする必要があります。
受動的 IAST は、データを収集し、正確なセキュリティ上の発見を提供するために、あらゆる形式の機能テスト(入力、 リクエスト、データベースなど)を活用しますから、専用のテスト攻撃を積極的に実行する必要はありません。
DongTai IAST は Passive IAST です。
What is DongTai
DongTaiは、企業がより安全で優れたコードを長期に渡って生産できるようにすることを目的とした、企業向けDevSecOpsソリューションの実装に注力しています。
DongTai IASTは、世界初のフルオープンソースのIASTプロジェクトです。実行時のデータフロー技術を利用して、悪用される可能性のあるセキュリティ脆弱性(SQLインジェクションやXSSなど)を特定し、検証済みの脆弱性のリスク優先リストを開発者に提供し、リアルタイムでコードを修正することができます。
The Advantage of DongTai IAST
- フルオープンソースのIASTプロジェクト。
- エージェント間の垣根を取り払うように設計されています。エージェントはランタイムの収集にのみ注力し、システム性能の使用量を削減します。
- 受動的なIASTであるため、検出精度が高く、リアルタイムに実行可能な結果を得られるという利点があります。
- セキュリティテストを実施するために特別に設計されたトラフィックを送信する必要はありません。
- 攻撃専用のテストを実施しないため、業務に支障をきたすことはありません。
- 導入やインストールが簡単
- スピードと自動化を促進する統合ソリューションを提供し、DevOpsやDevSecOpsを採用する企業の貴重な味方となります。
- カスタムルールの作成が可能で、特定の企業や業界のニーズに応じて脅威のカバレッジ戦略をパーソナライズすることができます。
System Context
DongTai IAST consists of the following components:
DongTai IAST Agent:
Webアプリケーションサーバーのデータフローを監視するために使用します。エージェントはコード・インストルメンテーション(code instrumentation)を通じてリクエストを監視し、継続的にデータを収集し、これらのデータをDongTai IASTサーバに送信します。
IASTエージェントは、1台のマシンに複数のウェブアプリケーションがデプロイされている場合、各ウェブアプリケーションサーバーにインストールされます。
DongTai IAST Server:
DongTai IASTアーキテクチャの主要コンポーネントで、ユーザーインターフェイスを生成し、DongTai IASTエージェントが収集したデータを分析して脆弱性を特定し、脆弱性を保存して脆弱性レポートを生成します。
また、発見した脆弱性をユーザーに通知し、結果の詳細を表示し、Web-APIを提供し、ユーザー、グループ、スキャンされたWebアプリケーションプロジェクト、およびカスタムルールを管理します。
System Context Diagram of DongTai IAST:
- 通常の運用時やセキュリティテスト時には、WebアプリケーションはユーザーからHTTPリクエストを受信します。
- DongTai IASTエージェントはWebアプリケーションと一緒に配備され、トラフィックを監視してデータを収集し、そのデータをDongTai IASTサーバに送信します。
- 収集されたデータはすべて DongTai IAST Server で分析されます。脆弱性が検出されると、サーバーはその旨をユーザーに通知します。
また、ユーザーは管理サーバー上で脆弱性のあるコード行、ランタイムデータ、対処方法などを含むレポートを確認することができます。
Architecture
High-Level Architecture
以下、使用部品とその仕組みについて説明します。
DongTai IAST Client-Side Component:
Agent: ウェブアプリケーションと一緒に配備し、ウェブアプリケーションサーバーのデータフローを監視するために使用します。データを収集し、OpenAPI経由でDongTai IASTサーバにデータを送信します。エージェントは、ウェブアプリケーションを再起動した後、毎回サーバからユーザーの変更を取得し適用します。
DongTai IAST Server-Side Component:
- Web: ユーザーグループ、スキャンしたWebアプリケーションのプロジェクト、脆弱性レポート、エージェント、カスタムルールなどを管理するためのユーザー向け管理インターフェースです。
- WebAPI: ユーザーからのリクエストを処理し、その結果をユーザーに返信するために使用します。
- OpenAPI: クライアントサイドのエージェントからデータを収集し、データベースに保存するために使用します。また、ハートビートなどのログを監視し、エージェントの可用性をチェックします。
- Database: ユーザー、スキャンしたプロジェクト、レポート、エージェントのルール、エージェントから収集した生データなどを保存します。
- Engine Task: Engineに解析タスクを割り当てる。
- Engine: エンジンタスクからタスクを取得し、収集したデータをルールパックのナレッジベースで解析し、脆弱性を特定します。脆弱性が発見されると、その詳細がデータベースに保存され、発見されたことをユーザーに通知するための通知コンポーネントが起動します。
- Notification: ユーザーへの通知に使用されるサードパーティ製API。
Architecture Diagram
Diagram of Vulnerabilities Detection:
A-1 ~ A-5
- A-1: 通常の運用やセキュリティテストの際、WebアプリケーションはユーザーからHTTPリクエストを受け取ります。
- A-2: DongTai IASTエージェントはウェブアプリケーションと一緒に配備され、トラフィックを監視してデータを収集し、OpenAPI経由でDongTai IASTサーバにデータを送信します。
- A-3: OpenAPIがデータを受信すると、データをデータベースに保存し、Engineを起動します。
- A-4: Engineはデータベースから収集したデータの解析を開始し、脆弱性が特定されるとその詳細が保存されます。
- A-5: 同時に、脆弱性が発見された旨の通知がユーザに届きます。
Diagram of Management:
B-1 ~ B-4
- B-1, B-2: WebAPIは、ユーザーからのユーザーグループ管理要求、脆弱性レビューなどの要求をWeb経由で処理する。
- B-3, B-4:その後、WebAPIはデータベースからの結果をユーザーに応答し、Web上に表示する。
Diagram of Modify Agent Setting:
C-1 ~ C-4
- C-1, C-2: WebAPI は Web 経由のユーザーからの要求を処理し、データベースに変更内容を格納する。
- C-4, C-3: クライアントのウェブアプリケーションが再起動すると、エージェントは OpenAPI 経由で変更を取り込み、適用します。
Technical Specification
Supported - DongTai IAST Server
Environments
- Docker
- Kubernetes
Supported - DongTai Agent
Languages
- Java
- Python
- PHP (ベータ版)
Platforms
Languages | Platforms |
---|---|
Java | Any Java EE Server、GlassFish、Jetty 、Red Hat JBoss Enterprise Application Platforms、Red Hat JBoss Web Server、Resin、Tomcat、WebLogic、WebSphere |
Python | Django、Flask |
Runtime/Frameworks
Java/JVM | Enterprise JavaBeans (EJB)、Grails、GWT、Hibernate、OWASP ESAPI、Play、Seam、Spring、SpringBoot、Struts、Vaadin、Velocity |
Java Runtime | AdoptOpen JDK、Amazon Corretto、Eclipse OpenJ9、IBM、Oracle HotSpot、Open JDK、Red Hat Open JDK |
Vulnerabilities Coverage
Severity Level | Vulnerabilities |
---|---|
High | Injection (EL expression, HQL, JNI, LDAP, NoSql, SMTP, Sql, Xpath, reflection), Command Execution, Server-side Request Forgery, Insecure XML Decode, Path Traversal, Insecure JSON Deserialization |
Medium | XSS、XXE |
Low | Cookie Secure: Without Secure Flag Set, Header Injection, Regular Expression DoS, Weak Cryptographic Hash, Weak Encryption, Unsafe Readline, Unvalidated Forwards, Unvalidated Redirects |
Info | Missing Content-Security-Policy Pesponse Header, Missing X-Content-Type-Options Response Header, Missing X-XSS-Protection Response Header, Incorrect Strict-Transport-Security Configuration, Click-Jacking |
Started
⬇︎ リポジトリ ⬇︎
インフラ
-
HXSecurity / DongTai
DongTaiは、OWASP WEB TOP10の脆弱性、マルチリクエスト関連の脆弱性(ロジック脆弱性、不正アクセス脆弱性などを含む)、サードパーティ製コンポーネントの脆弱性などの検出をサポートする対話型アプリケーションセキュリティテスト(IAST)製品です。 -
HXSecurity / Dongtai-Base-Image
DongTai-Base-Imageは、DongTaiの基本サービスである、MySql、Redis、Python、PostgreSQLを構築するために使用されます。
サーバ
-
HXSecurity / DongTai-web
dongtai webは、「huoxian DongTaiIast」のフロントエンドプロジェクトで、ページ表示を担当しています。 -
HXSecurity / DongTai-webapi
DongTai-WebAPIは、DongTai IASTのユーザーリソース管理に使用されます。 -
HXSecurity / DongTai-openapi
DongTai-openapiは、プローブ登録処理、フックストラテジー発行、メソッドコールデータ/コンポーネントデータ/エラーログ/ハートビートデータ受信、脆弱性検出タスク発行、パケットリプレイデータ発行等に使用されます。 -
HXSecurity / DongTai-engine
DongTai - エンジンは、プローブによって収集されたメソッドデータを分析するために使用され、APIの要求の脆弱性があるかどうか汚染物質の追跡のアルゴリズムを介して分析し、また、タイミングのタスクを担当しています:期限切れのログクリーニング、プローブ状態の維持、データパケットリプレイ処理などです。
エージェント
-
HXSecurity/DongTai-agent-java
Java AgentはDongTai IASTのJavaアプリケーションプローブで、Javaアプリケーションの実行中にダイナミックフックによりメソッド呼び出しデータを収集する。
構成
サーバ
Docker Image | Dockerfile |
---|---|
dongtai/dongtai-web | https://github.com/HXSecurity/DongTai-web |
dongtai/dongtai-webapi | https://github.com/HXSecurity/DongTai-webapi |
dongtai/dongtai-openapi | https://github.com/HXSecurity/DongTai-openapi |
dongtai/dongtai-engine | https://github.com/HXSecurity/DongTai-engine |
dongtai/dongtai-mysql | https://github.com/HXSecurity/Dongtai-Base-Image/blob/main/mysql/Dockerfile |
dongtai/dongtai-redis | https://github.com/HXSecurity/Dongtai-Base-Image/blob/main/redis/Dockerfile |
エージェント
エージェント詳細
Java
Dongtai-agent-javaは、DongTai IastのJavaアプリケーション用データ取得ツールです。iastエージェントを追加したJavaアプリケーションでは、クラスのバイトコードを書き換えて必要なデータを収集し、そのデータをdongtai-OpenAPIサービスに送信し、クラウドエンジンがそのデータを処理してセキュリティホールがあるかどうかを判定します。
Dongtai-agent-javaは、agent.jar
、iast-core-jar
、iast-inject.jar
、dongtai-servlet.jar
から構成されています。
-
agent.jar
エージェントのライフサイクルと設定を管理するために使用されます。
エージェントのライフサイクルは、エージェントのダウンロード、インストール、起動、停止、再起動、アンインストールを含みます。
エージェントの設定には、アプリケーションの起動モード、脆弱性検証モード、エージェントを有効にするかどうか、などが含まれます。 -
iast-core.jar
の主な機能は、バイトコード積み上げ、データ収集、データ前処理、データ報告、サードパーティ・コンポーネント管理などです。 -
iast-inject.jar
BootStrap ClassLoaderにインジェクトするために使用されます。そして、'iast-core.jar'のデータ収集メソッドがターゲットアプリケーションで呼び出されます。 -
dongtai-servlet.jar
アプリケーションが送信したリクエストと受信したレスポンスを取得するために使用されます。
データの表示やリクエストの再生に利用されます。
Python
// TODO
⬇︎ その他 ⬇︎
動画
- DongTaiの開発元の火线安全平台(huoxian)がIASTについて説明している動画。(※中国語)
洞态的个人空间_哔哩哔哩_bilibili
https://space.bilibili.com/623263773/
Discussion