脆弱性| Webアプリケーションで安全な許可を実装する方法

Anonim
脆弱性| Webアプリケーションで安全な許可を実装する方法 2740_1

この記事では、有名なOAuthの脆弱性に対処します。読者はまた、Webアプリケーションで安全で安全な許可を実装する方法を学びます。

OAuthは信頼できるプロトコルですが、その程度のセキュリティの程度は、許可を実行するときのWeb開発者の意識に大きく依存します。これにより、このトピックは情報セキュリティ専門家にとって非常に重要になります。彼らは彼らのユーザーの高い評価を提供する必要があります。販売貧困OAuthの危険性を減らすのに役立つ効果的な実践者と知り合いになる時が来ました。

前書き

OAuth 2.0プロトコルは現在、さまざまなアプリケーションで広く使用されています。それを使用すると、便利なユーザーインターフェースが利用可能になり、認証と認証が容易になり、ユーザー名とパスワードを入力するための従来のメソッドと比較します。適切かつ思いやりのある実装では、ユーザーが特定のリソースにアクセスするためのサードパーティのアプリケーションで自分のアカウンティングデータを共有する必要がないため、OAuthプロトコルは従来の承認より安全になります。ユーザーは、Webサイトに登録する必要があるたびに、新しいアカウントを作成するのではなく、Googleアカウント、Facebook、またはLinkedInを使用してログインすることをお勧めします。したがって、OAuthプロトコルは私たちの生活を大幅に簡素化します。

一般に、人気のあるOAuthサービスプロバイダーは非常に信頼性があります。 GoogleまたはFacebookアカウントでログインすると、特定のセキュリティ感覚を刺激し、正しいです。プロトコルは専門家によって慎重にテストされます。利用可能なすべての脆弱性は常に開発者チームによって迅速に修正されます。しかし、完全な安全感が誤っている可能性があることは注目に値します。

OAuthサービスプロバイダーはアプリケーション開発者をプログラムの安全を妨げる理由がたくさんありました。実際、最初に保護されたOAuthサービスは、インストールのプロセスで誤って実装されていますが、侵入者のための簡単なターゲットになることがあります。このような夢中になると、ユーザの個人データの盗難がもたらされる。

次に、OAuthプロトコルを実装するサードパーティ製アプリケーションで発生した最も一般的な脆弱性を検討する必要があります。プロトコル自体が安全で信頼性があることを忘れないでください。誤った実装後にのみ、ハッカー攻撃に対して脆弱になります。

参照ヘッダーを使用したOAUTH TOCKEYの盗難

アプリケーションがOAuthサーバでユーザに代わって許可を要求すると、その人はその後のチェックのためにコードを入力してサーバに送り返すためにコードを受信する。作業中にユーザーが別のページにリダイレクトされる場合、コードはHTTPリクエストの「リファラー」ヘッダーに表示されます。したがって、コードは外部のWebサイトに入ります。これにより、OAuthサーバーに登録されているユーザーデータが脅当されます。

注:参照元ヘッダーはHTTPクエリヘッダーであり、リクエストが送信されるURLホストを送信します。

この脆弱性の結果をソフト化するには、開発者はそのWebアプリケーションにHTMLインジェクションが含まれていないことを確認する必要があります。注射が検出された場合、攻撃者は画像タグをそのWebサーバーに簡単に設定し、ユーザーをリダイレクトする方法を見つけることができます。したがって、彼はHTTPリクエストの「リファラー」ヘッダーからコードを盗む機会を得ます。

Redirect_URIパラメータを使用したOAUTH TOCKEYの盗難

アプリケーションは、OAuthサーバーに要求を送信することによって許可プロセスを開始します。

https://www.example.com/signin/authorize?[...]&redirect_uri=httpps://demo.example.com/-loginSccessful。

クエリには、ユーザーが自分の同意を与えた後に、OAuth Serverによって使用される "Redirect_URI"パラメータが含まれています。このパラメータの値が制御されていないかチェックされていない場合、攻撃者は簡単に変更してその要求をそのWebサイトにリダイレクトし、そこでトークンを処理し、限られたリソースへのアクセスをゲインするための特別なプログラムを使用できます。

