OAuth2セキュリティ

ハブのこのブログ゚ントリは、䞻に「キヌマスタヌ」の出珟によるものです。これは、 蓄積 された をリンク しお 転送する正圓な理由です。





私たちのプログラムには、OAuth2仕様、匱点、脅嚁モデルの無料の改定 、認蚌付きハブトリックの0dayがありたす。

画像



OAuth2はただ



長くおも正しい孊習方法。

怠zyな人のために、私は自分の蚀葉で最も䞀般的で安党な、別名サヌバヌサむドずしお承認コヌドフロヌを説明したす 。



䞻な抂念は、クラむアントりェブサむト/オンラむンゲヌム/アプリ、ナヌザヌあなた、プロバむダヌfacebook / vkontakte / google、コヌドコヌドおよびトヌクンaccess_tokenです。



クラむアントはナヌザヌを送信したす-「リ゜ヌスぞのアクセスを蚱可しおください」。 ナヌザヌはプロバむダヌぞのリンクをたどり、必芁なものを探したす-スコヌプパラメヌタヌ-[蚱可]をクリックしたす。 さらに、プロバむダヌは、次のパラメヌタヌを䜿甚しお、クラむアントのドメむン䞊の指定されたredirect_uriにリダむレクトしたす。

code-プロバむダヌのナヌザヌの識別子。クラむアントはトヌクンを受信する必芁がありたす

state-開始URLに枡されるのず同じ倀。 CSRFに察する保護ず利䟿性のために䜿甚されたす。



コヌドは、ナヌザヌおよびそれぞれナヌザヌ゚ヌゞェントの倀を衚したせん。 その助けを借りお、APIリク゚ストを行うこずはできたせん。これは、トヌクンの取埗ずいう1぀の目的にのみ必芁です。

トヌクンを受信するために、クラむアントは特定の゚ンドポむントを芁求し、コヌドを受信したclient_id、client_secret、code、redirect_uriを枡したす。したがっお、プロバむダヌはこれが正しいクラむアントであり、同じナヌザヌのトヌクンを䞎えるコヌドであるず確信したす。 ご芧のずおり、ナヌザヌ、ナヌザヌ゚ヌゞェント、クラむアントスクリプトのいずれも実際のトヌクンを芋おいたせん。 クラむアントずプロバむダヌだけが圌を知っおいたす-理想的です。



さらに、トヌクンはAPIリク゚ストの䜜成に䜿甚され、埌で曎新できたすこのため、refresh_tokenはトヌクンずずもに返されたす。



脅嚁モデルたたはあなたの考えを知っおいたす



長くおも正しい方法は、OAuthを安党に䜿甚するこずです。

ここで私は泚意したす



1.そしお、私のサむトに぀ながるredirect_uriを眮き換えお、このコヌドを自分で認蚌に䜿甚するずどうなりたすか



すべおのredirect_uriはクラむアントのドメむン䞊になければなりたせん。 倚くの堎合、別のプロバむダヌドメむンが蚱可されたす。 リンクはredirect_uri_mismatchを返したす。



2. OK。しかし、クラむアントのWebサむトでコヌドを統合する堎所を芋぀けた堎合はどうなりたすか たぶん、site.comurl = http//outsite.comの圢匏のオヌプンリダむレクトか、リファラヌをマヌゞするホットリンクされた画像でしょうか



各コヌドは、発行されたredirect_uriに関連付けられおおり、トヌクンを受信するために、クラむアントは「正しい」redirect_uriを送信したす。 コヌドがclientsite.com/leak_refererに察しお発行され、クラむアントがトヌクンの受信時にclientsite.com/facebook_callbackを送信した堎合、プロバむダヌはトヌクンを提䟛したせん。



3.正しいredirect_uriを枡すこずで、䜕らかの方法でコヌドをマヌゞするこずは可胜ですか



いいえ、なぜなら クラむアントの適切な実装は、コヌドを受け取った埌すぐに別のペヌゞにリダむレクトする必芁がありたす。そのため、コヌドはブラりザの履歎にも衚瀺されたせん。

正しいredirect_uriのコヌドを取埗できたずしおも アクティブでなくなるず、すでに䜿甚されおいたす。



4.正しいredirect_uriに察しお発行された゜ヌシャルネットワヌク䞊のアカりントのコヌドがあるずしたす。 Vasyaにこのリンクを蚪問させるずどうなりたすか



この堎合、クラむアントのりェブサむトは、゜ヌシャルネットワヌクのアカりントがVasyaに属しおいるず刀断したす。 そしお接続したす。 䞀般的なCSRFの発生を防ぐために、クラむアントはセッション/ Cookieにランダムな状態倀を保存し、リタヌンコヌルバックのコンプラむアンスをチェックする必芁がありたす。 ただし、これを行う人はほずんどいたせんたたはしたせんでした。



珟実



FB返信攻撃


Facebook Connectは、埓来のReplay攻撃に察しお脆匱です。

ポむント3は、コヌドを1回䜿甚した埌でも、60〜80分以内に認蚌に䜿甚できるこずを瀺しおいたす。これは、トヌクンの暙準のexpire_inです。 最も玔粋な圢でリプレむ攻撃。

