---
title: ISACA名古屋支部_2023年11月SR分科会_APIセキュリティ
tags:  #isaca名古屋支部 #sr分科会  
author: [Tatsuya-hasegawa](https://convert.docswell.com/user/hackeT)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GE5Y4DR9E4.jpg?width=480
description: ISACA名古屋支部 主催の「APIセキュリティについて 知っておきたいこと」では、APIセキュリティに関する情報を提供している。リサーチ報告で最新の動向に焦点を当て、 OWASP API Security Top10 2023について紹介している。APIの使用により、脆弱性や弱点が明らかになっており、これらの不備から攻撃者を守る方法を解説している。また、アジェンダには、WebAPIの最新動向、APIサーバーの脆弱性探し、ディスカッションなどが組み込まれており、知識を深めたい人にはおすすめできるセッションとなっている。  おすすめタグ：APIセキュリティ,ISACA,OWASP,WebAPI,セキュリティ
published: November 18, 23
canonical: https://convert.docswell.com/s/hackeT/Z6Y878-isaca202311sr
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GE5Y4DR9E4.jpg)

APIセキュリティについて
知っておきたいこと
2023年11⽉ SR分科会
ISACA名古屋⽀部
調査研究・CISA教育担当
2023年11⽉18⽇（⼟）
Conﬁdential. For internal use only.
14:00-14:50
理事
⻑⾕川達也


# Page. 2