https://www.example.com/signin/authorize?[...]&redrect_uri=httpps://localhost.evil.com。

同様のURLがブロックされることがあります。攻撃者は、このように受信したデータを開いたURLにリダイレクトすることができます。

https://www.example.com/oauth20_authorize.srf?[... [&redirect_uri = httpps://accounts.google.com/backtooutsubtarget?next=httpset://evil.com。

またはこれに:

https://www.example.com/aauth2/authorize?[...]%irect_uri = https%3a%2f%2fapps.facebook.com%2fattacker%2f。

OAuthを実装するときは、白いリストにドメイン全体を含めることはできません。リダイレクトを開くための要求をリダイレクトしないように、「Redirect_URI」に追加する必要があります。

クロスライン要求の偽造

攻撃者が被害者に自分のリンクをクリックすることに成功したとき、したがって彼が生成することを求められなかった要求を生成することに成功すると、インターサイト要求の偽造が発生する可能性があります。クロスライン要求の偽造は通常、ユーザーセッションに関連付けられているCSRFトークンで柔らかくなります。申請は、その要求を送った人の人物を確認するのに役立ちます。 OAuthプロトコルの "State"パラメータはCSRFトークンとして機能します。

それは、CSRF攻撃がOAuthでどのように実行されるか、および「状態」パラメータを使用して脆弱性の影響を軽減することができるのです。

HackerはWebアプリケーションを開き、OAuthを使用してサービスプロバイダにアクセスするための許可プロセスを起動します。アプリケーションは、提供する必要があるアクセスをサービスプロバイダに要求します。 Hackerは、通常、アクセスを許可するためにユーザー名とパスワードを入力する必要があるサービスプロバイダのWebサイトにリダイレクトされます。代わりに、ハッカーはこの要求をキャッチし、そのURLを保存します。 HackerはどういうわけかこのURLを開くことがあります。被害者がそのアカウントを使用してサービスプロバイダのシステムに入った場合、その資格情報は認証コードを発行するために使用されます。許可コードはアクセストークンへのアクセスを交換します。これでアプリケーション内のハッカーアカウントは許可されています。それは被害者のアカウントにアクセスすることができます。

そのため、 "State"パラメータを使用してこの状況を防ぐ方法

アプリケーションは、送信元アカウントに基づいてどういうわけかを登録する必要があります(たとえば、ユーザーセッションハッシュキーを使用します)。それがそれほど重要ではありません。主なことは、その値が独自で独自のユーザーに関する個人情報を使用して生成されることです。 「状態」パラメータに割り当てられています。

この値は、リダイレクト時にサービスプロバイダに送信されます。今ハッカーは被害者を招待してURLを開く。

認証コードは発行され、セッション内のクライアントに "State"パラメータとともに送信されます。

クライアントは、セッション情報に基づいてパラメータ値を生成し、それを許可要求からサービスプロバイダに返送された「状態」値と比較します。この値は、現在のセッションに関する情報に基づいてのみ生成されているため、クエリ内の「状態」パラメータと一致しません。その結果、得られた値はシステムによって受け入れられない。

OAuthを実装するときに検出されたその他の脆弱性は、「Redirect_URI」パラメータを使用してXSS(クロスサイトスクリプト)を実行する機能(モバイルアプリケーションを分解するときに取得することがあります)および許可コードルールの違反(いつでも取得することがあります)許可コードは複数回アクセストークンを発行するために複数回使用できます)。これらの脆弱性は上記のものよりも一般的ではありませんが、それほど危険ではありません。開発者は、そのWebアプリケーションの信頼できる操作を確実にするために必要なすべての方法を知っているはずです。

翻訳された記事の著者:Simon Saliba。

重要!学術目的のためだけに情報。法律に準拠しており、この情報を違法目的で適用しないでください。

CISOCLUB.RUのより興味深い材料。私たちを購読する:Facebook | VK | Twitter | Instagramの|テレグラム|禅|メッセンジャー| ICQ NEW | YouTube |パルス。

続きを読む