ITmedia NEWS > セキュリティ >
セキュリティ・ホットトピックス

「APIエコノミー」に迫る“検知できない脆弱性攻撃”の脅威「見えないWeb攻撃」──情報漏えい対策の盲点(2/4 ページ)

» 2024年01月11日 10時00分 公開
[中西一博ITmedia]

BOLAの発生原因は“よかれ”と思った実装

 1つ目は、配車やフードデリバリーを提供する米Uberのアプリで起こったBOLAの実例だ。2019年に外部のセキュリティ研究者の報告によって明らかになった。

photo

 この例では、図中の(1)で、利用者の電話番号かメールアドレスを添えて「addDriver」というAPIにリクエストを送ると、その利用者を識別するためのユニークIDが入った(2)のエラーメッセージを返す実装になっていた。つまり、メールアドレスさえ分かれば、任意のユーザーに成りすませる鍵が入手できた。

 次に入手したユニークIDを使って、(3)で別のAPIにリクエストを送ると、なりすました他の利用者やUberのドライバーの個人情報、モバイルアプリ用のアクセストークンを得ることができた。さらにこのトークンを利用することで、他人の名義で配車や配食をリクエストすることが可能だった。

 トークンは、アプリの利用者に何度も認証を強いることなく複数のアプリケーションやAPIを繰り返し利用してもらえる便利な仕組みだ。一方で、不正利用のフリーパスを得ようと、このトークンを入手しようとする試みも多く見られる。

 もうひとつ例を挙げてみよう。ドイツ言語圏で利用されている「scoolio」という学習支援アプリで明らかになったBOLAの脆弱性だ。

photo

 この例では、図中の(1)で、あるAPIにリクエストを送ると、同じ地域に住んでいる500人分のリストを(2)でアプリが受け取る仕様になっていた。500人分のリストには各利用者を識別するユニークIDもついていたので、(3)で別のAPIになりすましリクエストを送ると、そのユーザーの個人情報やGPSで得た現在位置などの情報が得られた。

 ここまで挙げた2つの例をみて、一体なぜそんな実装になっていたのかと呆れた人もいるだろう。一方でアプリの開発経験が豊富な方ほど「これは我が社のアプリでも十分起きうることかも」と、肝を冷やしたのではないだろうか。

 ここで挙げた2つの例をよく考えてみると、恐らくアプリをより便利にするために、“よかれ”と思って行った実装が原因ではなかったかと推測できる。例えばscoolioの例は、近くに住むユーザー間で交流を図り学習効率を高めるために、500人分のユーザーリストをユニークID付きでスマホのアプリに返す実装にした──とも考えられる。

 通常ユニークIDが、アプリ上で利用者に直接表示されることはない。しかし、アプリを模したAPIへのアクセスによってユニークIDを盗み見、別のAPIで使うことで他者の個人情報を取得できる危険性にまで考えが及ばなかった可能性はある。

認証・認可を悪用するAPI特有の攻撃 対策は

 商用サービスは、いまや何百、何千というAPIを有している。さらに昨今のアジャイル開発特有の短いサイクルで、何人もの開発者によって毎日のようにAPIの仕様やそれを利用するプログラムが更新されている。それは、スマホのアプリストアで人気アプリの更新頻度を見れば想像がつくだろう。そのような開発環境下では、潜在的なAPIの脆弱性は日常的に生じている可能性がある。

 APIでは「こんなサービスにしたい」という機能要件や、データベースやID共通化などのシステム構成上の条件などによって、データの持たせ方や、IDの規則性などの実装が事業者やサービスごとに異なっている。

 そういった実装の不備に起因する脆弱性は、WAFのような汎用的な定義ルールにマッチさせる仕組みの従来型Webセキュリティソリューションでは検知や対策ができない。正しいリクエストと不正リクエストを判断する基準が分かっていないためだ。

 誰もが利用しているWebサーバプログラムなら研究者の誰かが脆弱性を見つけて、それを基に作られたWAFルールで検知できる。しかし、各社が独自に開発したプログラムやAPIに潜んでいる脆弱性をわざわざ探し出してはくれない。

 BOLAの対策として、OWASPでは「セキュアなプログラミング」や、「コードレビューや脆弱性テストの徹底」を挙げている。しかし、API認証・認可の仕組みを理解した上で、自社の環境に照らし合わせて問題点を指摘できるほどの、エース級エンジニアの確保はどの企業でも簡単ではない。

 現に、この数年で米Metaや米Amazon、米GitHubといった優秀なエンジニアを抱える企業のサービスでも、APIの脆弱性が発見されている。むしろ先進的なハイテク企業ほど、何千ものAPIを組み合わせてサービスを構築している。その中には十分検査されていないAPIだけでなく「シャドーAPI」「ゾンビAPI」と呼ばれる、管理されていないAPIもあるだろう。

Copyright © ITmedia, Inc. All Rights Reserved.