![Page Image](https://bcdn.docswell.com/page/972GV8D57R.jpg)

はじめに
• セキュリティリサーチ（SR）分科会へようこそ︕
• リサーチ報告で
広く浅くインプット
• ⼿を動かすハンズオンで アウトプット＆エンジニアリング
• ディスカッション（交流）で
⼈脈形成
ご都合よろしければ、15:00〜の ISACA名古屋⽀部 ⽉例会にもご参加ください


# Page. 3

![Page Image](https://bcdn.docswell.com/page/DJYV3626JM.jpg)

アジェンダ
1. 15分 リサーチ報告
•
WebAPIの最新動向、OWASP API Security Top10 2023について
2. 20分 APIサーバーの⽋陥を探すハンズオン
•
パブリッククラウド (GCP) にて起動しているハンズオンAPIサーバーから簡単な⽋陥を探してもらう
3. 最⼤15分 ディスカッション(交流)
•
最近使ってよかったWebAPIの話
•
ボットからのアクセス、それGood︖, それBad︖の個⼈的⾒解


# Page. 4

![Page Image](https://bcdn.docswell.com/page/V7NMVZW1E8.jpg)

アジェンダ
1. 15分 リサーチ報告
•
WebAPIの最新動向、OWASP API Security Top10 2023について
2. 20分 APIサーバーの⽋陥を探すハンズオン
•
パブリッククラウド (GCP) にて起動しているハンズオンAPIサーバーから簡単な⽋陥を探してもらう
3. 最⼤15分 ディスカッション(交流)
•
最近使ってよかったWebAPIの話
•
ボットからのアクセス、それGood︖, それBad︖の個⼈的⾒解


# Page. 5

![Page Image](https://bcdn.docswell.com/page/YJ9N6ZXYJ3.jpg)

WebAPIの最新動向
OWASP API Security Top10とは︖
WebAPIを有効活⽤しつつ、攻撃から守るには︖
※本スライドで紹介するAPIは全てWeb APIです。次項以降はAPIと短縮表記しています。
Confidential. For internal use only.


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GJ8KZ12KED.jpg)

APIベースのアプリケーションによる変化
近年のマイクロサービスの台頭に伴い、APIエコシステムは複雑さを増しており、極めて
多くの脆弱性や弱点が残っている(2021.5 PortSwigger社)
APIベースのアプリでは、多くの処理がクライアントに移っている
⼀⽅で、SQLi / CSRF / パス操作のような従来の脆弱性は少なくなっている・・
しかし「APIならでは」の不備・⽋陥・弱点が明らかになっている
出典: https://owasp.org/www-pdf-archive/API_Security_Top_10_RC_-_Global_AppSec_AMS.pdf


# Page. 7

![Page Image](https://bcdn.docswell.com/page/LJLZDQ2P7R.jpg)

APIの⽤語と基本設計
📗 RESTful API、GraphQL、(SOAP)
✅APIエンドポイント
その機能APIの窓⼝
URLパス
– 理解しやすいSearchエンドポイント名の例︓
https://FQDN/api/search
– 要求されたデータ（リソース）やサーバー側での処理結果を返す
🪟公開API
•
認証なし、誰でもリソースにアクセスできる
🔑⾮公開API
•
認証あり
•
認証後もユーザーによって返答するリソースを変えることも設計できる（認可）
絶対原則
ü 機密情報を公開APIで実装しないこと︕


# Page. 8

![Page Image](https://bcdn.docswell.com/page/47MVP1827W.jpg)

認証と認可
認証
Authentication/AuthN
認可
Authorization/AuthZ
• ユーザーの⾝元確認
• 条件付きアクセス権限
• パスポート
• ビザ（査証）チケット
• 知識/所有物/⽣体
• RBAC/ABAC/ACL
運転免許証
認証によりユーザーの⾝元確認し、その属性によりアクセス権限を付与する、
認可チケットが認証されたユーザーに即紐づく⽅法がWebAPIでも主流
Identity and Access Management (IAM)


# Page. 9

![Page Image](https://bcdn.docswell.com/page/P7R21L55J9.jpg)

モダンなAPIキー（鍵）JSON Web Token (JWT)
“ジョット”と呼ばれ、JSON形式のデータで署名による改ざんチェックを⾏います
トークンの有効期限付きで、ステートレスな通信をサポート
APIでの使い⽅の⼀例︓Authorization: Bearer &lt;JWT&gt;
ü BearerはOAuth2.0の仕様の⼀部
https://jwt.io
Decode
Debugger ☞
jwt.ioはクライアント側の
JavaScriptで処理されサー
バー側にトークンが送信され
ないWebサービス
※ 他サービスにおいては、
貼り付ける際はJWTがサー
バー側に送信されないかご注
意ください︕
署名で利⽤するアルゴリズム
データ実体 ユーザー識別⼦・有効期限
データが改竄されていないかの確認⽤


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PJXDYWKXEX.jpg)

OWASP API Security Top10
• OWASP Top10のAPIベースのアプリケーション版
• API1~10にて設計および実装の不備、弱点あるあるを定義
• プロジェクト説明: https://owasp.org/www-project-api-security/
• 2019年版と2023年版 公式Doc: https://owasp.org/API-Security/
• 事前にRelease Candidate (RC)版を公開し、広く意⾒を受け⼊れ正式版となる
• 最新版: 2023年2⽉RC公開 - 6⽉に正式版展開
• Webアプリ全般を対象にしたOWASP Top 10と類似もいくつかあるが、作成過程
が違う
• OWASP Top 10は収集したデータを考慮して作成
• OWASP API Security Top 10 ではデータが不⼗分のため、公開されているバグバウン
ティやニュースを収集し、APIセキュリティの専⾨家と議論して決めたもの


# Page. 11

![Page Image](https://bcdn.docswell.com/page/3JKX3V59ED.jpg)

OWASP API Security Top10
番号
2023 英語名
2023 ⽇本語訳
API1
Broken Object Level
Authorization
オブジェクトレベルの認可の不備（BOLA）
API2
Broken Authentication
認証の不備
API3
Broken Object Property Level
Authorization
オブジェクトプロパティレベルの認可の不備
API4
Unrestricted Resource
Consumption
制限のないリソース消費
API5
Broken Function Level
Authorization
機能レベルの認可不備（BFLA）
API6
Unrestricted Access to
Sensitive Business Flows
機密性の⾼いビジネスフローへの無制限のアク
セス
API7
Server Side Request Forgery
サーバーサイドリクエストフォージェリ
（SSRF）
API8
Security Misconfiguration
セキュリティの設定ミス
API9
Improper Inventory
Management
不適切なインベントリ管理
API10
Unsafe Consumption of APIs
APIの安全でない使⽤


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LE35GMK9J5.jpg)

（参考）Top10⽐較
出典︓https://yamory.io/blog/owasp-api-security-2023/
API開発時には、OWASP Top 10を補⾜する形で
OWASP API Security Top 10を活⽤する


# Page. 13

![Page Image](https://bcdn.docswell.com/page/8EDD1638EG.jpg)

API1:2023 オブジェクトレベルの認可の不備（BOLA)
実装
• リクエスト内のオブジェクト識別⼦を操作して、機密データへの不正アクセスを⾏う
ことができる
• 攻撃者は、識別⼦(ID)を変更するだけで、本来アクセスできないはずのオブジェクト
（データ）に到達できる
例: id:153の⼈がid:154の⼈のデータを取得できてしまっている︕
id:153, name:名無し
GET /user/154
{id:154,name: ⻑⾕川, Tel:
090…}
対策
ü ユーザーポリシーと階層構造に依存する適切な認可メカニズムの実装
ü idにGUIDのようなランダムで推測できないIDの利⽤


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V7PXQY4WE8.jpg)

API2:2023 認証の不備
実装
• 認証が厳格に実装されていない場合、攻撃者がAPIユーザーになりすまし、機密データ
に到達できる
• ブルートフォース攻撃に対する保護がされていない
• 未署名／弱い署名のJWTを受け⼊れてしまう、JWTの有効期限を検証していない
例: id:153の⼈がid:154の⼈の認証tokenを取得できてしまっている︕
id:153, name:名無し
通常 jwt
{alg: HS256}.{id:153}
対策
POST /token
{alg:none}.{id:154}
{id:154,name: ⻑⾕川, token:
ey***********}
ü 認証周りでは⾞輪の再発明をせずに、業界⽔準のスタンダードなものを利⽤する
ü 認証を⾏うエンドポイントにはブルートフォース対策のメカニズムを導⼊する
ü JWTは署名アルゴリズムを厳格にし、有効期限も検証する


# Page. 15

![Page Image](https://bcdn.docswell.com/page/2JVL5GX97Q.jpg)

API3:2023 オブジェクトプロパティレベルの認可の不備
実装
• 機密性が⾼いため攻撃者が読み取るべきではないオブジェクトのプロパティを露出
(API3:2019 Excessive Data Exposure)
• 攻撃者がアクセスできないはずの機密性の⾼いオブジェクトのプロパティの値を変更、
追加、削除できる (API6:2019 Mass Assignment)
Mass Assignmentの例: id:153の⼈が⾃分をadminに変更できてしまっている︕︕
id:153, name:名無し
admin: false
POST /update
{name:名無し,admin:true}
{id:153,name:名無
し,admin=true}
対策
ü オブジェクトを公開する時に、公開するオブジェクトのプロパティにユーザーがアクセスできる
必要があるかどうかを常に確認する
ü 要件に従って返すプロパティを必要最⼩限にする
ü クライアントが更新する必要があるオブジェクトのプロパティのみを変更できるように制限する


# Page. 16

![Page Image](https://bcdn.docswell.com/page/5EGX68V4JL.jpg)

API4:2023 制限のないリソース消費
設計
• 既定の時間内に受け取ることができるリクエストの数やサイズを制限していない
• サービス拒否（DoS）攻撃に対して無防備
• サービスプロバイダからのリソース請求の増加
例:リクエスト数やサイズに制限がなく、サーバーリソースがパンパン︕
POST /upload
POST /upload
POST /upload
対策
ü ⽂字列の最⼤⻑、配列内の要素の最⼤数、アップロードファイルの最⼤サイズなど、
受け取る全てのパラメータやペイロードの最⼤値を定義・適⽤する
ü 定義された時間内でクライアントがAPIを実⾏できる頻度を制限するレート制限
（Rate Limit）を導⼊する
ü 特に返すレコード数を制限するような処理に関しては、リクエストのパラメータを
サーバーサイドで適切に検証する


# Page. 17

![Page Image](https://bcdn.docswell.com/page/4JQ8496R7P.jpg)

API5:2023 機能レベルの認可不備（BFLA)
実装
• APIエンドポイントやHTTPメソッドなどの実⾏制限を適切にできていない
• API1 BOLA ☞ リソースオブジェクトへの認可の問題
• API5 BFLA ☞ 機能実⾏の認可の問題
例: 管理者しかできない(/admin/users/all)を⼀般の⼈が実⾏できてる︕
id:153, name:名無し
admin: false
GET /admin/users/all
{users:[{id:1,name:…},
{id:2,name:…},{id:3,name:…}….
.]}
対策
ü 各エンドポイントを機能レベルの認可の⽋陥がないかレビューする
ü 管理機能がユーザーのグループ・ロールに基づいて認可制御されてい
るか確認する


# Page. 18

![Page Image](https://bcdn.docswell.com/page/K742QX4QJ1.jpg)

API6:2023 機密性の⾼いビジネスフローへの
無制限のアクセス
設計
• ビジネスフローで予想されていない過剰なボットの処理により、機
密性の⾼い「購⼊・予約・招待・コメント」などで悪影響
例:ボットによる過剰な⾃動アクセスでクレジット（ポイント含む）を不正取得される︕
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
Credit: 100 pt
対策
ü 過剰に利⽤された場合に悪影響があるビジネスフローを特定する
ü デバイスフィンガープリント、CAPTCHAなどを利⽤し、⾃動化され
たアクセスを防ぐ（悪意のあるボットかの判断の難易度⾼い︕）


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LJ1MPN4LEG.jpg)

API7:2023 サーバーサイドリクエストフォージェリ
（SSRF)
実装
• URIをAPIサーバーが検証せずにリダイレクトしてリモートリソースを取得する攻撃⼿
法・脆弱性
•
URLパーサーライブラリの脆弱性に起因している
•
OSSやSaaSのよく知られたURLパスが攻撃を容易にする
例: バックエンドの169.254.169.254のサーバーから
意図せずtokenが取れてしまっている︕
169.254.269.254
GET
/statistics?url=http://169.254.169.254/
meta-data
{token: ey***********}
対策
{token: ey***********}
ü 可能な限り許可リスト（想定されるリモートオリジン、URLスキーマとポート、コンテンツ
タイプ）を使⽤する
ü HTTPリダイレクトを無効化する
ü URLパース⽅法の不⼀致を避けるために⼗分にテスト・保守されているURLパーサーを利⽤
する


# Page. 20

![Page Image](https://bcdn.docswell.com/page/GJW324XQJ2.jpg)

API8:2023 セキュリティの設定ミス
実装
• 設定の漏れやミスによる適切なセキュリティ強化の⽋落
• FW設定/脆弱性パッチ/不要なロギング・エラーメッセージの有効化/TLSなし
/CORSなし/Cache Controlなし
例: クラウドサービスで不適切なアクセス制御をしている︕
(リモートコード実⾏など)既知の脆弱性パッチが当たっていない︕
など、APIに限った話ではなく多岐に渡る
対策
ü 全ての環境における構成と設定の有効性を継続的に評価する⾃動化されたプ
ロセスを導⼊する


# Page. 21

![Page Image](https://bcdn.docswell.com/page/4EZVD263J3.jpg)

API9:2023 不適切なインベントリ管理
運⽤?
• 開発環境やベータ版など古いバージョンのAPIが公開状態で残存、
レート制限なし
• 本番データが開発環境に⼊っている
例: ベータ版にレート制限が実装されておらず、総当たりでパスワードリセットが成功︕
POST /v1/password/reset
POST /v1/password/reset
POST /v1/password/reset
POST /v1/password/reset
V1本番稼働
POST /beta/password/reset
POST /beta/password/reset
POST /beta/password/reset
POST /beta/password/reset
ベータ版
limit!”}
e
t
a
r
,
y
n
a
m
o
o
t
“
sage:
{status:429, mes
対策
{status:200, message: “success”}
ü API環境（本番、ステージング、テスト、開発）、ホストへネットワークアクセスできる⼈
（パブリック、内部、パートナー）、APIバージョンなどに関してドキュメント化する
ü OpenAPIなどオープンスタンダードを採⽤し、ドキュメントの⾃動⽣成をする
ü 本番環境以外のAPIで本番データを使⽤することを避ける


# Page. 22

![Page Image](https://bcdn.docswell.com/page/Y7651V2ZEV.jpg)

実装
API10:2023 APIの安全でない使⽤
3rd partyのAPIサーバーを利⽤する場合、受け取ったデータを検証せずに利⽤す
ると情報漏洩やインジェクションの脆弱性を引き起こす
例: 3rd partyのAPIサーバーに登録したdrop db命令を
連携している⾃分のAPIサーバーが読み込んで実⾏してしまった︕
ter
１⃣ POST /regis
p db; --’}
o
r
d
‘;
:
e
m
a
n
{
２⃣ GE
T
/serv
ice_li
st
3rd Party
;
‘
:
e ’}
ET
G
m
⃣
a ; -３
n
⃣ { db
４ op
dr
対策
ü APIで受け取ったデータを使⽤する前に検証する
ü レスポンスを処理するリソース制限・タイムアウト制限をする
ü リダイレクトする可能性がある場合は許可リストを使⽤し、盲⽬的にリダイレクトしない
ü APIの通信が安全な通信チャネル(TLS)上で⾏われていることを確認する


# Page. 23

![Page Image](https://bcdn.docswell.com/page/G75Y4D2974.jpg)

APIを有効活⽤しつつ、攻撃から守るには︖
✅APIサーバーも含めて脆弱性診断やシステム監査を⾏う
✅「OWASP API Security Top10」の対策セクション「How To
Prevent」などを参考に設計時からセキュリティを導⼊する
⬅シフトレフト⬅
✅漏れなく旧バージョンのサーバーやドキュメントの管理
（APIサーバーのドキュメンテーションは⾃動化できるので更新しやすい）
✅データ分析や脅威情報の収集によるAPI脅威ハンティング
https://www.akamai.com/ja/glossary/what-is-api-threat-hunting


# Page. 24

![Page Image](https://bcdn.docswell.com/page/9J2GV845JR.jpg)

[参考]APIセキュリティツール⽐較 by TRACABLE社 (2022/03)
すでにAPIセキュリティの監査・監視ツールが10社ほどあり、いくつかはふるまい解析によるボット軽減や詐欺の検出まで対応
出典: h$ps://www.traceable.ai/wp-content/uploads/2022/03/API-Security-Tool-Comparison-Guide.pdf


# Page. 25

![Page Image](https://bcdn.docswell.com/page/DEYV36M6EM.jpg)

アジェンダ
1. 15分 リサーチ報告
•
WebAPIの最新動向、OWASP API Security Top10 2023について
2. 20分 APIサーバーの⽋陥を探すハンズオン
•
パブリッククラウド (GCP) にて起動しているハンズオンAPIサーバーから簡単な⽋陥を探してもらう
•
2分の事前説明
•
15分の演習時間
•
3分のデモ解説
3. 最⼤15分 ディスカッション(交流)
•
最近使ってよかったWebAPIの話
•
ボットからのアクセス、それGood︖, それBad︖の個⼈的⾒解


# Page. 26

![Page Image](https://bcdn.docswell.com/page/VJNMVZ3178.jpg)

http(s)://[IPAddress]:[Port]/docs へブラウザでアクセス︕
※[IPAddress]と[Port]は演習当⽇にSlackに書きます。


# Page. 27

![Page Image](https://bcdn.docswell.com/page/YE9N6Z9YE3.jpg)

10個のAPIエンドポイントを⽤意しました
展開して
詳細を確認できます
鍵付きは
認証必要
/tokenは演習にて
⼿操作しません
各オブジェクトのス
キーマはここを展開
してください


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GE8KZ19K7D.jpg)

APIエンドポイントのSwagger UIでの実⾏⼿順
Request bodyを修正して下の「Execute」
をクリックし、APIエンドポイントへの
curlアクセスを実⾏する
「Try It out」をクリッ
クすると以下のように
展開される


# Page. 29

![Page Image](https://bcdn.docswell.com/page/LELZDQWPJR.jpg)

前座の詳説 [認証しJWTをブラウザに保存]のWeb UI⼿順
2.[認証ユーザー登録]に
てご⾃⾝のユーザーを
作成してからクリック
エラーが出ずAuthorized
となれば認証成功
usernameにメールアドレスを
passwordにパスワードを⼊れ
て他はそのままで
Authorizeボタンをクリック
※Logoutを押さないか有効期限
の15分を超えない限り、鍵アイ
コンのAPIエンドポイントも
JWTトークンが渡った状態で利
⽤できます
「Close」をクリックし閉じる
解答やヒントを⾒たくない⽅はこのスライド以降は演習終了まで⾒ないこと


# Page. 30

![Page Image](https://bcdn.docswell.com/page/4JMVP192JW.jpg)

演習の解説は、講師の操作デモのみで⾏います
これら３つのﬂag⽂字列を取得できましたか︖
ü hackeT{API5_Broken_Function_Level_Authorization}
監査ヒント: L2FkbWluL3VzZXJfaWRzLwo=
ü hackeT{API1_Broken_Object_Level_Authorization}
監査ヒント: L3VzZXJzL3t1c2VyaWR9Cg==
ü hackeT{API3_Broken_Object_Property_Level_Authorization}
監査ヒント: L3VzZXJzL3VwZGF0ZSAtPiAvYWRtaW4vZmxhZy8K


# Page. 31

![Page Image](https://bcdn.docswell.com/page/PJR21LG5E9.jpg)

アジェンダ
1. 15分 リサーチ報告
•
WebAPIの最新動向、OWASP API Security Top10 2023について
2. 20分 APIサーバーの⽋陥を探すハンズオン
•
パブリッククラウド (GCP) にて起動しているハンズオンAPIサーバーから簡単な⽋陥を探してもらう
3. 最⼤15分 ディスカッション(交流)
•
最近使ってよかったWebAPIの話
•
ボットからのアクセス、それGood︖, それBad︖の個⼈的⾒解


# Page. 32

![Page Image](https://bcdn.docswell.com/page/PEXDYWXX7X.jpg)

ディスカッションテーマ
最近使ってよかったWebAPIの話
ボットからのアクセス、
それGood︖, それBad︖の個⼈的⾒解
現地オフラインの⽅は、 3⼈程度のグループを作成し、議論してみてください。
Zoomオンラインの⽅は、Zoomチャットに書き込む形で交流してみましょう。
最後に発表やまとめは⾏う予定はありませんが、興味深いものは花⽥会⻑が紹介してくれるかも!?
Confidential. For internal use only.


# Page. 33

![Page Image](https://bcdn.docswell.com/page/3EKX3VW97D.jpg)



