了解廣告SDK工作機制,保護APP自身安全
編輯導讀:很多人對SDK又愛又恨,一方面能夠幫助開發者簡化開發步驟,提高開發效率,節約開發成本;但是另一方面也要嵌入第三方SDK后帶來的風險和后果。想要避免風險,首先就要了解它。本文作者對廣告SDK工作機制進行解析,希望對你有幫助。
SDK,APP開發者應該都很了解,開發者們或多或少都接觸或安裝過,而提到SDK安全性這個問題,開發者們的情緒可能都不會平靜,這其中的利害關系確實有點兒復雜。
一方面,SDK方便開發者產品設計,幫助開發者簡化開發步驟,提高開發效率,節約開發成本,像框架類、廣告類、推送類、統計類、地圖類、社交類、支付類、客服類、測試類等等,這些不同類型的SDK極大地方便了開發者。
而另一方面,對開發者來說,也不得不承擔,因嵌入第三方SDK后帶來的風險、后果,由于SDK開發者開發能力的參差不齊,可能因為技術原因或惡意‘留后門’而存在大量安全漏洞,還有一些SDK會違規讀取和儲存用戶隱私,或執行越權操作等,這些問題輕則造成APP卡頓,重則被應用市場下架,更嚴重的情況是漏洞被攻擊,就可能會給APP及APP用戶帶來嚴重損失。
早在2020年7月,延遲四個月舉行的3.15晚會中,央視曝光了50多款App中內嵌SDK插件竊取用戶隱私的問題,這些App通過內置SDK插件,在用戶不知情的情況下,讀取、上傳用戶電話號碼、通訊錄、短信記錄、應用列表等信息,并竊取聯系人、交易驗證碼等數據,嚴重侵犯用戶隱私權益、財產安全。讓SDK安全性問題浮出水面,一時間,SDK成為“眾矢之的”,令社會普遍認為,SDK是造成個人隱私數據泄露的“元兇”。上月,一則“滴滴出行”APP因嚴重違法違規收集使用個人信息被應用市場下架的消息,讓個人信息安全問題重回熱點,像滴滴這樣的Hero APP都被下架了,更是令眾多APP經營者風聲鶴唳。
事實真的如此嗎?SDK真的是“洪水猛獸”嗎?讓我們來看一組數據。
根據觀研天下發布的《2019年中國移動APP行業分析報告》調查數據顯示,截止2018年第四季度,全球APP平均安裝SDK數量達18.2個/APP,100-500萬下載量的APP的SDK平均安裝數量最多,達27.7個。
2016-2018年全球APP平均安裝SDK數量
2018年12月不同下載量級別APP的SDK數
2019年,南都個人信息保護研究中心委托中國金融認證中心針對使用率高的 SDK 做了隱私數據分析報告,報告顯示,在測評的 60 款常用應用軟件中,共使用了至少 966 個 SDK,平均每款 App 使用 19.3 個(注:移動金融類未計在內,因為該行業普遍對 App 進行加固,難以確切檢測出使用的 SDK)。
其中生活服務類 App 平均使用的 SDK 個數最多,為 20.2 個,旅游交通類最少,平均使用 15.4 個 SDK。由此我們可以看出,SDK之于APP開發者們,在風險可控的情況下,并不排斥。
圖 | 各行業 APP 使用 SDK 數量
數據來源:《常用第三方 SDK 收集使用個人信息測評報告》/ 南都個人信息保護研究中心中國金融認證中心(CFCA)
廣告SDK是絕大多數App開發者在考慮商業化變現時,經常要用到的。下面我們就對廣告SDK的功能分類,集成規范,工作原理來詳細解讀,以便APP開發者對廣告SDK有更深入的了解。
一、APP與廣告SDK
根據2020年11月全國信息安全標準化技術委員會《網絡安全標準實踐指南-移動互聯網應用程序(App)使用軟件開發工具包(SDK)安全指引》中對SDK的分類,常見SDK類型分為16類(見下圖),其中,對廣告SDK的功能描述是提供廣告展示功能,通過使用廣告SDK,App提供者可以在App中展示廣告商投放的廣告,進而根據用戶的點擊賺取收益。
廣告SDK在眾多SDK類型中,是比較特殊的一類,其他SDK主要是方便APP自身運營需要,而廣告SDK它的功能目的是直接的商業化變現。因此,具備一定規模流量的想快速獲得收益的APP開發者都會考慮接入廣告SDK。
資料來源:《網絡安全標準實踐指南—移動互聯網應用程序(App)使用軟件開發工具包(SDK)安全指引》
二、廣告SDK分類及用途
廣告SDK的功能是展示廣告,從定義上來說,還分廣義的和狹義的廣告SDK,廣義的廣告SDK是指為開發者提供廣告相關功能(接入廣告、廣告監測等)的軟件開發工具包;狹義的廣告SDK就是指幫助App開發者接入廣告,實現廣告變現的軟件開發工具包。
從用途上分,可以分為網頁SDK和APP SDK,網頁SDK用于網頁(或小程序)的廣告變現,APP SDK用于移動應用程序內的廣告變現,APP SDK從編寫語言上分,一般分為Java SDK、Objective-C SDK,Java SDK適用于Android,Objective-C SDK適用于iOS。
按照不同廣告領域,可分為展示廣告SDK,激勵廣告SDK、互動廣告SDK等,展示廣告SDK一般用于僅展示廣告素材類型的廣告,使用范圍最為普遍,激勵廣告SDK一般用于有激勵場景的APP,像激勵視頻、積分墻等廣告形式,游戲APP安裝較多,互動廣告SDK,多用于像抽獎、大轉盤等類型的廣告形式,使用范圍廣泛,工具類應用較多安裝。
根據sdk商業性質來看,可以分為單一廣告SDK和聚合廣告SDK,單一廣告SDK直接用來進行廣告投放,一般開發者多為廣告聯盟,僅用于需求方的廣告投放,聚合廣告SDK集成多家廣告聯盟SDK,可實現多平臺的廣告投放,開發者多為廣告技術公司,主要用于方便APP開發者在進行多廣告聯盟變現時的運營優化。
三、廣告SDK如何接入
一般廣告SDK的開發者都會有對接文檔給到APP開發者,APP開發者根據文檔步驟自助對接,有問題的話再以郵件或工單提交等形式聯系廣告SDK開發者,有的廣告SDK開發者會安排專人跟蹤對接服務,相對來說處理問題會比較及時??偟膩碚f,不管哪種服務方式,集成過程都基本遵循這樣一個步驟。
Step 1 加入文件:根據文檔內容,將廣告SDK嵌入指定項目目錄中。
Step 2 創建關聯:建立關聯關系,向廣告SDK添加引用,添加配置、權限等。
Step 3 代碼寫入:應用初始化及廣告位開發,調用廣告SDK提供的廣告位模板。
Step 4 測試聯調 :測試廣告流程,是否正常觸發廣告請求、返回廣告,廣告素材下發、渲染、展示是否正常,是否流暢,廣告數據統計是否正常等內容。
Step 5 更新軟件:?將集成過廣告SDK的APP上架到應用市場
完成以上步驟,廣告位基本能夠請求到廣告,實現廣告變現。
四、廣告SDK的請求機制
對于單一廣告SDK和聚合廣告SDK來說,工作機制基本相同,都是APP啟動,調用SDK,觸發廣告請求,發送給廣告平臺服務器,廣告平臺服務器返回廣告,下發素材,展示廣告,只在發送廣告請求上,聚合廣告SDK會多一步轉發動作,將廣告請求轉發多家廣告聯盟平臺,如下圖:
廣告SDK運行機制
區別在于,在發送廣告請求上,聚合廣告SDK會多一步轉發請求的動作,將廣告請求轉發多家廣告聯盟平臺。
廣告SDK的工作流程已經很清晰,但對APP開發者來說,這些可能都不是難點,最大的顧慮還是在SDK的安全性上。主要問題,一是,SDK安全漏洞。二是,是否預留“后門”。三是,數據是否濫用。最后,問題還是落在這三點上,要避免這些問題,最好的方法是對廣告SDK源碼進行核查。
事實上,現在的做法也是這樣的。一般開發者對接廣告SDK的時候都會對SDK進行審查,但對于不是很了解廣告行業或者技術能力不足的開發者,在SDK審查上,既有顧慮又可能無從下手,這里AdScope在SDK核查方面給出一些方法,以便于開發者操作。
五、廣告SDK的核查
廣告SDK的核查工作概括起來主要有兩個方面:一查什么?二怎么查?
1. 查什么?
1)來源安全性評估
SDK提供者的基本信息,溝通反饋渠道,隱私政策鏈接地址,提供者安全能力,SDK基本功能,SDK版本號等。
2)代碼安全性評估
是否存在已知的惡意代碼,是否存在已知的安全漏洞,是否申請敏感權限,是否嵌入其他SDK。
3)行為安全性評估
調用的敏感權限、目的和頻率,收集的個人信息類型、目的和頻率,個人信息回傳服務器域名、IP地址、所在地域,是否存在熱更新行為及熱更新是否可主動關閉,傳輸數據是否加密,是否存在單獨收集用戶個人信息的界面,是否存在后臺自動啟動和關聯啟動后收集個人信息的行為等。
2. 怎么查?
1)文檔審核
在接入SDK前,對廣告SDK開發者提供的文檔進行核查,根據前面提到的幾項主要內容,對照文檔查看是否都符合要求,還有雙方未達成一致或有爭議的內容。
2)工具抓包
接入SDK后,在進行測試過程中,使用工具對廣告SDK網絡工作流進行抓包操作。通過抓包主要驗證安全性評估內容,并查看是否有在文檔和商務談判中未涉及到的隱秘及可疑行為。
市面上的抓包工具很多,這里主要介紹適合移動端開發者使用的抓包工具,Charles,Fiddler,Replica(移動端APP),這三款都不錯,這里比較推薦Charles,它支持Windows,Mac,Linux,安裝使用簡單,功能強大。
3)第三方認證
通過具有安全審核資質的第三方公司來對廣告SDK進行審核工作,出具第三方評估報告,一般也是在接入后的測試環節進行。第三方認證機構也很多,比如360安全專家、網易易盾、騰訊安全等,但很多第三方的機構都是付費的。
作為一種對接方式,廣告SDK在APP商業化變現的過程中扮演重要的角色,在移動廣告事業的發展中也起著非常關鍵的作用。正是由于SDK在移動廣告行業中的廣泛使用,才創造了移動互聯網廣告市場的萬億規模,為社會帶來巨大的經濟價值。
SDK創造的價值不應被忽視,而只談影響,SDK需要的是監管和合規,而不是取締。欣喜的是,政府及監管部門正在出臺多項法律法規積極治理,相信不久的將來,SDK將迎來一個凈化過的市場環境,App開發者與SDK開發者終將以建立互信的商業合作關系。
本文由 @ADSCOPE 原創發布于人人都是產品經理,未經作者許可,禁止轉載。
題圖來自Unsplash,基于CC0協議
- 目前還沒評論,等你發揮!