oloo 驗證狀態可由用戶端竄改,串接後端缺漏之租借前置檢查可無限免費騎乘 - HITCON ZeroDay

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
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

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

敘述

摘要

兩項子弱點組合成一條利用鏈:

項目 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. 後端應再次確認使用者已完成支付工具綁定等前置條件才允許借車。

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;