はじめに
API3:過剰なデータ露出
攻撃者・攻撃経路 | セキュリティの弱点 | 影響 |
---|---|---|
この脆弱性の根底には、APIは利用者に必要なデータのみを返すべきという考えがあります。余計なデータを提供すると、悪意ある攻撃者がMitM攻撃等によりAPIの通信を傍受し、データを悪用する恐れがあります。記事後半でさらに例を挙げて説明します。 | この脆弱性は上位10件中3位にランクインするほど見逃しやすいです。自動化ツールは、アプリの動作を詳細に指示しなければ不要なデータを判断できないため、十分な効果が期待できません。多くのAPIは全データを返し、フロントエンドにフィルタリングを任せる実装となっているためです。 | 機密データが露出すると、露出する情報により事業に重大な影響を及ぼす恐れがあります。そもそもの性質上、その影響は大きくなる傾向があります。 |
APIはフロントエンドのクライアントに必要なデータのみを返すべきですが、時としてチームがミスをしたり楽な方法を選んだ結果、全てのデータを返すAPIが実装されることがあります。このようにAPIが過剰なデータを返す場合、過剰なデータ露出と呼ばれます。
例えば、クレジットカード情報を取得するアプリがあるとします。利用者にはフロントエンド側でフィルタされるためCCVは表示されませんが、API自体は過剰なデータを返してしまいます。
例:
GET /api/v1/cards?id=0
[
{
"CVV": "677",
"creditCard": "1234567901234",
"id": 0,
"user": "API",
"validUntil": "1992"
}
]
ご覧の通り、クレジットカード情報を取得する呼び出しが行われ、利用者にはCCVが見えなくても、APIが返すことで過剰なデータ露出となっています。
さらに別の例を挙げます。あるモバイルアプリがGETリクエストを /api/articles/{articleId}/comments/{commentId} に送信し、著者を含むコメントのメタデータを取得します。しかし、通信が傍受されると著者のPII情報も見えてしまう可能性があります。
GET /api/v1/comments?id=0
[
{
"comment": "1234567901234",
"id": 0,
"user": "testUser",
"user adress": "testlane, testing - 340043 testing in testland",
"user email": "test@bla.com"
}
]
この問題は一見シンプルなため見落としやすく、Wallarmの自動検出でも拾いにくい性質があります。データの選別を適切に行うために、APIセキュリティソリューションの活用が推奨されます。統計データに基づいたOWASP Top 10 2021のランキングも取りまとめています。APIから送られる各データがどの程度機微なもので、何がフロントエンドに必要かを判断することが重要です。可能な限りフロントエンドでのフィルタリングは避けるべきです。
最新情報を購読