コードのセキュリティ監査の実行:基本

公開: 2021-10-01

セキュリティは重要であり、この時代においてこれまで以上に重要になっています。 サイバー攻撃の台頭に伴い、多くの人がコードのセキュリティ監査を真剣に受け止めています。 このブログ投稿では、セキュリティ監査に伴うものと、独自のコードでセキュリティ監査を実行する方法について説明します。


一般的なテクニック

1)静的解析

静的分析は、コードを実行せずにコードを調べるプロセスです。 これには、展開される前に潜在的な脆弱性を特定できるなど、多くの利点があります。

BrakemanやPeepcodeなどのツールを使用して静的セキュリティ監査を行うことができます。 これらのツールは、SQLインジェクション攻撃、クロスサイトスクリプティング(XSS)の欠陥、セッション固定の欠陥など、Ruby onRailsアプリケーションの一般的な問題を探します。

これらのタイプのツールを使用して手動監査を行う場合は、アプリケーションのソースコードファイルを調べて、問題を示している可能性のある特定の文字列またはコマンドを探すこともできます。

注:grep / findstrコマンドを使用して手動で実行すると誤検知が多すぎるため、静的分析を単独で使用しないでください。 それは通常、あなたがすでに知っていることだけを伝え、あなたが知らないことは伝えません。

静的コード分析の利点
  • 潜在的なセキュリティ上の欠陥を早期に特定し、将来の時間と費用を節約します。
  • さらに手動でコードレビューを行うための良い出発点を提供します。
  • コードベースの概要を説明します。
  • ツールで自動化できます。
静的コード分析のデメリット
  • 自動化ツールを使用しないと、実行に時間がかかります。
  • ランタイム環境で使用すると不正確になります。
  • 自動化されたツールは、反復的なタスクを自動化するのに最適ですが、すべてのプログラミング言語をサポートしているわけではありません。
制動手ホームページ

2)動的分析

動的分析は、コードを実行し、その機能を追跡するプロセスです。 これにより、アプリケーションがその環境とどのように相互作用するかをより正確に把握でき、システムの潜在的な欠陥を明らかにすることができます。

BrakemanやWebInspect(Webアプリケーション用)などのツールを使用して、このフェーズでの一般的な脆弱性を特定したり、SQLインジェクションやクロスサイトスクリプティング(XSS)などのいくつかのタイプの攻撃をカバーする事前定義されたルールセットを使用したりできます。

サーバーから送信されたヘッダー、セッションに使用されたCookieなどを監視することもできます。これらのエンジンはすべてを検出するわけではないことに注意してください。 ただし、常に改善されているため、Githubの更新/リリースノートに遅れないようにしてください。

動的コード分析の利点
  • ランタイム環境で動作します。
  • 静的コード分析でフォールスネガティブを発見できます。
  • ライブアプリケーションに対する分析を調べます。

動的コード分析のデメリット

  • コードの脆弱性を見つけるのは大変な作業です。 時間と忍耐が必要ですが、十分な努力で行うことができます!
  • 動的コード分析の自動化されたツールは、誤検知や誤検知が発生しやすい傾向があります。
  • 彼らは誤った安心感を与えます。
MicroFocusホームページ

セキュリティ監査を実施することの重要性

セキュリティ監査とは何かについての理解が深まったところで、なぜそれが重要なのかを見てみましょう。 いくつかの理由があります:

  • アプリケーションへの攻撃やハッキングによる損傷の発生を防ぎます。 このブログ投稿で前述したツールを使用することで、これらのタイプの問題を防ぐことができます。 完璧ではありませんが、役に立ちます!
  • GDPR(一般データ保護規則)などのポリシー/規制の違反に対して罰金を科されることは避けてください。 このような罰金は、正しく処理されない場合、廃業する可能性があります。
  • 暗号化技術などを使用してデータが不正アクセスから保護されていることを確認したら、顧客を満足させます。顧客は、データが安全であることを知って安心したいと考えています。
  • 「セキュリティファースト」アプローチで市場で競争力を維持することは、正しく行われれば常に有益です。 セキュリティ監査は、監査に合格するためだけに実行する必要はありません。それは、アプリケーションとビジネス/顧客にとって正しいことだからです。
  • また、他の開発者が調査結果を公開して、監査中に発見した問題(ある場合)を把握できるようにすることで、コードのセキュリティ監査を実行するのを支援することもできます。 これらのツールはオープンソースであり、無料でダウンロードできるため、これにより、すべてのアプリケーションでソフトウェア全体の品質が向上します。 他の人も気づき始める前に、一人が何か間違ったことを見つけるだけです!
コンピューターをハッキングする人

独自のセキュリティ監査の実行

セキュリティ監査の実行が重要である理由について説明したので、独自のセキュリティ監査を実行する方法を見てみましょう。

あなたは最初にぶら下がっている果物を監査することから始めるべきです。 これらには以下が含まれます:

  • 管理者またはスーパーユーザーとしてログアウトしてログインし、資格情報がどこにもキャッシュされないようにします(ログファイル、ブラウザーの履歴など)。
  • / admin / usersなど、変更しないで公開するとアクセスできるため、アプリケーションに付属しているデフォルトの管理者アカウントを実行します。
  • NIST(National Institute of Standards&Technology)によって定められた業界標準のルールに基づいてパスワード強度を確認します(Railsを使用している場合は、これがDeviseに組み込まれています)。

関連:高度なセキュアシェル:SSHでできる6つのこと。

コンピューターでコーディングしている人

よくある質問

Webアプリケーションで最も一般的な問題のいくつかは何ですか?

SQLインジェクション、クロスサイトスクリプティング(XSS)、セッション固定、安全でない直接オブジェクト参照など。

セキュリティ監査を実施する際に確認できるチェックリストはありますか?

はいあります! OWASP(Open Web Application Security Project)にアクセスし、セキュリティ監査を実行するためのチェックリストをダウンロードしてください。

Webアプリケーションのセキュリティについて学ぶための良いリソースは何ですか?

OWASP、OWASPトップテンプロジェクト、SANS(SysAdmin、Audit、Network)セキュリティ閲覧室など。

自分のセキュリティ監査を実行するのにどのくらい時間がかかりますか?

アプリケーションの複雑さにもよりますが、複雑さにもよりますが、通常は2、3日以内にすべての成果を上げることができます。

Webアプリケーションが複雑なため、このセキュリティ監査作業を外部委託するか、代わりにコンサルタントを雇う必要がある点はありますか?

時間がかかりすぎる場合、またはこれまでにこれらのタイプの監査を実行したことがない場合は、専門家を雇うことを検討するのが理にかなっているかもしれません。 これは、アプリケーションが複雑すぎて自分で実行できない場合にも適しています。


結論

結論として、セキュリティ監査を実行することは、コードの品質を保証し、不正アクセスから保護するために重要です。 これらのツールは完璧ではないことに注意することも重要です。そのため、常に手動の侵入テストを実行する必要があります。

Joomlaでサイトを運営している場合は、ハッカーに対する堅実なセキュリティのための20のセキュリティヒントのリストに興味があるかもしれません。