Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2026-00974
- Vendor: 路加服務科技股份有限公司
- Title: oloo 驗證狀態可由用戶端竄改,串接後端缺漏之租借前置檢查可無限免費騎乘
- Introduction: 帳號更新 API 接受用戶端自行宣告的手機驗證狀態,配合後端未檢查支付方式綁定(僅前端限制),可用拋棄式 email 無限量產免實名、免付費且無法追償的可租借帳號。
處理狀態
目前狀態
公開
Last Update : 2026/08/25
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 2026/07/31 16:45:17 : 新提交 (由 Mars 更新此狀態)
- 2026/08/03 13:07:20 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 19:15:32 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 19:15:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/05 19:15:32 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2026/08/12 16:29:54 : 複測申請中 (由 組織帳號 更新此狀態)
- 2026/08/21 19:11:56 : 確認已修補 (由 Mars 更新此狀態)
- 2026/08/25 03:00:08 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2026-00974
- 通報者:marskung (Mars)
- 風險:嚴重
- 類型:邏輯漏洞 (Logic Flaws)
參考資料
攻擊者可經由該漏洞繞過網站邏輯行為進行惡意攻擊。
漏洞說明: OWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic
漏洞說明: CWE-840: Business Logic Errors
https://cwe.mitre.org/data/definitions/840.html
漏洞說明: OWASP - Testing for business logic
https://www.owasp.org/index.php/Testing_for_business_logic
漏洞說明: CWE-840: Business Logic Errors
https://cwe.mitre.org/data/definitions/840.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)
相關網址
https://looplus-api-staging.loopluscooter.com/nest/api/accounts/get-user-profile
https://looplus-api-staging.loopluscooter.com/nest/api/accounts/update-user-profile
https://looplus-api-staging.loopluscooter.com/nest/api/reservation/scooters-info
https://looplus-api-staging.loopluscooter.com/nest/api/scooters-infos/new-rent
https://looplus-api-staging.loopluscooter.com/nest/api/reservation/scooters-status/update-status
https://looplus-api-staging.loopluscooter.com/nest/api/accounts/update-user-profile
https://looplus-api-staging.loopluscooter.com/nest/api/reservation/scooters-info
https://looplus-api-staging.loopluscooter.com/nest/api/scooters-infos/new-rent
https://looplus-api-staging.loopluscooter.com/nest/api/reservation/scooters-status/update-status
敘述
摘要
兩項子弱點組合成一條利用鏈:
| 項目 | CVSS 3.1 | 嚴重度 |
|---|---|---|
| 帳號更新 API 接受用戶端提供之驗證狀態 | 8.5 | High |
| 租借前置條件僅前端檢查,後端未強制 | 6.5 | Medium |
| 利用鏈:拋棄式帳號無限免費騎乘 | 9.9 | Critical |
帳號更新 API 接受用戶端提供之驗證狀態
CVSS 3.1:8.5(High)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:H/A:N
| 指標 | 值 | 理由 |
|---|---|---|
| AV 攻擊向量 | N 網路 | 公開 API 端點 |
| AC 複雜度 | L 低 | 單一 API 呼叫,無前置條件 |
| PR 所需權限 | L 低 | 需持有任一帳號(免費且可自行註冊) |
| UI 使用者互動 | N 不需 | — |
| S 範圍 | C 已變更 | 缺陷位於 profile 服務,後果作用於身分驗證子系統 |
| C 機密性 | L 低 | 非主要影響面 |
| I 完整性 | H 高 | 身分驗證狀態之完整性完全喪失 |
| A 可用性 | N 無 | — |
CWE:CWE-602(用戶端執行伺服器端安全控制)、CWE-472(外部控制假定不可變之參數)
端點
GET /accounts/get-user-profile
POST /accounts/update-user-profile
缺陷
用戶端送出的 payload 包含驗證狀態布林值本身:
{
"mobileNumber": "<任意號碼>",
"mobileNumberVerified": true
}
後端採信此欄位,未以自身驗證流程的結果覆寫。等同於請使用者自行宣告是否已通過驗證。
| 可竄改欄位 | 後果 |
|---|---|
mobileNumberVerified |
手機驗證流程完全繞過,無需持有任何電話號碼 |
mobileNumber |
綁定任意號碼(含他人號碼) |
租借前置條件僅前端檢查
CVSS 3.1:6.5(Medium)CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N
| 指標 | 值 | 理由 |
|---|---|---|
| AV 攻擊向量 | N 網路 | 公開 API 端點 |
| AC 複雜度 | L 低 | 直接呼叫 API,繞過 App UI 即可 |
| PR 所需權限 | L 低 | 需持有任一帳號 |
| UI 使用者互動 | N 不需 | — |
| S 範圍 | U 未變更 | 影響侷限於租借服務本身 |
| C 機密性 | N 無 | 不涉及資料讀取 |
| I 完整性 | H 高 | 業務流程完整性喪失;可建立未付費之租借紀錄 |
| A 可用性 | N 無 | 本項單獨不影響可用性 |
CWE:CWE-602(用戶端執行伺服器端安全控制)、CWE-841(行為工作流程強制執行不當)
端點
POST /reservation/scooters-info
POST /scooters-infos/new-rent
(vehicle 對應端點同)
缺陷
前端在預約與租借前檢查「已綁定支付方式」;後端未實作對應檢查。直接呼叫 API 可在無任何支付方式的狀態下完成預約與租借。
此缺陷單獨存在時影響有限——仍需通過手機驗證的實名帳號,事後可追償。與 F-02 組合後才具備規模化條件。這也是本項單獨評為 Medium、但鏈評為 Critical 的原因。
利用鏈:拋棄式帳號無限免費騎乘
CVSS 3.1:9.9(Critical)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:L
| 指標 | 值 | 理由 |
|---|---|---|
| AV | N 網路 | 全程透過公開 API |
| AC | L 低 | 確定性成功,無機率成分,可完全自動化 |
| PR | N 無 | 鏈起點為自行註冊,無需既有權限 |
| UI | N 不需 | 無受害使用者參與 |
| S | C 已變更 | 影響及於計費、實名、保險責任等他系統 |
| C | L 低 | 可讀取車輛與站點資訊,非主要影響 |
| I | H 高 | 建立未付費租借紀錄;實名資料失去意義 |
| A | L 低 | 車輛遭無成本占用,降低正常使用者可用性 |
鏈結
1. 以拋棄式 email 註冊
→ 驗證碼寄至攻擊者自有信箱,無需猜測
2. POST update-user-profile { mobileNumberVerified: true } ← 漏洞1
→ 手機驗證繞過,無需持有任何電話號碼
3. POST reservation / new-rent ← 漏洞2
→ 後端未檢查支付綁定
4. POST /reservation/scooters-status/update-status
5. 騎乘
6. 棄置帳號,回到步驟 1
性質
| 面向 | 評估 |
|---|---|
| 成功率 | 確定性 — 無機率成分 |
| 邊際成本 | 趨近於零 — 僅需一組拋棄式 email |
| 規模上限 | 無 — 可完全自動化,帳號數不受限 |
| 事後追償 | 可能性低 — 無實名、無支付方式、無有效聯絡方式 |
| 偵測難度 | 高 — 流量特徵與正常新用戶註冊相同 |
修補建議
1. `/accounts/update-user-profile` 應拒絕更改驗證相關欄位(如 `mobileNumberVerified`)。
2. 後端應再次確認使用者已完成支付工具綁定等前置條件才允許借車。
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。