簡単なユーティリティを使用してプログラムコードの脆弱性を見つける方法

Grauditは多くのプログラミング言語をサポートしており、コードベースのセキュリティテストを開発プロセスに直接統合できます。





出典:Unsplash(Markus Spiske)



テストは、ソフトウェア開発ライフサイクルの重要な部分です。テストには多くの種類があり、それぞれが独自の問題を解決します。今日は、コードでセキュリティの問題を見つけることについて話したいと思います。



明らかに、ソフトウェア開発の現代の現実では、プロセスの安全性を確保することが重要です。かつて、特別な用語DevSecOpsも導入されました。この用語は、アプリケーションの脆弱性を特定して排除することを目的としたいくつかの手順を指します。OWASP標準に従って脆弱性をチェックするための特殊なオープンソースソリューションがあり、ソースコード内の脆弱性のさまざまなタイプと動作を説明しています。





セキュリティの問題を解決するには、静的アプリケーションセキュリティテスト(SAST)、動的アプリケーションセキュリティテスト(DAST)、対話型アプリケーションセキュリティテスト(IAST)、ソフトウェアコンポーネント分析(ソフトウェア構成分析)など、さまざまなアプローチがあります。



静的アプリケーションセキュリティテストは、すでに記述されたコードのバグを検出します。このアプローチでは、アプリケーションを実行する必要がないため、静的分析と呼ばれます。



静的コード分析に焦点を当て、シンプルなオープンソースツールを使用して実際のすべてをデモンストレーションします。



オープンソースの静的コードセキュリティ分析ツールを選択した理由



これにはいくつかの理由があります。まず、他の開発者を支援したい志を同じくする人々のコミュニティによって開発されたツールを使用しているため、無料です。小規模なチームやスタートアップの場合は、オープンソースソフトウェアを使用してコードベースのセキュリティをテストすることで、コストを節約する絶好の機会があります。次に、別のDevSecOpsチームを雇う手間が省け、コストがさらに削減されます。



優れたオープンソースツールは、常に柔軟性の向上を念頭に置いて構築されています。したがって、これらはほぼすべての環境で使用でき、幅広いタスクをカバーします。開発者にとって、プロジェクトでの作業中にすでに構築したシステムとそのようなツールを友達にするのははるかに簡単です。



ただし、選択したツールでは使用できない機能が必要になる場合があります。この場合、コードをフォークして、それに基づいて必要な機能を備えた独自のツールを開発する機会があります。



ほとんどの場合、コミュニティはオープンソースソフトウェアの開発に積極的に影響を与えているため、変更を加える決定は非常に迅速かつ的確に行われます。オープンソースプロジェクトの開発者は、バグやその他の問題の報告について、ユーザーからのフィードバックや提案に依存しています。



Grauditを使用したコードセキュリティの分析



静的コード分析では、さまざまなオープンソースツールを使用できます。すべてのプログラミング言語に対応するユニバーサルツールはありません。それらのいくつかはOWASPガイドラインに従い、可能な限り多くの言語をカバーしようとします。



ここでは、コードベースの脆弱性を見つけることができる単純なコマンドラインユーティリティであるGrauditを使用します。さまざまな言語をサポートしていますが、セットは限られています。 Grauditは、GNUライセンスの下でリリースされたgrepユーティリティユーティリティに基づいて開発されています。



静的コード分析には、同様のツールがあります。セキュリティ用の大まかな監査ツール(RATS)、Securitycompass Webアプリケーション分析ツール(SWAAT)、欠陥検出器などです。しかし、Grauditは非常に柔軟性があり、技術的な要件は最小限です。ただし、Grauditでは解決できない問題が発生する可能性があります。次に、このリストで他のオプションを探すことができます



このツールを特定のプロジェクトに統合したり、選択したユーザーが利用できるようにしたり、すべてのプロジェクトで同時に使用したりできます。これは、Grauditが柔軟な場所でもあります。それでは、最初にリポジトリのクローンを作成しましょう。



$ git clone https://github.com/wireghoul/graudit


それでは、Grauditがコマンド形式で使用するためのシンボリックリンクを作成しましょう。



$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit


エイリアスを.bashrc(または使用している構成ファイル)に追加します。



#------ .bashrc ------
alias graudit="~/bin/graudit"


リブート:



$ source ~/.bashrc # OR
$ exex $SHELL


インストールが成功したかどうかを確認しましょう。



$ graudit -h




似たようなものがあれば、すべて問題ありません。







既存のプロジェクトの1つをテストします。ツールを実行する前に、プロジェクトが記述されている言語に対応するデータベースを渡す必要があります。データベースは〜/ gradit / signaturesフォルダーにあります。



$ graudit -d ~/gradit/signatures/js.db


そこで、プロジェクトから2つのjsファイルをテストし、Grauditがコードの脆弱性に関する情報をコンソールに出力し











ました。同じ方法でプロジェクトをテストすることができます。さまざまなプログラミング言語のデータベースのリストは、ここにあります



Grauditの長所と短所



Grauditは多くのプログラミング言語をサポートしています。そのため、幅広いユーザーに適しています。それは、無料または有料の相手と競争することができます。また、プロジェクトの改善がまだ行われていることは非常に重要であり、コミュニティは開発者だけでなく、ツールを理解しようとしている他のユーザーも支援します。



これは便利なツールですが、これまでのところ、疑わしいコードに関連して、問題が何であるかを正確に示すことができるとは限りません。開発者はGrauditを改良し続けています。



ただし、いずれの場合も、そのようなツールを使用して、コード内の潜在的なセキュリティ問題に注意を払うことは有用です。



開始...



この記事では、脆弱性を見つけるための多くの方法の1つである静的アプリケーションセキュリティテストについてのみ検討しました。静的コード分析は簡単ですが、これはほんの始まりにすぎません。コードベースのセキュリティについて詳しく知るには、他のタイプのテストをソフトウェア開発ライフサイクルに統合する必要があります。






広告



信頼性の高いVPSと料金プランの正しい選択により、不快な問題による開発の邪魔を減らすことができます。すべてがスムーズに、非常に長い稼働時間で機能します。






All Articles