PCI DSSとは ―12の要件一覧とPCI DSS準拠―

Share

PCI DSSとは国際カードブランド5社により定められた、クレジットカード情報を守るためのセキュリティ基準です。2024年4月1日にはPCI DSS v4.0が運用を開始しています。本稿では、PCI DSSとは何か、PCI DSSv4.0の要件について解説。準拠のために何が必要になるのか等について触れながら、AWSのPCI DSS準拠や、PCI DSSが求めるペネトレーションテストなどについてご紹介します。

PCI DSSとは

PCI DSSとは「Payment Card Industry Data Security Standard」の略称で、クレジットカード業界や関連事業者がクレジットカード情報を安全に取り扱うことを目的に定められた、12の要件から構成される国際基準です。American Express、Discover、JCB、MasterCard、VISAの5つのカードブランドが共同で2004年に策定しました。

PCI DSS1は、上記カードブランド5社が設立した組織であるPCI SSC(PCI Security Standards Council)によって管理されています。2024年4月1日からはPCI DSS v4.0が運用開始しています*2

PCI DSS準拠が求められる企業

PCI DSSは、クレジットカード情報の保存・処理・伝送などを行うすべての事業者(クレジットカード加盟店・銀行・クレジットカード決済サービス企業等)が準拠する必要があります。

年間のクレジットカード決済件数に応じて1~4の4段階でレベル分けがなされ、それぞれのレベルで検証が行われます。例えば最もレベルが高いレベル1の事業者に対しては、PCI SSCの認定セキュリティ評価機関(QSA:Qualified Security Assessor)による、毎年1回の訪問監査が必須となります。

準拠が必要な場合、あなたの組織がどのレベルに属するのかをまず把握しておきましょう。

PCI DSSに準拠しなくてよい「非保持化」と、その落とし穴

一方で、クレジットカード決済をまったく取り扱わない企業や、取り扱っていてもクレジットカード情報の保存・処理・伝送を一切しない、いわゆる「クレジットカード情報の非保持化」を行っている企業はPCI DSSの対象外となり、準拠の必要はありません。

ただし、対象外かどうかは厳密に確認する必要があります。例えば、「自分の組織ではクレジットカード情報の保存等は一切行っていない」と思っていたとしても、決済代行サービスの管理画面上でPIN(Personal Identification Number:個人識別番号)などのカード会員情報を見ることができるなら、それは保存や処理にあたります。「作業者の目にはそうした情報は一切ふれない」という場合でも、カード決済端末からの情報が一度でも組織内のシステムを通過するなら、それは伝送にあたります。

上記のような状態で、「非保持化しているつもり」になっていないかどうかに注意しましょう。PCI DSSに詳しいセキュリティ企業のアドバイスを受けることをおすすめします。

AWS環境下でのPCI DSS準拠

代表的なクラウドサービスのひとつであるAWS(Amazon Web Services)は、最も規模の大きい「レベル1」のサービスプロバイダとして、PCI DSSに準拠しています。こういったサービスプロバイダを上手に活用すれば、あなたの組織でPCI DSS準拠に対応すべき範囲を減らすこともできます。ただし、慎重な運用が必要となることに変わりはありません。まずはAWSの責任共有モデルの理解からはじめましょう。

PCI DSSv4.0の要件一覧

以下に示すように、PCI DSSでは、6つの項目にわたって計12の要件が定められています。


安全なネットワークとシステムの構築と維持

1. ネットワークのセキュリティ制御を導入し、維持します。
2. すべてのシステムコンポーネントに安全な設定を適用します。

アカウントデータの保護

3. 保存されたアカウントデータを保護します。
4. オープンな公共ネットワークでの通信時に、強力な暗号化技術でカード会員データを保護します。

脆弱性管理プログラムの維持

5. すべてのシステムとネットワークを悪意のあるソフトウェアから保護します。
6. 安全なシステムおよびソフトウェアを開発し、維持します。

強固なアクセス制御の実施

