拼多多优惠券bug造成千万损失引发的优惠券安全思考

一. 背景

“ 今日凌晨,拼多多爆出可领无门槛100元优惠,引得广大网友竞相争抢,据说短短时间出现300亿交易额,其中200亿是虚拟产品,这200亿可能就是拼多多损失的数额。目前,拼多多回应,已把领到的优惠券回收,并修复BUG。据悉拼多多方面因为此损失数千万,目前已报案。”                                                                                                                                                                      --摘自搜狐新闻 2019.1.20

抛开拼多多是否自导自演,该事件引发了我对优惠券安全性的重新思考和整理。优惠券具有生命周期长,涉及环节多,玩法灵活等特点,这就决定了优惠券安全和所有涉及的各方(券配置方,发券配置方,风控,运营等)都息息相关,任何一方存在风险都会影响优惠券的安全性。

二. 配置平台涉及优惠券安全常见场景

一张优惠券从创建到消亡是有生命周期的(这里只描述在配置后台的生命周期,暂不涉及发布上线后到用户手中的部分),如下图所示:

2.1 配置安全

创建一张优惠券,主要包含三大类配置项:基本属性,核销条件,发放条件,如果配置优惠券平台缺少必要配置项,或配置项区分度不够,将使优惠券发放和核销不可控,因此优惠券配置平台应具有配置发放和核销可精细化控制的能力。

2.2 预算管控

平台优惠券(由平台承担费用的抵用券)的预算由预算系统进行管控,预算管控可分为两大类,即强管控和弱管控,强管控即为不允许花超,弱管控即为允许花超,但超太多应设置警告。预算系统与优惠券系统在三个交互时机,如图所示:

预算系统维护各组织部门的预算,一个预算号表示一笔可用的预算,优惠券在创建过程中需要填写将占用预算的预算号,因此预算系统需要保证预算不被非法消耗,保证预算安全,一种预算号权限控制方式如下:

c1可以使用预算组织A,B和C1的预算,但不能使用预算组织C2的预算;而a可以使用预算组织A,B,C1,C2的预算,预算组织的节点越大,就越多人能使用;或者预算组织C2的预算流水号s授权给c1,c1也可以使用预算号s,同时离线优惠券数据需考虑进行数据脱敏,降低活动预算被他人非法消耗的风险。

2.3 风控审批

优惠券的创建与修改需经过风控审批,如果优惠券的创建划分为多个阶段,比如分为创建优惠券(配置基本属性与用券条件),再创建发优惠券活动(配置发券条件),则每个阶段的创建和修改都应经过风控审批。例如运营创建一张满0元减10元且不受领取数量限制的老客可用优惠券,如果优惠券配置平台对创建与修改有风控审批环节,这种高风险优惠券将在风控审批过程被拦截,因此优惠券配置平台应具有创建与修改优惠券时风控可感知,可控制的能力。

2.4 权限控制

只能查看与修改自己创建的优惠券,只能查看与修改自己创建的发优惠券活动,且发优惠券活动只能关联自己创建的优惠券。

2.5 操作记录

优惠券配置、修改、风控审批、发布各环节操作记录。

三. 优惠券发放服务安全设计

3.1 发放条件校验失效

因各种原因导致优惠券发放条件校验失效,例如优惠券发放条件中设置了发放渠道限制,但上游未传发放渠道信息,代码设计为不传即不校验,导致出现发放渠道限制失效的风险。因此对优惠券发放条件应进行强校验。

3.2 优惠券发放接入风控

虽然有用户领取限制,但黄牛可能注册多个用户对优惠券进行领取,风控可根据用户属性、设备属性等进行判断,防止盗刷优惠券。

3.3 优惠券平台发券标识被遍历

发券方直接使用优惠券id作为发券标识时,如果id值域过小且自增,并且券id直接明文暴露在发券接口中,会被黄牛掌握规律遍历所有的券。

解决方案:对内部券id进行加密10001 -> U2FsdGVkX19rKRB1RNmH6h/xoFk10cf13njDmtRUVcE=

3.4 优惠券平台上游发券服务的发券标识被遍历

发券平台上游服务直接使用优惠券id作为发券标识时,如果id值域过小且自增,并且券id直接明文暴露在发券接口中,会被黄牛掌握规律遍历所有的券。

解决方案:上游服务接入券平台时,券平台应沟通发券方案,确保上游服务没有被遍历的风险。

3.5 水平鉴权漏洞

优惠券平台通常服务于多个发券渠道,每个优惠券或者优惠券发放活动都有发放渠道归属,每个优惠券应仅允许归属的发放渠道发放。

3.6 并发风险

使用分布式锁解决并发导致的各维度库存失效(发券总量限制,日发券总量限制,用户发放总量限制,用户单日发放总量限制等)

3.7 篡改参数

如对外提供http服务,可能存在被篡改前端参数的风险,需要进行验签。这里可根据需要选择不可逆加密算法或者可逆加密算法(对称加密或非对称加密)。

3.8 爬虫暴力攻击

爬虫暴力攻击导致业务服务器压力过大,影响正常服务,需要接入发爬服务,关于爬虫于反爬虫的斗争网上资料很多,况且我也只是了解一些,没有深入研究,这里就不详细分析了。

四. 优惠券核销服务安全设计

4.1 核销条件校验失效 

因各种原因导致优惠券核销条件校验失效,例如优惠券核销条件中设置了用户限制,但代码设计问题导致绕过用户属性校验,导致出现核销用户限制失效的风险。因此对优惠券核销条件应进行强校验。

4.2 优惠券核销接入风控

虽然有多维度的用户核销库存限制,但黄牛可能注册多个用户对优惠券进行核销,风控可根据用户属性、设备属性等进行判断,保障核销券的用户都是自然人。

五. 监控及止损

5.1 报警

设置基本的发放金额阈值、核销金额阈值、发放条件失效可感知、核销条件失效可感知及关键代码块异常或者指标报警。

5.2 止损

在代码设计中需要考虑的非常重要的一个问题是:上线如果出问题怎么办?抵用券系统故障会涉及资损,因此需要有及时止损的能力,可一健降级。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容