ソフトウェア・インテグリティ

 

静的解析の効果を最大化する

この記事は、開発者とその目標をサポートすることで、静的解析ソリューションの効果を最大化する方法に関する3部構成のシリーズの最初の記事です。

Maximizing the impact of static analysis

開発目標に即した静的解析

競争力のあるペースを維持しつつ、安全で高品質のソフトウェアを作成しようとしている組織では、アプリケーションのセキュリティに対する責任は開発者にとって大きなものに成り始めています。 IDEプラグイン、静的アプリケーション・セキュリティ・テスト(SAST、あるいは静的解析)ツールは、開発者がコーディング時にセキュリティの弱点や品質上の不具合を見つけるための直感的なソリューションです。

ただし、SASTツールがコードの欠陥をスキャンしても、開発者がSASTの結果を使用してアプリケーションのセキュリティを向上させるわけではありません。 実際、調査によると、開発者はコードレビュー中にSAST警告の約10%にしか対処していません。 静的解析をソフトウェア開発組織に統合しようとする多くの試みは失敗します。 このような場合、開発者に紹介されますが、欠陥を特定して修正する方法では重要な役割を果たしません。

開発組織は静的解析を採用することで高品質で安全なコードを生成することができるようになりますが、「目標を達成」できるかどうかは、最終的にSASTツールを使う「開発者」に依存します。

つまり、開発者がSASTツールの恩恵を感じているであれば、静的解析はアプリケーションのセキュリティにプラスの影響を与える可能性が高くなります。 このため、静的解析プロジェクトは、開発者のTo-Doリストにチェックボックスを追加するのではなく、開発者の目標に合わせる必要があります。

静的解析が開発者の目標をサポートする方法はたくさんあります。 そして、開発者が静的解析の恩恵を感じているかどうかがROIに重大な影響を及ぼします。

静的解析が開発者をサポート

市場投入までの時間を短縮するというビジネス上の圧力に応えて、開発者に課せられた締め切りはますます厳しくなっています。 すべてではないにしても、ほとんどの開発チームは、次の製品リリースの期限内に安全で機能的なコードを作成するという共通の目標を共有しています。 静的解析は、コードのデバッグに必要な時間と労力を削減することで、その目標をサポートできます。これは、SDLCの重要な要素になる可能性があります。

ワークフローの統合と結果は、静的解析の2つの重要な要素であり、開発者が与えられたSASTツールを積極的に利用するか、あるいは無視するように振舞う可能性があります。

ワークフローの統合

セキュリティテストは、継続的で反復的な開発を促進するDevOpsイニシアチブを混乱させる可能性があります。 ただし、独自の開発ワークフローにシームレスに統合するように設計された静的解析により、デバッグ作業を簡素化できます。

開発ワークフローは、機能的なソフトウェアを提供するために開発チームが実行する一連のタスクです。 ワークフローにシームレスに統合される静的解析は、ソフトウェア生産の自然な流れへの影響を最小限に抑えます。 対照的に、開発者が通常のタスクから逸脱する原因となるSASTツールは時間がかかる可能性があり、コードを迅速に提供するという目標に反する可能性があります。 実際、ワークフローの統合が不十分であることが、採用の大きな障壁になる可能性があります。

Google SASTチームのアカウントは、開発者が静的解析を採用することを奨励するために、戦略を反映しています。 それらは、静的解析を可能な限り迅速かつ簡単にして採用を促進する方法を説明しています。 同様に、開発者の調査によると、SASTツールは、開発者が通常のプロセスを変更する必要がない場合に、より好意的に表示されます

開発者がソフトウェアの作成に使用する可能性のあるさまざまなワークフローを考えると、SASTの統合は困難な場合があります。 さまざまな開発プロセスに対応するために、SASTツールは、開発者が変化するニーズに合わせて解析を調整できるようにする必要があります。 一部の開発者は、すぐに詳細な解析を実行したい場合がありますが、他の開発者はコーディング時に欠陥を特定することを好む場合があります。 静的解析が柔軟な場合、開発者はデバッグプロセスを独自のワークフローに統合できます。

結果

ワークフロー統合と同様に、静的解析の結果も、開発者が目標を達成できるかどうかに影響します。 SASTツールは、開発者が顧客が要求するセキュリティおよび品質基準でソフトウェアを作成するのに役立ちます。 ただし、紛らわしい結果や不正確な結果は、デバッグプロセスに問題を引き起こす可能性があり、イライラして逆効果になる可能性があります。 開発者がSASTツールの恩恵を受けるには、静的解析の結果は次のとおりである必要があります。

  • 関連情報: コードの一部の問題は簡単に修正できますが、悪用されると深刻な結果を招きます。 これらは、修正が困難であるがセキュリティに重大な脅威をもたらさない問題よりも優先されるべきです。 SASTツールは、開発者がコードを効率的に改善できるように、組織のニーズに最も関連する結果を提供する必要があります。
  • 正確: 結果には、実際の弱点と不具合が含まれている必要があります。 調査によると、高い誤検知率とSASTツールの不使用との間には密接な関係があります。 Microsoftの調査によると、開発者の4分の1未満が、20%という低い誤検知率を受け入れます。
  • 正確: 開発者がバグをすばやく修正できるように、欠陥に関するレポートには役立つ修復ガイダンスを含める必要があります。

SASTツールは、コードの弱点と不具合に関する関連性のある正確で実用的な情報を使用して、開発を遅らせることなく、安全で機能的なソフトウェアを提供できるようにすることで、開発チームとその目標をサポートできます。

開発者の幸せが鍵

静的解析を実装するための開発者中心のアプローチは、ソフトウェアのセキュリティと品質のコンテキストで、コードを迅速にデバッグするなど、開発者の目標をサポートする必要があります。 静的解析は、独自の開発ワークフローに統合して実用的な結果を生成することにより、開発者がまさにそれを行うのに役立ちます。

静的解析ツールは、セキュリティまたは品質保証ソリューションとして描かれることがよくあります。結局のところ、静的解析ツールはセキュリティの弱点や品質上の不具合を特定します。 ただし、このアプローチでは、SASTソリューションがシェルフウェアになるかSDLCの主要コンポーネントになるかを最終的に決定する開発者のニーズを無視する可能性があります。 静的解析は、開発者の生産性のソリューションとしても設計されている場合、アプリケーションのセキュリティに最大の影響を及ぼします。

Coverityがシームレスなワークフロー統合と実用的な結果で開発者をどのようにサポートするかを学びましょう。

 

 

 

 

 

この著者によるその他の情報