Pythonコードの脆弱性を検知する「AppSec」:動的型付け言語の弱点をカバー
動的型付け言語(動的言語)の場合、変数に値が代入されるまで型が決定されないため、静的テストでは十分な検証ができない。動的言語の一つであるPythonもこの問題を抱えている。
Contrast Securityは、自己防衛型ソフトウェアをテーマとする企業だ。自己防衛型ソフトウェアとは、AIによる予測機能によってインフラの各層の自律性を高めるソフトウェアを指す。
同社は現在、Webアプリケーション開発に広く利用されているオープンソースプロブラミング言語Pythonに注目している。
多くの読者がご存じのように、Pythonは組み込みのデータ構造体とシンプルな構文を備える動的言語で、迅速なアプリケーション開発に適している。Netflixの動画ストリーミング配信サービス(全世界1億世帯以上)やInstagramのサポートに使われ、NASA(米航空宇宙局)では宇宙探査を支援している。
関連記事
- Pythonの知識だけでWebアプリを開発できる「Anvil」
- 機械学習で生じる問題を解決するPythonライブラリ「MLflow」
- JavaやPHPからの移行も簡単、改めてGo言語がオススメな理由
- RESTはオワコンか、クエリ言語は「GraphQL」の時代へ
- 最も脆弱性が多い言語は? OSSの脆弱性は増大傾向
ただし、Pythonの開発者はセキュリティについて一定の課題を抱えている。
「従来のセキュリティツールでは、企業規模のPythonアプリケーションの脆弱(ぜいじゃく)性を正確に特定できない。特定できたとしても、ソフトウェア開発ライフサイクルのかなり後半になる。それでは、早い段階で脆弱性を見つけるよりもはるかにコストが高くなる」と、Contrast Securityはプレス発表で述べている。
問題の本質
問題の本質は、PythonがJavaやCのような静的言語ではなく動的言語である点にある。
動的と静的の切り分けは、主に変数の割り当て方に基づく。静的言語は変数に型が割り当てられる。だが動的言語では、変数の型はアプリケーションの実行時まで決まらない。
その結果、アプリケーションのセキュリティを正確かつ効果的に確保するにはPythonコードの実行時に評価する必要がある。実行時の評価は、SAST(Static Application Security Test)ツールやDAST(Dynamic Application Security Test)ツールのような従来型のテストでは不可能だ。
Contrast Securityは次のように述べている。「動的言語には最新のセキュリティツールが必要だ。当社の『AppSec』がPythonベースのWebアプリケーションに適しているのはまさにこのためだ。AppSecは、データの流れを通じて実行中のアプリケーションをテストすることで、脆弱性の特定と修復の検証を自動化する。(SASTやDASTのように)個別のコード行を分析するのではなく、アプリケーションの全ルートを可視化する」
Contrast Securityの製品には次のような機能がある。一つは、運用前に実行するIAST(Interactive Application Security Test)だ。実行中のコードからデータを収集して、カスタムコードとライブラリ双方の脆弱性を検出する。もう一つは、ライブラリを解析するSCA(Software Composition Analysis)。これは潜在的に脆弱なサードパーティーコンポーネントとオープンソースコンポーネントを特定する。
運用環境で実行するRASP(Runtime Application Self-Protection)も含まれている。リクエスト入力を検証してアプリケーション内部(カスタムコードとライブラリの両方)の脆弱性が悪用されるのを防ぐ。
Copyright © ITmedia, Inc. All Rights Reserved.