Black Duckのお客様は、小規模な企業から大企業まで、金融サービス、自動車、公共部門、医療/ヘルスケアなどのあらゆる業界にわたっています。当社のお客様の共通点は、信頼性の高いソフトウェアの構築を目指しているということです。Black Duckは、ソフトウェアの構築とデリバリーの方法を変革し、イノベーションを加速しながらビジネス・リスクに対処する統合ソリューションを提供しています。
このtech talesのストーリーでは、ある金融サービス業界のお客様がBlack Duckのアプリケーション・セキュリティ・テスト・ツールとサービスを利用してペイメント・カード業界(PCI)のコンプライアンスにどのように対応しているかを理解するために、Black Duckのコンサルティング・チームのメンバーに話を聞きました。
この金融サービス業界のお客様は、コンプライアンス要件に従って、PCIデータを処理するアプリケーションやネットワークで毎年テストを実施しています。
お客様は、アプリケーション・セキュリティ・テスト・プログラムを拡張し、ペネトレーションテストを委託している現在のベンダーを経験豊富なベンダーに変更したいと考えていました。Black Duckは、いくつかの概念実証テストを行い、現在のベンダーより優れたテスト品質と結果を示しました。
Black Duckは、最初の評価を実施した後、いくつかの潜在的な問題を発見しました。
TikiWikiインスタンスに埋め込まれたPHPベースのファイルマネージャー用ライブラリELFinderで、認証されていない任意のファイルアップロード攻撃が発見されたことにより、認証されていないRCEの問題が発覚しました。
SQLインジェクションの問題は、SQLエラーを検出する機能を備えたプロキシツールを使用して発見されました。
ログインユーザーの列挙の問題は、ブルートフォース攻撃による自動推測の試行によって有効なユーザーのリストをコンパイルする方法で悪用されました。有効なユーザー名のリストがコンパイルされると、パスワードの推測が自動化され、アプリケーションの有効な資格情報の膨大なリストが生成されました。
認証されていないRCEの問題が発見されたのは、お客様のWikiページです。古いOSを実行していたため、最初のエクスプロイトの後、特権の昇格やパスワードのダンプなどが容易になりました。Active Directory(AD)にも接続されていたため、AD内の他のシステムへの横方向のネットワーク接続が容易でした。
SQLインジェクションは、攻撃者がアプリケーションで実行されるSQLクエリの構造を変更するのを可能にします。使用されているSQLサーバーの種類によっては、攻撃者が既存のクエリを変更したり、全く新しいクエリを既存のクエリに追加することができる可能性があります。変更されたクエリは、データベース接続に対して付与されているアクセス権限と同じ権限でデータベースの任意の部分にアクセスできるため、以下の問題をもたらす可能性があります。
推測を自動化することにより、攻撃者はアプリケーションの有効なユーザー名の膨大なリストを入手することができます。有効なユーザー名のリストを入手した攻撃者は、資格情報を盗み、他のユーザーになりすますためにパスワードを推測することができます。パスワードを推測する試みは、アプリケーションに実装されているログインのアンチオートメーション機能(もしあれば)に応じて、手動または自動で行うことができます。有効なユーザー名は、フィッシング行為やアカウントをロックアウトさせる大規模なDoS攻撃でも使用される可能性があります。この例では、収集されたアカウントのパスワードの多くがログインパスワードと同じであることが判明したため、この問題は通常以上の危険をはらんでいます。
サービスのバージョンが攻撃に対して脆弱であることが確認されたらすぐに、アップグレードまたはパッチがリリースされるまで、脆弱性を軽減するための予防措置を講じる必要があります。認証されていないRCEに対処するには、ソフトウェアサービスを、現在既知の脆弱性がないバージョンにアップグレードするか、パッチを適用することをお勧めします。
SQLインジェクションの問題に対しては、構築されたすべてのSQLクエリを動的連結によって変更し、クエリをパラメータ化したプリペアドステートメントなど、インジェクション対策を講じたクエリ方式を使用することをお勧めします。最近のほとんどのプログラミング言語は、ユーザーが指定したデータを動的SQLクエリの値として安全に挿入できる「パラメータ化クエリ」と呼ばれる機能を備えています。ユーザーが指定したデータを静的SQLクエリ文字列のフラグメントに連結して動的SQLクエリを作成するのではなく、データ値はパラメータマーカーまたは変数によってクエリ内で特定されます。動的データは、指定されたデータがクエリの意味を変更できないように、SQLで提供されるメカニズムを通じて渡されます。
ユーザー名の列挙の問題の場合、アプリケーションは、指定されたユーザー名が有効なアカウントに関連付けられているかどうかに関係なく、同じ応答を返す必要があります。無効な資格情報のすべての組み合わせに対する応答の例として、「入力されたユーザー名とパスワードが一致しません」が挙げられます。
お客様が金融サービス業界に属し、テスト対象のアプリケーションに顧客データが含まれているため、このアプリケーションはPCIコンプライアンスの対象になります。PCIコンプライアンスの要件では第三者による厳格なテストが義務付けられています。Black Duckはアプリケーションをテストすることで、コンプライアンスを確保し、監査人によって定められた厳しい要件を満たすことができました。