7. システムコンポーネントおよびカード会員データへのアクセスを、業務上の必要性に応じて制限します。
8. ユーザーを識別し、システムコンポーネントへのアクセスを認証します。
9. カード会員データへの物理的なアクセスを制限します。

ネットワークの定期的な監視およびテスト

10. システムコンポーネントおよびカード会員データへのすべてのアクセスを記録し、監視します。
11. システムおよびネットワークのセキュリティを定期的にテストします。

情報セキュリティポリシーの維持

12. 組織の方針とプログラムによって情報セキュリティをサポートします。


PCI DSSv3.2.1から要件のタイトルも要件9以外変更になりました。要件の理解を高めるために詳細要件との用語の定義、文章の修正が行われました。

PCI DSSで求められる要件は明確で具体的です。そのため、一般的なセキュリティ管理のルールを策定する際の参考にされることがしばしばあるのですが、PCI DSSの要件に準拠したからといって、組織全体のセキュリティが万全になるとは言い切れない点に注意が必要です。例えば、PCI DSSでは、営業機密などへのアクセス制御不備があったとしても準拠に影響しない場合がありますし、PCI DSSへの準拠によってGDPR等の法制度に対応できるわけでもありません。PCI DSSを参考にする際は、それがあくまでクレジットカード情報の保護に特化した基準であることを念頭においたうえで活用するようにしましょう。

PCI DSSの評価方法 -PCI DSS準拠認定のために実施すること-

PCI DSS準拠にあたっては、PCI SSCが認定したQSA(Qualified Security Assessor:認定セキュリティ評価機関)による訪問監査、PCI DSSの基準に関するアンケートに回答する「自己問診(SAQ)」、PCI SSCが認定したASV(Approved Scanning Vendors:認定スキャニングベンダ)等によって行われるネットワークスキャンなどが、前述の4つのレベルに応じて実施されます。

PCI SSC準拠と継続のための2つのネットワークスキャン

PCI DSSにおけるネットワークスキャンとは、クレジットカード情報を扱うシステムや機器に対して、少なくとも3か月に1回、および対象システムに大幅な変更があった場合に、少なくとも四半期に1回、および対象システムに大幅な変更があった場合に、脆弱性スキャンを実施するものです。もし重大な脆弱性が発見された場合、準拠の認定や継続のためには、脆弱性の修正や代替案実施後の再スキャンで準拠基準に達しているという評価を得ることが必要になります。

ネットワークスキャンには、クレジットカード情報を扱うシステム等に対して外部から行うスキャンと、内部から行うスキャンの2つがあり、外部からのスキャンは必ず認定スキャニングベンダ(ASV)によって実施されなければなりません。

PCI SSC準拠と継続のためのペネトレーションテスト

また、クレジットカードの加盟店等は、少なくとも1年に1回(決済サービスプロバイダ等は1年に2回)、および対象システムに大幅な変更があった場合に、ペネトレーションテストを実施しなければなりません。

ペネトレーションテストを実施する際には、それがPCI DSSの要求を満たすテストであるかどうかを必ず確認しましょう。一般的基準で充分に高度とされるペネトレーションテストであっても、手法や範囲などがPCI DSSの要件を満たしていなければ、「システムの安全性は高まったがPCI DSSの準拠や継続ができなくなった」という事態が起こり得ます。

ペネトレーションテストには、外部からのネットワークスキャンのようなベンダ認定の仕組みがないため、選定での判断には注意が必要です。PCI DSSのペネトレーション要件に精通した企業の助力を求めるとよいでしょう。

BBSecでは

なお、株式会社ブロードバンドセキュリティは、PCI SSC認定QSA(PCI DSS準拠の訪問審査を行う審査機関)です。また、PCIDSS準拠のためのネットワークスキャンやペネトレーションテストの実績を多数持っています。準拠基準についての疑問や対応困難な状況があるといったような懸念・不安などは曖昧なままにせず、QSAにご相談いただくことをおすすめいたします。

