脆弱性の静的コードテスト:理想的なアナライザーは何でしょうか?

今、脆弱性に関するコードの統計分析の方法について多くの話があります。 この現象については多くの意見があります。この方法の有効性に対する熱心な否定から、天国への有効性の称賛まで。 真実は、いつものように、その中間にあります。 したがって、それを見つけようとすると同時に、理想的な静的アナライザーがどのように見えるべきかについての一般的なビジョンを作成しましょう。



適用範囲



静的アプリケーションセキュリティテスト(略してSAST)は、調査対象のアプリケーションを実際に起動せずにコードまたは脆弱性の一部を分析することです。 通常、これには専用のソフトウェアが使用されます。 有名なコンピューター科学者は、他のプログラムが他のプログラムを分析して、データセットで実行が停止されるかどうかを判断できないことを証明したため、チューリングの仕事に精通している人々はおそらく悪意に満ちた笑い声をあげています。



そして理論的には、これは実際にそうです。 ただし、実際には、すべてがやや複雑です。 まず、停止の問題はチューリングマシンであるためです。これは、無制限の供給と、それに応じて配置できる状態の数が無限である抽象的なコンピューターです。 したがって、分析は不可能です。



現在、このようなコンピューティングシステムは存在せず、長期間存在しないことは明らかです。 したがって、SAST技術の実用化を検討するには、チューリング理論を有限状態マシン、またはより単純に、無限の状態を持たない通常のコンピューターに適用する必要があります。 また、このような環境で実行されているアプリケーションは、別のプログラムで簡単に分析できます。



さらに、原則として、セキュリティ分析では脆弱性を含む可能性がある部分のみを調査する必要があるため、静的なセキュリティテストでコード実行のすべての可能なバリアントを調査する必要はありません。 したがって、チューリングマシンについて話している場合でも、その状態の数をSASTの有限数に照らすことは可能です。



静的解析メソッド



アプリケーションコードの脆弱性を分析するために、通常は3つのアプローチが一緒に使用され、別々に使用されます。





SASTの代替



分析の名前に基づいてのみ-静的-別の種類があると仮定できます。 実際、プログラムでコードの脆弱性をチェックするために、動的テスト(動的アプリケーションセキュリティテスト、略してDAST)も使用できます。



この場合、すでに実行中のアプリケーションが調べられます。 特定のパラメーターと変数で始まり、その後、潜在的な脅威をチェックします。 この方法の欠点は明らかです。プログラムを展開して、そのプログラムで多くのテストを実行できるとは限りません。 また、以前の研究の開始により、分析結果が歪む場合があります。



別の種類のテストは、面白い、またはインタラクティブなIASTです。 動的分析と静的分析の両方を使用します。 SASTは脆弱性につながる可能性のある入力データの潜在的なセットをモデル化し、この情報に基づいてDASTはアプリケーションの実際のテストを実施します。



理想的なアナライザー



そこで、脆弱性に対するコードアナライザーの機能、方法、および代替手段を検討しました。 可能な限り効率的に仕事をするためには、どのような特性を持たなければなりませんか?





どう思いますか?



All Articles