iOSおよびAndroid用のVKontakteの新しいバージョンは、外部の記事をすばやくダウンロードできるモバイル標準であるAccelerated Mobile Pages(AMP)をサポートしています。 これで、AMPを構成したすべてのサイトのページがアプリケーション内で直接開きます。( 公式ニュース )
Googleが開発を開始したAMPテクノロジーは、すべてのデバイスとプラットフォームでWebサイトの作業を加速するように設計されています。 これは、HTMLおよびCSSを最適化するための最新のアプローチであり、事前接続APIと非同期JavaScript実行を使用して、デバイスへの読み込みを高速化できます。
AMPは、リンクが表示されているプラットフォーム(ソーシャルネットワークまたはメッセンジャー)を使用して、サポートされているページのコンテンツをプリロードしようとしています。 更新を単にスクロールすると、AMPページがバックグラウンドで読み込まれ、リンクをクリックすると、ほぼ瞬時にモバイルデバイスでページが開きます。
AMPには詳細な説明、一連のマニュアル、および手順が記載されたページがありますが、iOSアプリケーションVKontakteの開発者は、実際には子供のデザイナー(AMPの基本実装)からhow弾砲を構築し、実弾(iOSアプリケーションバグ)を請求することができました。
iOSアプリケーションにAMPを実装するときにVKontakteで何が起こったのか正確にはわかりません。 Androidバージョンのアプリケーションにはこの問題はありません。
主にサービス拒否攻撃に対処する企業として、お客様のトラフィックを綿密に監視しています。 そのうちのいくつか(この出版物では特定の名前を挙げません。この事件に関係するすべての人に情報を提供します)は、トラフィックの異常を知らせてくれたため、Qrator Labsはログを詳しく調べました。
私たちが見つけたものは私たちに印象づけました。 80言語で利用可能な最大のソーシャルネットワークの1つで、4億以上のアカウントを持ち、実際にいくつかのリソース、主に通信社やVkontakteフィードに積極的にニュースをエクスポートする企業にDDoSを実装しました。 AMP for iOSの単一の実装での些細なエラーが原因です。
幸いなことに、VKontakteは新しいまたはほとんど使用されないユーザーエージェントを使用してページをプリロードします。
VK/74 CFNetwork/<cfn version> Darwin/<ios version>
匿名化された統計の一部は次のようになります。
複数のサーバーを持つ大規模な通信社 :
- 合計応答時間の最大20%が、このアプリケーションの2%(すべての一意の)IPからのこれらの要求に費やされました。
- アプリケーションからのすべてのリクエストの最大16%
- すべてのIPの8〜15%からのすべての要求の50〜66%、合計応答時間の65〜77%
- すべてのリクエストの最大25%
- すべてのリクエストの最大18%
小売業者 :
- 15-31%(すべての一意の)IPを持つこのユーザーエージェントを含むすべての要求の91-98%、これらの要求を処理する時間の最大33%
メディア会社 :
- 1-5%IPからのすべてのリクエストの13-46%
報道機関 :
- すべてのリクエストの最大12%
これらのサーバーで何が起こりますか?
AMPをサポートするページがユーザーのiOSアプリケーションのフィードVKontakteに表示される場合、アプリケーションはこのユーザーエージェントで最大5000件のリクエストを行うことがあります。これは、それ自体がDDoS攻撃の典型的な例です。 世界には多くのユーザーがおり、AMPやその他の「インスタントビュー」などのテクノロジーが急速に普及し、さまざまなリソース(eBay)によって実装されているため、そのようなリンクの数は増え続けます。
このバグの危険性は、主に、発行するのに大量のサーバーリソースを必要としない、軽量でキャッシュされたページについて話しているため、平均として推定されています。 しかし、各リクエストに対して生成されたページについては、同様の状況が苦痛になる可能性があります。
さらに重要なことは、ソーシャルネットワークでのAMP互換リンクの公開を停止する以外に、通常の方法はありません。 VKontakte(公開前に連絡した代表者)はこのバグを修正しますが、攻撃者を禁止したり、より興味深いアプリケーションのこの機会を見つけるために通り過ぎる人はいません。 VKontakte iOSアプリケーションアップデートをリリースする前に、AMPサポートで送信するページがキャッシュされていることを確認してください。
VKontakteは、ユーザーに最新の技術を提供する素晴らしい仕事をしています。 VKontakteメディアエコシステムのディレクターであるSergey Parankoには、この問題は修正されるだろうとのリクエストに応えてくれたことに特に感謝します。