開発チームがセキュアなコーディングを行おうとした時に、開発しているソフトウェアに合わせてセキュリティポリシーを採用しそれに準拠したコーディングを行う、といったケースがあります。また、開発するソフトウェアによっては準拠しなければならないセキュリティポリシーもあるのではないでしょうか。
OWASP Top10やPCI DSSなどセキュリティポリシーは様々ありますが、それをいかにして徹底させるか、というのは大きな課題です。その方法の一つとして静的解析ツールがあります。セキュリティのテストは通常リリース直前に行われることが多く、問題が見つかると大きな手戻りが発生します。それによって、リリースの遅延や工数の増加に繋がることもあります。そこで、ソースコードの実装中に静的解析ツールを使うことで、後工程で問題になりそうな脆弱性のあるコーディングを早い段階で発見し、手戻りを最小限にできます。
Jenkinsを使ったセキュアコーディングチェックの自動化
静的解析を使ってセキュアなコーディングを徹底させるためにはCI環境に組み込み自動化を行います。ソース管理システムにソースコードをコミットしたタイミングや定期的に静的解析を実施することで、開発者は意識せずに結果を受け取る事ができます。ソースコードに変更があった際には必ず実行されるため、セキュアコーディングを徹底できます。また、ソースコードに問題があった場合でもすぐに結果を確認できるので、手戻りも少なく効率的に修正を行うことができます。
ダッシュボードによる確認とコンプライアンス順守レポート
静的解析にはJtestを利用することができます。Jtestにはあらかじめ様々なセキュリティポリシーに対応したコンフィギュレーションが用意されているため、すぐにでも解析を実施することができます。また、それ以外にも多くのセキュリティチェックのルールを持っているため、開発チームのセキュリティポリシーにあわせてルールやコンフィギュレーションを選択することで、チーム全体で共通のセキュリティチェックを行うことができます。
Jtestでチェック可能なセキュリティポリシー 例
- PCI DSS
- CERT for Java
- OWASP Top 10
- OWASP API Security Top 10
- CWE Top 25
- CWE 4.4
CI 環境で実行したJtestのセキュリティチェックの結果は、ダッシュボードツールである Parasoft DTP へ自動で送られます。DTP上から解析結果を確認することができるため、開発者はすぐに問題のあるソースコードを確認できます。また、DTPではいくつかのセキュリティポリシー専用のダッシュボードが用意されているため、例えばPCI DSSのポリシーから逸脱していないかをひと目で把握できます。
Jtest及びDTPをPCI DSS準拠に活用頂いた例もあります。
富士ソフトが「システム引き継ぎ」と「PCI DSS準拠」を両立させた“秘策”とは
さらにそこからコンプライアンスレポートが出力できるため、脆弱性検証の証跡としても利用可能です。
まとめ
セキュアコーディングを徹底させるために静的解析を採用するのは有効な手段です。CI環境と組み合わせることで、開発段階からセキュリティチェックを行い手戻りの手間を削減することができます。Jtestではあらかじめ用意されているセキュリティポリシーのコンフィギュレーションを使うことですぐにでも解析を始められます。DTPのダッシュボードによるセキュリティポリシー準拠の把握やレポート出力によってセキュアコーディングの徹底を助けます。
CI環境とJtest, DTPを組み合わせることで、開発の早い段階からセキュアコーディングを徹底し、後工程で発生していた開発の手戻りを削減することができます。
Java対応静的解析・単体テストツール Parasoft Jtest
Jtestは、テスト工数の大幅削減とセキュアで高品質なJavaシステムの開発を強力にサポートするJava対応テストツールです。2,000個以上のコーディング規約をもとにソースコードを静的に解析し、プログラムの問題点や処理フローに潜む検出困難なエラーを検出します。さらに、JUnitを用いた単体テストについて、作成、実行、テストカバレッジ分析、テスト資産の管理といった単体テストに係る作業をサポートし、単体テストの効率化を促進します。