PowerBuilderコードにおけるセキュリティ脆弱性の検出

サイバー攻撃の増加に伴い、アプリケーション・セキュリティは重要な課題となっています。
アプリケーションのセキュリティを確保するためには、定期的にコードをスキャンして、データを盗んだり、アプリケーションの機能を乗っ取ったりするために悪用される可能性のある脆弱性を検出することが不可欠です。

Visual Expertは、PowerBuilderのコードをスキャンし、セキュリティの脆弱性を検出する最初のツールです。

VEがセキュリティスキャンのために従うコード検査のルールは?

VEには300以上のコード検査ルールがあらかじめ設定されています。いくつか挙げると.....

  • 常にセキュアなモードでAES暗号化アルゴリズムを使用
    AESにはいくつかのモード(ECB、CBC、CFB...)があり、その中にはより高速または安全なものがあります。
    PowerBuilderコードでAESを使用している場合、呼び出しには最もセキュアなモードを使用する必要があります。

    Visual Expertはアプリケーションをスキャンして安全性の低い呼び出しを見つけ、コード内でハイライト表示します。
  • 運用環境ではコンソール ログを使用しない
    コンソール ロギングは、コードが何をしているかを目立たないように調べ、問題が発生した場合に警告する方法です。これは、機密データを公開したり、アプリケーションの内部構造に関する情報を明らかにする可能性があるため、運用環境では無効にする必要があります。Visual Expertは、Powerbuilderのコードでそのような問題を追跡し、運用前に無効にするのに役立ちます。
  • CoSetProxyBlanketやCoInitializeSecurityは使用しない
    CoSetProxyBlanket、CoInitializeSecurity、および CoInitializeSecurityAlias というサブルーチンの呼び出しは、セキュリティ違反を引き起こす可能性があります。Visual ExpertはPowerBuilderコード内のこのような呼び出しを見つけ出し、削除するのに役立ちます。
  • 暗号化キーは十分な長さが必要
    ブルートフォース攻撃に対して暗号キーを堅牢にするには、十分なキーサイズが必要です。PowerBuilderのコードに堅牢でないキーが使用されていると、Visual Expertが教えてくれます。
  • データベースのクエリは、インジェクション攻撃に対して脆弱であってはならない。
    コード インジェクションとは、アプリケーションによって解釈/実行される悪意のあるコードを注入する攻撃です。特に、SQLコード インジェクションは、データベースで不正な操作を行うことを可能にします(機密データへのアクセス、サーバーの乗っ取り、またはシャットダウンなど)。本来、PowerBuilderアプリケーションはデータベースを多用し、ミッション クリティカルなものです。 大量の重要なデータを扱うため、ハッカーの格好の標的となります。

    例えば、Visual Expert は、SQL の構築に使用され、適切に検証またはエスケープされていない文字列の連結をサーチします。これらは、SQLインジェクションの大きな抜け道になる可能性があります。このようなクエリを特定し、リファクタリングすることで、データベースの保護が強化されます。

    コードインジェクション攻撃からPowerBuilderアプリを保護する方法 の詳細はこちら。
  • DES(Data Encryption Standard:データ暗号化規格)や3DESは使用しない
    DES(Data Encryption Standard:データ暗号化規格)は、デジタル データを暗号化するための共通キー アルゴリズムです。これはキー長が56ビットと短いため安全では無く、今後は使用しないでください。Visual Expertは、PowerBuilderコード内のすべてのDES呼び出しを検出しますので、それらを削除できます。
  • 暗号化アルゴリズムは、適切なセキュア モードとパディング スキームで使用
    暗号化アルゴリズムを使用してコードを保護する場合、操作モードとパディング スキームを正しく使用する必要があります。使用する暗号化アルゴリズムに応じて、Visual Expertは適切なパディング値とモード値を決定し、PowerBuilderコードでそれらが正しく使用されているかどうかを検証します。
  • 汎用的な例外を無視してはならない
    例外処理の観点から、CATCH ブロックには常に適切なキャッチ メカニズムが必要です。Visual Expertは空のキャッチ ブロックを識別し、意味のある例外処理でコードを保護します。
  • IPアドレスをハードコードするべきでない
    IPアドレス、暗号化キー、パスコードなどの機密情報をハードコードすると、ハッカーの目に触れる可能性があります。もし、ランタイム ファイルにアクセスされると、逆コンパイルされ、これらの情報が漏洩する可能性があります。GDPR、SOX、HIPPAなどの公的規制で保護されている情報が漏洩すると、重大な法的問題に発展する可能性があります。Visual Expert は、ハードコードされた IP アドレスを検索して、このセキュリティ違反を取り除きます。
  • ユーザーIDとパスワードはハードコードされるべきでない
    ユーザー名やパスワード、IPアドレス、暗号化キーなどの機密情報をハードコードすると、ハッカーの目に触れる可能性があります。実行ファイルにアクセスした人は、そのファイルを逆コンパイルして、機密情報を見つけ出すことができます。GDPR、SOX、HIPPAなどの公的規制で保護されているデータが漏洩すると、深刻な法的影響が生じる可能性があります。

    Visual Expert は、ハードコードされたユーザー ID やパスワードをサーチでき、これによりこれらのセキュリティ違反を取り除くことができます。
  • ユーザー入力でパス インジェクションやパス トランバーサル アタックを許してはならない
    URLパラメータやクッキーなど、ユーザーが入力したデータは疑わしいと考えるべきです。コードがこれらのデータからファイル システムのパスを動的に生成する場合、ハッカーは「../」などの特定の値を注入して、本来意図されたパスを変更することができます。

    これらの攻撃は、しばしば「パス トラバーサル」または「ディレクトリ トラバーサル」と呼ばれます。このような攻撃を受けると、攻撃者は禁止されたディレクトリにアクセスして、機密データの読み取り、変更、削除、またはオペレーティングシステムのコマンドを実行することができます。

    Visual Expert は、このような脆弱性をもたらすコードを特定するので、それを取り除くことができます。防御策としては、許可されたパスや文字のホワイトリストを定義することが考えられます。
  • OSのコマンドはインジェクション攻撃を許してはならない
    ユーザーの入力に基づいてオペレーティング システムのコマンドを実行するコードの場合、各コマンドの名前をチェックしなければなりません。そうしないと、ハッカーが自分のコマンドを注入して不正な操作を行い、システムを危険にさらす可能性があります。

    Visual Expertは、PowerBuilderコード内のこれらの欠陥を検出できるので、修正することができます。例えば、安全なコマンドのホワイトリストを定義したり、シェルのメタキャラクタを取り除くことができます。
  • 正規表現はサービス妨害攻撃を許してはならない
    ユーザーデータから正規表現を生成することは、正規表現サービス拒否(Regular Expression Denial of Service: ReDoS)につながる可能性があるため、非常にお勧めできません。この種の攻撃は、ほとんどの正規表現の実装が極端に遅くなる可能性を利用しています。攻撃者は、プログラムが正規表現を使用し、それを非常に長い時間ブロックしたときに、このような状況を引き起こすことができます(したがって、サービス拒否になります)。

    Visual Expertは、PowerBuilderコード内のこのような呼び出しをピンポイントで特定し、その呼び出しを削除したり、正規表現のメタキャラクタを削除/消滅させて入力を取り除くことができます。
  • 暗号化されたハッシュ関数は、SHA-1やメッセージダイジェスト アルゴリズムを使用するべきでない
    SHA-1およびメッセージ ダイジェスト アルゴリズム:MD2、MD4、MD5、および MD6 アルゴリズムは、 もはや安全とは見なされません。Visual Expertは、PowerBuilderコードでこれらのアルゴリズムが使用されているかどうかをチェックし、対応するコールを見つけて、より安全なものに更新できるようにします。
  • SOAPとINETのオブジェクトは使用するべきでない
    SOAPとINETのPowerBuilderオブジェクトは、TLS 1.2の使用をサポートしていないため、攻撃を受けやすくなっています。

 

Visual Expert 2021, PowerBuilder, Code Security Scanning, Code Security Rules, Vulnerability Assessment