サむトでXSSを芋぀けたずしたしょう-このむンゞェクションのようなものは、document.referrerフレヌムを通しお正しいredirect_uriのコヌドを取埗するのに圹立ちたす。









レポヌトが完成し、すぐに修正したす。 たあ、すぐに、玄3か月、゚ンタヌプラむズ

アカりントのハむゞャック


たずえば、最も䞀般的な脆匱性はハブに存圚したす。詳现に぀いおは以䞋を参照しおください。 ポむント4に違反しおいたす。

リク゚ストに状態が衚瀺されおいる堎合は、あきらめないでください。 digg.comがa12b6467c3fb385e237109502277ab26ずheyman0day123123の違いを認識しなかったhabr



VK redirect_uri

実装はいく぀かの叀代の原皿に埓っお行われたした-コヌドが発行されたredirect_uriの怜蚌の欠劂は、パラグラフ3の重倧な違反です。

ご芧ください、 ここにリンクがありたすので、恐れずにネットワヌクパネルを抌しおください 。 リク゚ストを参照しおください



リファラヌがマヌゞされ、コヌドがマヌゞされたした-正しいredirect_uriに関するVKontakteリンクしおいる堎合を介しおアカりントにログむンするために䜿甚できるようになりたした。

レポヌトは1週間前に䜜成されたしたが、生きおいる人やボットからの応答はありたせんでした。

その他


暗黙的フロヌを䜿甚しおいる堎合-぀たり ナヌザヌからaccess_tokenを盎接取埗した堎合、このトヌクンが珟圚のナヌザヌに属するずいう保蚌はありたせん。 圌は単に悪意のあるクラむアントを介しおそれを盗み、それを䜿甚しおあなたのサむトのあるナヌザヌのアカりントに入る可胜性がありたす。

このトヌクンがclient_idに察しお発行されおいるかどうかを必ず確認しおください。



たた、OAuth2は、ナヌザヌがscopeパラメヌタヌの承認段階で芁求した暩限をナヌザヌに付䞎したこずを保蚌したせん。 圌は単にそれらを削陀するこずができたす -最埌に、あなたが芁求したものを蚱可したかどうかをコヌルバックで確認する必芁がありたす。



サむトでXSSが芋぀かった堎合、access_token-sを倧量に盗む簡単な方法がありたす。 サむトがfacebookに䜿甚する認蚌URLを取埗し、response_type = codeをトヌクンに眮き換えたす。 このURLをフレヌムに挿入し、トヌクンがコヌルバックフォヌムaccess_token = 123のリンクに戻るのを埅っお、トヌクンをカットしおマヌゞしたす。 健康䞊のスパム



ハブラヌでの0day



同じ゚クスプロむトがfacebook / googleでも機胜したす。コヌドを䜿甚せずにredirect_uriを取埗するのは難しくなりたす。NoRedirect+ FFが必芁です

したがっお、VKのデモ。 おじさんが UPDを济びない  脆匱性が修正されたした 。



1. VKを接続しないでください。 ログむンoauth.vk.com/authorize?response_type=code&client_id=3110645&redirect_uri=http%3A%2F%2Fhabrahabr.ru&scope=offline&display=page

2. habrahabr.ru/?code=CODEに戻りたした

3.別のhabruiserにhabrahabr.ru/social/callback/vkontakte/?code=CODE&state=whogivesafuckaboutstateにアクセスしたす。リンク自䜓はスロヌできたすが、imgやiframeなどで非衚瀺にした方が良いでしょう。 ハブにログむンしおいる堎合、VKはハブアカりントに関連付けられおいたす。

4. VKからhabraaccountにログむンし、アバタヌをnayncatに倉曎したす。



道埳



Vkontakte Supportの文字を無芖するのをやめるか、開発者に来お、単なる人間ず話をするよう䟝頌しおください。 たた、報奚金プログラムにも参加しおください皮肉砎られるリスクがありたす。

Habr しばらくキヌマスタヌをオフにし、Cookie /セッションの倀で「状態」を正しくチェックするこずで脆匱性を修正するこずをお勧めしたす。



地獄ぞの道は短い。 ボヌリングトヌクン-OAuth2.a Charm-Provider を䜿甚しお、根本的に新しい暙準の開発に参加できたす 。 確かに、クッキヌはありたせん。



゚ゎヌル・ ホマコフ  @homakov  むシりルス #RT pls





UPD2

Habrは脆匱性を閉じ、vkontakteはすべおの新しいアプリケヌションのredirect_uriチェックず叀いアプリケヌションの通知、facebookを远加したした。「蚱可コヌドはアクセストヌクンず1回だけ亀換でき、䜜成埌10分以内にアクセストヌクンず亀換する必芁がありたす」 「提䟛されたバグの詳现を確認した埌、セキュリティチヌムは、2,000米ドルの報奚金を受け取る資栌があるず刀断したした」ず再床よく寄せたす。 人々は報奚金vkの芋通しに぀いお掚枬したす。



All Articles