Referral Beware, Your Rewards Are Mine by Whit Taylor | Bug Bounty Village, DEF CON 33
三句話摘要
Web應用推薦獎勵計劃(Referral Rewards Program)的安全漏洞研究與攻擊技術分析。 推薦獎勵計劃因安全監督不足而充滿漏洞,但安全研究者在Bug Bounty中的回報往往不成比例。 四種標準實現方式各有風險:URL轉Cookie值、客戶端驗證請求、折扣碼模式、行動應用Intent方式。每種都可能成為攻擊入口,因為涉及金錢或信用額度,直接影響公司收益與用戶資產。
重點整理
重點- 1
四種標準實現方式各有風險:URL轉Cookie值、客戶端驗證請求、折扣碼模式、行動應用Intent方式。每種都可能成為攻擊入口,因為涉及金錢或信用額度,直接影響公司收益與用戶資產。
- 2
客戶端漏洞是前置武器:Cookie注入、Cookie fixation、路徑遍歷等客戶端漏洞本身可能不致命,但可串聯其他漏洞形成完整攻擊鏈,例如用Cookie注入達成Cookie fixation後劫持他人推薦。
- 3
業務邏輯漏洞難度最高但威力最大:包括無限信用迴圈(通過多個gmail+別名郵箱重複觸發獎勵)、繞過購買前提(取消訂單後仍保留推薦碼)、自我折扣(使用自己的推薦碼)、競態條件(平行發送請求突破驗證)。這些假設開發者會遵守的邏輯可被巧妙破壞。
- 4
推薦劫持攻擊的兩種主要形式:Cookie fixation通過設定Cookie路徑優先級使攻擊者Cookie被優先使用;行動應用設計漏洞則透過欺騙用戶點擊仿冒應用(如假Gmail)來攔截推薦碼。
實用技巧與重點
乾貨- 實現方式:URL→Cookie、客戶端驗證請求、折扣碼、行動應用Intent
- Cookie攻擊類型:Cookie注入、Cookie tossing、Cookie bombing、Cookie fixation
- 路徑遍歷:`../../../` 序列改變API請求目標
- 無限信用漏洞:用alice郵箱(user+1@gmail.com、user+2@gmail.com等)新增賬戶;獎勵額>消費需求;無新用戶推薦限制
- 繞過購買前提:訂單需完成後才解鎖推薦→檢出後取消訂單
- 自折扣漏洞:帳戶建立時自動進入訂閱流→強制返回根目錄→呼叫設置API取得推薦碼→完成訂閱使用自己的碼→每月重複
- 競態條件:單包攻擊(Single packet attack by James Kettle)+ repeater的send-in-parallel功能
- Cookie fixation攻擊:破出Cookie值→設定path屬性→受害者訪問→攻擊者Cookie因path優先級被使用
- 行動應用攻擊:仿冒Gmail應用(改包名為a.gmail、換圖標)→攔截Intent數據→替換為攻擊者推薦碼→轉發
- 研究成果:25+次漏洞提交;<$1000獎金;部分triager不理解影響、部分公司修復不付錢、部分程式獎金表過低
- 平台:HackerOne、Integrity、BugCrowd
- 參考資源:Live Overflow在Hextree.io的Android課程;Doynsec關於CSPT的部落格
結論
結論“推薦獎勵計劃因安全監督不足而充滿漏洞,但安全研究者在Bug Bounty中的回報往往不成比例。”
完整解析
詳細推薦獎勵計劃是現代Web應用的標配功能。用戶分享推薦連結給朋友,朋友註冊後雙方都獲得獎勵——通常是現金或應用內信用。Google、HelloFresh、Robinhood、Etsy等大型企業都採用這個模式,但鮮少有人系統性地審視其安全性。
講者從技術實現入手,分析了四種主要方式。最簡單的是URL到Cookie值的轉換——頁面JavaScript提取連結中的推薦碼放入Cookie,用戶註冊後Cookie隨請求發送。進階版使用客戶端驗證:先發送請求檢查碼有效性,通過後再在第二個請求中應用。第三種是折扣碼模式,用戶在結帳時輸入推薦碼獲得折扣。行動應用則透過Intent機制傳遞數據——用戶點選分享按鈕會看到應用選單,選定應用後數據傳入。
客戶端漏洞層面,Cookie注入是首要威脅。若應用未正確轉義推薦碼進Cookie,攻擊者可破出Cookie值注入任意屬性。完全破出可做Cookie tossing(設定任意Cookie導致賬戶接管),或Cookie bombing(溢滿Cookie jar讓請求失敗)。部分破出則只能設定Cookie屬性,這時Cookie fixation浮現——攻擊者設定特定路徑的Cookie,因RFC優先級規則,該Cookie在受害者完成註冊時被優先使用,攻擊者因此獲得推薦獎勵。另一個客戶端漏洞是路徑遍歷,若推薦碼被直接拼接入API路徑(如 `/api/users/123?referral={code}`),輸入 `../../../../` 序列可改變請求目標,配合其他漏洞可突破CSRF防護或觸發XSS。
業務邏輯漏洞更具破壞力。「無限信用漏洞」發生在應用允許用 `user+1@gmail.com`、`user+2@gmail.com` 等別名郵箱無限註冊,且獎勵金額大於消費需求時。攻擊者建立兩個賬戶,用帳戶二推薦帳戶一,帳戶一購買觸發獎勵後獲大額信用——此後所有消費用信用完成,形成無限增殖迴圈。講者因此在某應用生成數千美元信用,僅換來$150賞金。繞過購買前置條件的漏洞則利用訂單取消。應用規定購買才解鎖推薦碼,但取消訂單後推薦碼保留,攻擊者可用該碼折扣第二個賬戶的訂單再取消第一筆訂單。自我折扣漏洞更直接——應用未驗證推薦碼所有權,攻擊者使用自己的碼完成訂閱,甚至能每月取消再重複,永久50%折扣。
競態條件攻擊使用James Kettle的單包攻擊技術。推薦流程通常分三步:建立賬戶→驗證推薦碼→應用獎勵。若驗證與應用間無鎖定機制,攻擊者可平行發送多個應用請求,繞過單次驗證處理多份獎勵。講者成功於一個金融應用中執行此攻擊,卻因程式要求社保號驗證而拒發第二賬戶確認,導致獎勵仍懸掛。
推薦劫持最陰險。Cookie fixation搭配破出Cookie值設定路徑屬性,攻擊者的Cookie因優先級會在受害者註冊時被使用。行動應用設計漏洞則利用應用選單的信任間隙:攻擊者上架仿冒應用(包名相似如 `a.gmail`、複製Gmail圖標),等用戶誤點後攔截Intent中的推薦碼替換為自己的,再轉發給真實應用,用戶毫不知情。
講者投入約25次漏洞提交,獲得少於$1000的獎金。挫折來自多方:Triager誤解影響力便關閉為「信息性」不予溝通、公司援引「預期行為」但最終修復不賠、部分程式獎金表過低。這項研究確實發現了一個被忽視的攻擊面,卻在Bug Bounty生態中碰壁。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