弊社では「今さら聞けない! PCI DSSで求められる脆弱性診断 -4月1日運用開始!PCI DSSv4.0での脆弱性診断実施におけるポイントとは-」と題したウェビナーで、PCI DSS v4.0で求められる脆弱性スキャンやペネトレーションテストについて、v3.2.1からの変更点を中心にお話しています。ご関心がおありでしたら、ぜひご参考にしていただければと思います。

  • 2024年5月29日(水)13:00~14:00
    今さら聞けない!PCI DSSで求められる脆弱性診断-4月1日運用開始!PCI DSSv4.0での脆弱性診断実施におけるポイントとは-
  • 最新情報はこちら

    まとめ

    • PCI DSSとは、国際カードブランド5社により定められた、安全にクレジットカード情報を取り扱うためのセキュリティ基準です
    • クレジットカード情報の保存・処理・伝送を行うすべての事業者(クレジットカード加盟店・銀行・クレジットカード決済サービス企業等)が、PCI DSSに準拠する必要があります
    • PCI DSSへの準拠では、自己問診や、ASV(認定スキャニングベンダ)によるネットワークスキャン、QSA(認定セキュリティ機関)による訪問監査などが実施されます
    • ペネトレーションテストを実施する際は、テストの手法や範囲などがPCI DSSの要件を満たしていることを確認する必要があります

    Security Report TOPに戻る
    TOP-更新情報に戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像

    セッション管理の不備/アクセス制御の不備の脆弱性
    -Webアプリケーションの脆弱性入門 3-

    Share

    セッション管理の不備やアクセス制御の不備が存在すると、情報漏えいや不正アクセスのリスクが高まります。本記事では、セッション管理とアクセス制御についての基本的な知識から、脆弱性の概要、脆弱性を悪用した攻撃の手口、そして攻撃を防ぐための対策方法についてご紹介します。

    前回までの内容

    SQLインジェクションは、Webアプリケーションの脆弱性の一つです。攻撃者は不正なSQL文を挿入してデータベースを操作することにより、データベースの内容を改ざんし、顧客の情報を不正に取得します。SQLインジェクション攻撃はSQL文の組み立て方法に問題があり、攻撃者が挿入した不正なSQL文を誤った命令文として認識してしまうことで発生します。攻撃を受けてしまった場合、顧客情報や決済履歴などの機密情報が漏洩する恐れがあり、企業の信用やブランドイメージに大きなダメージを与えます。対策方法ととして、プレースホルダを使用したSQL文の構成、特殊文字のエスケープ処理、SQLエラー情報の非表示化、アカウントの適切な権限付与などがあります。これらの対策は、データベースのセキュリティを維持し、攻撃を防ぐために重要です。また、SQLインジェクションの脆弱性を検出する方法として、入力フィールドに本来許可されていない文字列を設定し、Webアプリケーションの反応を観察する方法があります。このようなテストを通じて、企業のセキュリティ担当者がSQLインジェクションの脆弱性に対する問題を理解し、社内で情報を共有し、適切な対策とることで、攻撃を未然に防ぐことが可能になります。また、Webサイトの機能追加や新しい攻撃手法の発見等によって生まれた新たな脆弱性には、定期的にセキュリティ診断を実施することで適切な脆弱性対策をすることができます。

    前回記事「SQLインジェクションの脆弱性 -Webアプリケーションの脆弱性入門 2-」より

    セッションとは

    セッションとは、クライアントがサーバに接続してから切断(あるいはログインしてからログアウト)するまでの一連の流れのことです。この一連の流れを管理することをセッション管理と呼びます。セッション管理はユーザの識別や状態の維持のために必要とされます。例えば、オンラインショッピングサイトで商品をカートに追加した際、その情報はセッションとして保存されます。

    セッション管理の不備とは

    セッション管理の不備/アクセス制御の不備の脆弱性(2人とデータの紙アイコンマーク)イメージ

    Webアプリケーションの中には、セッションID(ユーザを識別するための情報)を発行し、セッション管理を行うものがあります。このときセッションIDを固定化できたり、日付・誕生日・ユーザ名で作られたりしているなど、有効なセッションIDが推測可能であるといったセッション管理の不備があると、セッションハイジャックと呼ばれる攻撃が成立する危険性があります。これにより、攻撃者が本来のユーザになりすまして権利を行使することで、プライベートな情報の閲覧や、設定の変更などが行われる可能性があります。

    セッション管理の不備の脆弱性を悪用した攻撃

    セッションハイジャック

    セッションハイジャックは、攻撃者が他のユーザのセッションIDを盗み取り、そのIDを使用してユーザのアカウントに不正アクセスする行為を指します。有効なセッションIDを推測あるいは奪取する手段が存在している場合に、セッションハイジャックが成立するリスクが高まります。

    セッションハイジャックが成立するリスクを高める要因となる脆弱性および攻撃方法には、以下のようなものがあります。

    セッションIDの固定化(セッションフィクセーション)

    攻撃者が事前にセッションIDを設定し、そのIDをユーザに強制的に使用させることができる脆弱性を悪用してユーザのセッションを乗っ取る攻撃方法です。この攻撃は、ユーザがログインする前にセッションIDが設定され、その後も変更されない場合に発生します。

    セッションIDの推測

    セッションIDが日付や誕生日、ユーザ名で構成されていたり、連番で発行されていたりするなど、簡単に予測できるものであった場合、攻撃者はそのIDを推測してユーザのアカウントにアクセスできてしまいます。また、セッションハイジャックの原因は多岐にわたり、他の脆弱性を悪用されることで有効なセッションIDが奪取される場合もあります。

    Webアプリケーション/ネットワークの脆弱性の悪用

    攻撃者によりWebサイトの脆弱性を突かれ、不正にユーザとWebサイトの間に介入されたり、ネットワークを盗聴されたりするなどして、ユーザのセッションIDを奪取される可能性があります。代表的な攻撃手法のひとつには、以前の記事で解説した「クロスサイトスクリプティング」も挙げられます。また、通信のやり取りではセッションIDが暗号化されておらず、平文のままデータのやり取りをしている場合にも、攻撃者に狙われやすくなります。

    セッション管理の不備の脆弱性を悪用した攻撃を防ぐための対策方法

    セッションIDの取り扱いや、セッションの有効期限の設定などに問題がある場合、攻撃者がセッションを乗っ取ることが容易になり、機密情報を盗み見られたり、不正な操作をされたりするなどのリスクが発生します。では攻撃を防ぐためにどのような対策方法をとればよいのでしょうか。以下に例をご紹介いたします。

    セッションIDを推測困難なものにする

    攻撃者によってセッションIDを推測されてしまった場合、そのユーザになりすまして、本来アクセスできないサイトに第三者がアクセスできてしまう恐れがあるため、セッションIDは推測困難な値にする必要があります。

    ログイン、ログアウトといった処理を行う際は、新しいセッションIDを発行する

    ログイン時にセッションIDの正当性を検証することで、攻撃者があらかじめ用意したセッションIDを強制的に使用させられることを防ぎます。

    セッションハイジャック対策

    有効なセッションIDを奪われないようにすることだけでなく、セッションIDを奪われたとしてもセッションハイジャックを成立させないような環境を作るのが対策のポイントです。

    • セッションIDとワンタイムトークン付与によるユーザの確認:セッションIDとは別にログイン成功後にワンタイムトークンを発行し、画面遷移ごとにサーバ側で管理しているトークンと照合します。発行するワンタイムトークンは、推測困難かつランダムな文字列で構成する必要があります。
    • IPアドレスによるユーザの確認:ユーザを特定する情報として、IPアドレスを使用することが可能です。さらに、セッションIDをCookieで管理している場合には、Cookieにsecure属性およびHttpOnly属性を設定することで、攻撃者によるCookie情報奪取のリスクを緩和できます。

    対策例としては、上記のとおりですが、セキュリティ専門家への相談も重要です。現在の技術環境では、常に新しい脅威が出現するため、対策は継続的に見直し、強化する必要があります。

    アクセス制御の不備とは

    アクセス制御の不備とは、Webアプリケーションにおいて、本来付与されている権限の範囲内でのみ動作するような制御が実装されていない問題を指します。例えば、一般ユーザとしてログインした際に管理者としての権利を行使できてしまう権限昇格、パラメータを操作することで、本来制限された領域外のファイルやディレクトリにアクセスすることが可能となるパストラバーサルなどです。不正アクセスや意図しない情報の公開をはじめとした、様々なリスクが生じます。

    アクセス制御の不備の脆弱性

    権限昇格

    ログインすることなくユーザとしてシステムに対する操作を実行できたり、一般ユーザが本来与えられていない上位権限(管理者権限等)を一時的に取得することで、システムに対する不正な操作や機能の実行が可能になったりする問題。

    パストラバーサル

    外部からのパラメータでWebサーバ内のファイル名を直接指定するWebアプリケーションにおいて、URLパラメータを操作して不正なパス名を渡すことで、本来アクセスを許可されていないディレクトリやファイルに対して、攻撃者がアクセス可能になる問題。

    不適切な情報の出力

    本来権限が与えられているユーザのみアクセスできるものに対して、不正なユーザが本来許可されていない特定のURLにアクセスしたり、操作を行ったりすることで、外部に公開されていない情報(機密情報・ユーザ情報)が閲覧可能になる問題。

    アクセス制御の不備を悪用した攻撃を防ぐための対策方法

    主な対策方法は以下の通りです。

    権限昇格

    権限管理を行う際は、外部から値を操作可能なパラメータは使用せずサーバ側で行う実装とし、権限による機能制限を実装する際には、各機能へのアクセス時に実行者のアカウントと権限のチェックを実施します。

    パストラバーサル

    アプリケーションが取得するファイルは既定のディレクトリに保存し、アクセスするファイルパスを操作できないようにし、サーバ上でアプリケーションを実行するアカウントのアクセス権限を見直します。また、あらかじめ定義したホワイトリストに基づいた入力値検証を実施し、ファイル名に不正な文字列が含まれる場合は、適切なエラー処理を行うことが推奨されます。

    不適切な情報の出力

    外部への公開が不要なディレクトリやファイルは、外部からアクセスできないように適切なアクセス制御を行います。ログイン認証によるアクセス制御を実施する場合には、適切なセッション管理を伴った認証機構を実装してください。また、アプリケーションの動作に必要がないディレクトリやファイルは削除することを推奨します。

    まとめ

    セッション管理の不備/アクセス制御の不備の脆弱性(3人と上部にランプがついたアイコンマーク)イメージ

    セッション管理の不備は、セッション管理に不備があることで、ユーザになりすまし、プライベートな情報の閲覧や、設定の変更などができてしまう問題です。対策方法としては、セッションIDを容易に推測できないものにし、ワンタイムトークンの発行やIPアドレスによるユーザの確認を行うなど、適切なセッション管理を実装することで、ユーザの情報やデータを安全に保護することができます。

    アクセス制御の不備は、Webアプリケーションにおいて、本来付与されている権限の範囲内でのみ動作するような制御が実装されていない問題を指します。ユーザに対して、あらかじめ与えられた権限から外れた操作を実行できないようにポリシーを適用することにより、情報の漏えいやシステムの不正操作を防ぎます。

    セキュリティ対策を適切に実施することが、Webアプリケーションの安全性を高めるための鍵となります。ユーザの情報やデータを保護するために、セキュリティ専門家への相談、常に最新のセキュリティ情報の収集をすることなどが重要です。

    Security Report TOPに戻る
    TOP-更新情報に戻る


    資料ダウンロードボタン
    年二回発行されるセキュリティトレンドの詳細レポート。BBSecで行われた診断の統計データも掲載。
    お問い合わせボタン
    サービスに関する疑問や質問はこちらからお気軽にお問合せください。

    Security Serviceへのリンクバナー画像
    BBsecコーポレートサイトへのリンクバナー画像
    セキュリティ緊急対応のバナー画像
    セキュリティトピックス動画申し込みページリンクへのバナー画像