OWASP Top 10 API セキュリティリスク 2023年版をわかりやすく
今回はメチャメチャ「わかりやすく」がテーマです。
私も「OWASP Top 10 API セキュリティリスク」の記事を読むと、なかなか理解できない!!
チンプンカンプンでした。
よって、貴方に理解していただくために「学生」になっていただきます。
すると少しは理解していただけるのかなと考えています。
目次
OWASP Top 10 APIとは
OWASP Top 10 API セキュリティリスクは、OWASP(Open Web Application Security Project)が定期的に発行するセキュリティに関するリスクのリストの1つです。
このリストは、APIを使用するアプリケーションやサービスにおける主要なセキュリティリスクを特定し、開発者やセキュリティ専門家がそれらのリスクに対処するための情報を提供します。
開発者やセキュリティ専門家はこれらのリスクに対処するための最善の方法を理解し、セキュリティの向上に取り組むことができます。
APIセキュリティリスクとは
API(Application Programming Interface)は、異なるソフトウェアやサービス間で情報をやり取りするための窓口のようなものです。
たとえば、天気予報サービスが提供するAPIを使えば、他のアプリケーションで天気情報を取得することができます。
しかし、APIを不正に利用することで、悪意のある攻撃者がシステムやデータに侵入したり、機密情報を盗んだりするリスクがあります。
たとえば、不適切な認証があるAPIでは、認証されていないユーザーがシステムにアクセスできる可能性があります。また、アクセス制御が不適切なAPIでは、攻撃者が他のユーザーのデータにアクセスしたり、操作したりすることができます。さらに、悪意のあるデータの注入があるAPIでは、攻撃者がシステムに不正なデータを送り込んで、それを利用してシステムを破壊したり、機密情報を盗んだりすることができます。
要するに、APIセキュリティリスクとは、APIを通じて発生する様々な脅威や攻撃手法のことであり、これらのリスクを理解し、適切に対処することが重要です。
2023年版のOWASP Top 10 API セキュリティリスク
全部で10個のリスクがあります。
Broken Object Level Authorization:破損したオブジェクトレベルの認可
あなたの学校には、生徒が成績を確認できるオンラインシステムがあります。このシステムでは、各生徒が自分の成績のみを見ることができるようになっています。しかし、このシステムが「破損したオブジェクトレベルの認可」の問題を抱えている場合、他の生徒の成績を見ることができるかもしれません。
あなたの友人が自分の成績を見ている間に、あなたが特定のURLを手動で変更して他の生徒の成績ページにアクセスすることができます。この場合、システムがあなたのアクセスを正当化する必要がありますが、そのチェックが不十分であれば、他の生徒の成績を見ることができてしまいます。
簡単に言えば、Broken Object Level Authorizationは、システムがユーザーに正しいアクセス権を付与していない状況です。その結果、ユーザーが想定外の情報にアクセスできてしまう可能性があります。
システムがユーザーのアクセス権を適切に管理し、認可されていないユーザーが他のユーザーのデータにアクセスできないようにする必要があります。
Broken Authentication:認証の欠陥
認証とは、システムがユーザーが本人であることを確認するプロセスです。
例えば、ウェブサイトにログインする際には、ユーザー名とパスワードを入力して認証されます。しかし、Broken Authenticationが起きると、この認証プロセスが十分に機能していない状態になります。
1.Weak Passwords
ユーザーが弱いパスワード(簡単に推測できるものや一般的なもの)を使用している場合、攻撃者は簡単にアカウントに侵入できます。
2.Brute Force Attacks
攻撃者が何千回ものログイン試行を行い、ユーザー名とパスワードの組み合わせを試すことでアカウントに侵入する手法です。
3.Session Hijacking
ユーザーがログインしているセッションを盗み、そのセッションを利用して不正な操作を行うことができる攻撃です。
4.Weak Session Management
セッションIDが不十分にランダムであったり、セッションが十分に保護されていない場合、攻撃者がセッションを偽造してアクセスすることができます。
これらの状況が発生すると、攻撃者が他人のアカウントにアクセスしたり、不正な操作を行ったりする可能性があります。そのため、強力なパスワードの使用、ログイン試行の制限、セッションの保護など、認証プロセスの強化が重要です。
Broken Object Property Level Authorization:破損したオブジェクトプロパティレベルの認可
学校に自分の持ち物を保管するロッカーがあるとします。それぞれのロッカーには鍵がついていて、そのロッカーを割り当てられた生徒だけが開けることができるはずです。さて、学校のロッカー・システムにセキュリティ上の欠陥があり、鍵が正しく機能していないとしましょう。
自分がそのロッカーを与えられていないにもかかわらず、他人のロッカーを開けることができることがわかると、「オブジェクト・プロパティ・レベルの権限違反」が発生します。これは、誰がどのロッカーにアクセスできるかをシステムが適切にチェックしておらず、不正アクセスを許していることを意味します。
「破損したオブジェクトプロパティレベルの認可」とは、システムが特定のオブジェクトやプロパティ(この例ではロッカーのようなもの)へのアクセスを効果的に制御していないことを意味します。これは、機密情報やリソースへの不正アクセスにつながる可能性があり、セキュリティリスクとなります。オブジェクトやプロパティごとに適切な認可チェックを行いましょう。
Unrestricted Resource Consumption:制限のないリソース消費
学校の給食で提供される食材がある一定量しかないとします。生徒たちはこの食材を利用してランチを作ることができます。しかし、制限のないリソース消費の問題が発生すると、ある生徒が自分の分だけではなく、他の生徒の分も取ってしまい、無駄にしてしまう可能性があります。
同様に、コンピュータシステムにおいても、ある種のリソース(例えば、メモリやディスク容量)には限りがあります。しかし、Unrestricted Resource Consumptionの問題があると、あるユーザーが過剰なリクエストや大量のデータを送信してしまい、システムのリソースを無駄に消費してしまう可能性があります。
このような状況では、正規の利用者がシステムを適切に利用できなくなり、システム全体のパフォーマンスが低下したり、サービスが停止したりする可能性があります。そのため、システムはリソースの適切な管理と制限を行うことが重要です。
Broken Function Level Authorization:破損した関数レベルの認可
学校で行われるクラブ活動に参加するためには、生徒は先生やアドバイザーの許可を得る必要があります。例えば、演劇部に参加したい場合、演劇部のアドバイザーの許可が必要です。
しかし、Broken Function Level Authorizationが発生すると、生徒がアクセスできるクラブや活動の機能が正しく制限されていない可能性があります。つまり、生徒が本来アクセスできないクラブや活動に参加できてしまうことがあります。例えば、普通の生徒が体育部の活動に参加できるようになってしまう、というような状況です。
簡単に言えば、Broken Function Level Authorizationとは、システムがユーザーに対してどの機能にアクセス権を与えるかを正しく管理していない状態です。これにより、ユーザーが本来アクセスできない機能にアクセスできてしまう可能性があります。
この問題を解決するためには、システムがユーザーのアクセス権を適切に管理し、ユーザーが必要とする機能のみにアクセスできるようにする必要があります。
関数ごとに適切な認可を実装し、他のユーザーのリソースにアクセスされないようにしましょう。
Mass Assignment:一括代入
あなたが友達に手紙を書いているとします。手紙には宛先、本文、そして署名が含まれています。普通、あなたは手紙を書く際に自分の署名を書きますが、もし手紙の内容によっては、友達に代わってあなたの署名を書くこともできます。
Mass Assignmentとは、このような手紙の署名の部分に相当します。つまり、特定のアクションや操作において、複数の情報が一度に代入されることを指します。例えば、ウェブアプリケーションでユーザーがプロフィール情報を更新するとき、名前やメールアドレスだけでなく、管理者権限やアクセス権限などの情報も一緒に更新されることがあります。
しかし、Mass Assignmentの問題があると、ユーザーが意図しない情報を更新できる可能性があります。例えば、本来ならばユーザーが更新できるのは自分の名前やメールアドレスだけであるべきですが、誤って管理者権限や他のユーザーの情報まで更新してしまうことがあります。
これによって、セキュリティ上の問題が引き起こされる可能性があります。例えば、悪意のあるユーザーが自分の情報以外にも他のユーザーの情報を変更することで、不正アクセスや権限の悪用が行われる可能性があります。
この問題を解決するためには、システムがユーザーが更新できる情報を厳密に制御し、意図しない情報が一括で更新されることを防ぐ仕組みを実装する必要があります。
Security Misconfiguration:セキュリティの誤設定
セキュリティの誤設定とは、学校のロッカーが正しく施錠されていない状態のことです。普段、ロッカーには鍵がかかっていて、他の生徒が中身を見たり触ったりすることができません。しかし、ある日、ロッカーの鍵が正しく閉まっていないことがわかりました。つまり、ロッカー内のものが誰でもアクセスできる状態です。
これと同じように、セキュリティの誤設定が起こると、ウェブサイトやアプリケーションが適切に保護されていないことを意味します。例えば、ウェブサイトが重要なデータベースにアクセスできる特別な権限を持っている場合、セキュリティの誤設定があると、誰でもそのデータベースにアクセスできてしまう可能性があります。
これは重大な問題であり、悪意のある人が個人情報を盗んだり、ウェブサイトを乗っ取ったりする可能性があります。そのため、システム管理者や開発者は、セキュリティの誤設定を防ぐために常にシステムを適切に設定し、更新する必要があります。
簡単に言えば、セキュリティの誤設定とは、ロッカーの鍵が正しくかからない状態のことであり、ウェブサイトやアプリケーションが誰でもアクセスできる状態になってしまうリスクがあるということです。
正しい設定を行い、セキュリティの誤構成を防止しましょう。
Injection:インジェクション
あなたが友達と手紙を書いているとします。手紙の中には、友達との楽しい思い出や近況などを書いています。しかし、手紙を送る前に、悪意のある友人が手紙の中に知らない人の名前を書き込んでしまいました。結果として、手紙が間違った人に届く可能性があります。
同様に、インジェクション攻撃では、ウェブサイトやアプリケーションにデータを入力するときに、悪意のあるコードやコマンドが挿入されます。これにより、システムが予期しない方法で動作したり、機密情報が漏洩したりする危険性があります。
例えば、ウェブサイトの検索フォームに「’OR ’1’=’1」と入力すると、SQLインジェクションと呼ばれる攻撃が発生する可能性があります。これにより、攻撃者はデータベースからすべての情報を取得することができます。
インジェクション攻撃から身を守るためには、データの入力や処理の際に適切な検証やエスケープ処理を行うことが重要です。また、信頼できないソースからのデータの使用を避けることも大切です。
適切な入力検証とエスケープ処理を実装して、攻撃を防止しましょう。
Improper Assets Management:不適切な資産管理
学校で大切な道具や機材がたくさんあります。それらの道具や機材を適切に管理しないと、使うときに見つからなかったり、壊れたりしてしまう可能性があります。
同じように、アプリケーションやウェブサイトでも、大切な情報やリソースがたくさんあります。例えば、ユーザーの個人情報や機密情報などが含まれます。しかし、これらの情報が適切に管理されていないと、悪意のある人がそれらの情報にアクセスしてしまう可能性があります。
例えば、ウェブサイトでユーザーが入力した個人情報が、安全な方法で保管されていない場合、悪意のある人がその情報を盗むことができます。また、ウェブサイトのデータがバックアップされていない場合、システムに障害が発生したときにデータが失われる可能性があります。
そのため、大切な情報やリソースを保護するためには、適切なセキュリティ対策が必要です。これには、情報の暗号化、アクセス制御、定期的なバックアップの実施などが含まれます。これらの対策を実施することで、アプリケーションやウェブサイトのセキュリティを向上させることができます。
Insufficient Logging & Monitoring:不十分なログ記録と監視
学校の図書館で借りた本を返す際、通常は図書館員があなたの名前を記録します。この記録には、誰がいつ本を返したのかが記録されます。しかし、もし図書館が返却記録をつけなかったり、記録を十分に監視しなかったりしたらどうなるでしょうか?
Insufficient Logging & Monitoring(不十分なログ記録と監視)では、ウェブサイトやアプリケーションが行われたアクションやイベントを適切に記録し、監視することができていない状態を指します。つまり、何が起こったのかを記録する仕組みが不足していたり、それを監視する人がいなかったりする状態です。
例えば、ウェブサイトにログインしたユーザーが個人情報を変更した場合、そのアクションがログに記録され、管理者がそれを監視して異常があるかどうかを確認する必要があります。しかし、不十分なログ記録と監視があると、このようなアクションが見逃される可能性が高くなります。
結果として、攻撃者が不正なアクセスを行っても、それが検出されずにシステムに侵入したり、悪用したりすることができます。このため、適切なログ記録と監視を行うことは、セキュリティ上非常に重要です。
OWASP Top 10 API セキュリティリスク 2023年版をなるべくわかりやすくのまとめ
いかかでしたか?
少しは、理解していただけたと思います。
OWASP Top 10 API Security Risksは、セキュリティの専門家や開発者がAPIセキュリティを向上させるための重要なツールの1つであり、セキュリティ意識を高め、安全なアプリケーション開発を促進する役割を果たしています。