編譯 | 核子可樂、Tina
這僅僅是“平凡人生中的一場大風波”嗎?
昨天,一位開發人員在 Hacker News 上分享了他最近的經曆:因為好奇,他檢視了朋友公司的網頁源碼,發現了對方公司的代碼中有一個非常低級的失誤。事關安全,于是他馬上報告給了他的主管和自己公司。但不幸的是,不久後他就被公司以此安全事件為由解雇了。被解雇之後,還收到了法院的傳票,需要自己再去打一場官司。他對此表示不了解,認為自己“沒有做違法的事情”,但作為一個教訓,還是以匿名的方式把這個故事分享給了大家......
然而實際上事情并沒有他想象中的那麼簡單。
事情經過:來自當事人的自述
檢視源碼,報告漏洞
前段時間,我在一家銀行從事軟體工程方面的工作。雖然跟資訊安全無關,但我了解一些業務内情,而且自己也一直對這方面很有興趣。在工作中,我發現某家公司打算發行信用卡,而這項業務的上線會讓對方成為我們銀行的直接競争對手。我當然對他們的業務計劃抱有好奇,而且我正好有幾位相熟的朋友在那邊工作。
在看到他們在生産應用上釋出的一些發夾内容後,我把這些内容下載下傳下來,并打算解析一下功能背後的相關資産(其實非常簡單,解壓.ipa 檔案再查找圖像 / 文本就行)。出乎意料,我發現其中包含大量 server mocks,可能是某個調試 build 的遺留産物。為了弄清應用是如何使用這些資源的,我設定了 Charles Proxy 并嘗試用手機通路。老實講,我也就是随手一試,畢竟現在還有人不用 SSL Pinning 嗎?(畢竟對方已經發行并接受信用卡支付了,或多或少得有一點安全意識才對)但事實證明,他們沒用任何 SSL Pinning,我可以用自己找到的這些 mocks 進一步解析這款應用。
我用個人賬戶登入了這款應用,檢視請求以了解需要将哪些端點映射到哪些本地 mocks——照理說,我應該會遇到未授權端點和 HTTP 403 報錯,對吧?其中有一個端點會為信用卡子產品傳回 true/false 資訊,我把它映射到了某個始終傳回 true 的本地檔案。
于是乎,我很快就找到了對方信用卡的開卡指引部分,并好奇能不能進一步找出信用卡功能首頁。之後,我注意到.ipd 上很多 mocks 使用的端點都跟我之前映射的端點完全相同,是以我很快就找到了信用卡功能首頁。在這裡,我又發現了更不同尋常的東西……這是個我在任何 mocks 中都沒見過的名稱。通過 Charles 檢查一番後,我意識到它來自某個我沒有映射過的 API……
我使用 mock 指定了一條卡 ID……而應用随後會要求擷取這條數字 ID。因為我是以無卡使用者的身份登入的,是以應該被拒絕通路才對。但是……卡 ID 就在這裡,明文顯示。
憑借自己從事信用卡項目的經驗,我初步判斷對方是在運作某種生産環境下的測試流程,因為我拿到的是個隻有員工(對方公司有個小小的專項團隊)才能通路的試水程式。“沒準順着這條線摸下去,還能找到靜态檔案。”在好奇心的驅使下,我決定請求變更 ID,這次又獲得了另一個卡号和名稱。随着摸索,我逐漸意識到這些都是真實存在的卡号,會以明文形式提供給登入使用者。這也太離譜了……錯誤太多,我根本無法想象自己公司會出現這樣的低級失誤。但對方還真的就拿出了這樣一份開發成果。
到這裡,我認定肯定得把安全問題上報給對方。他們可能沒意識到把這些有問題的東西部署到生産環境中會有怎樣的風險。但經過一番思考,我決定先跟當時的雇主打個招呼。這絕對不是想炫耀,我是擔心如果這家競争對手碰巧設有 bug 賞金計劃,那以我的身份從那邊領獎金好像有點奇怪。
另外,我們公司也許能跟對方的負責部門直接溝通,畢竟我不知道具體該跟對方的哪位負責人聯系。是以第二天,我就把這事告訴了我的經理,她又把情況上報給 CISO。之後的幾天,她一直在跟進,并表示肯定會披露這個發現。期間也有部分資訊安全部門的同僚參與進來,警告說公開披露也有風險,畢竟很多公司對這種事其實不大能接受……
麻煩來了:不僅被解雇還要打官司
之後這件事就沒什麼動靜了……我開始懷疑這項發現到底重不重要——問題本身确實嚴重,但對方公司可能已經知曉問題的存在、并決定冒險先把其他功能做完。
幾個月後,我的經理在一天下班時打電話給我,讓我臨時參加個會。走進會議室,我發現人力專員、公司高管還有我的經理都在。會議結果就是我被解雇了,因為對方宣稱我通路了他們的某些内部 API。沒錯,我是通路過一個,而且就是我披露的這個。這事我的經理知道,我們銀行的另外三位高管也都清楚。聽過我的争辯,現場上司們傳達了對方公司的意見,宣稱我在上報情況後又多次通路了這些内部 API(可我沒有)。
老實說,對方這麼幹似乎是想把我的行為描述成某種商業間諜活動。我們銀行把我開除掉,則是為了證明并不存在什麼商業間諜活動。但我純粹是出于個人好奇心,哪有那麼複雜……
幾周之後,一位警官登門、送來了法院的傳票。他們沒說是因為什麼事,但結合前段時間的狀況,這肯定跟我發現的安全問題有關。在跟一位熟悉技術的獨立律師交流之後,我意識到院方是把這次事件認定成了疑似信用卡欺詐:原告方宣稱我用幾十張信用卡進行了多次交易。這讓我瞬間了解了自己為什麼會被解雇。這項指控非常嚴厲,沒有哪家銀行願意雇用被指控欺詐的員工。
我絕對沒用這些卡号進行過任何交易,沒有向外公開過擷取卡号的具體方法,也從用這些資料牟取任何利益。而對方的指控明顯站不住腳,所謂“曾在幾十張卡上進行過交易”在他們的日志系統中根本查詢不到。是以剛拿到傳票時,我還擔心了一陣,怕的是對方告我未經授權通路……雖然不是故意的,但這事我确實幹了。
好在對方選擇的罪名是信用卡欺詐,雖然聽起來更恐怖,但我有信心駁回這種莫須有的指控。
事情基本就是這樣。我的生活還在繼續、也找到了另外一份工作,目前這場鬧劇已經有專門的律師幫助我處理。塵埃落定,我覺得不妨以匿名的方式把這個故事分享給大家。老實說,從局外人的視角來看,這還真是平凡人生中的一場大風波。
安全專家評論:請收好自己的好奇心
這個匿名文章發出後,網友們進行了激烈的探讨,短時間内在 Hacker News 上蓋了幾百層樓。
部落客的文章表明他自己并沒有意識到這其中有犯罪的行為,隻是覺得對方弄錯了,自己雖然探查過對方的 API,但絕沒有用這些卡号進行過交易,不存在欺詐的行為。
有網友認為,解雇是不合理的,是部落客公司在推卸責任。也有網友認為,現代軟體非常糟糕,特别是自從向現代技術進行轉變之後,這些企業中有越來越多的 API 是用 js 編寫的(不是歧視這種語言),無論這些 API 是否是對外的。是以,在探索合作夥伴 / 客戶的(internal)API 時,意外發現非常具有損壞性的錯誤和漏洞是正常的。公司和公司、公司和雇員之間,缺乏誠實的溝通、缺乏信任、缺乏合作以使事情變得更好。
這時候,有一位網名為“tptacek”的安全專家跳了出來。
tptacek 是一位安全研究員和軟體開發人員,在安全領域有近三十年的從業經驗,是多個安全會議的審稿人,也是安全公司 Matasano Security ( 曾是美國最大的軟體安全公司)三位創始人之一。
他指正道:“作者幹的事情絕對不是完全合法。有些人可能覺得我這是在搞‘受害者有罪論’,我隻想從自己的立場做個簡單判斷。無罪的觀點會誤導他人。除了 CFAA(Computer Fraud and Abuse Act)以外,任何外部測試都不屬于‘合理測試’。作者的問題在于,他未經許可就在别人的網站上尋找漏洞。你沒有權利這麼幹。雖然有些企業會覺得無所謂,但大多數企業肯定無法容忍這種行為。而法律其實是支援無法容忍這一邊的。雖然作者大機率會被宣判無罪,但律師費恐怕也足夠喝一壺的了。”
這種情況時有發生,即使是擁有明确的 Bug 賞金計劃,有時候還是會讓技術人員身陷風險。這類計劃一般都設有邊界,即隻允許一定範圍内的測試,而很多人就犯在對邊界沒有産生足夠的警覺性。在沒有事先得到授權的情況下違反這些潛規則很容易讓人陷入法律糾紛,這也就是作者遇到的情況。
“是以希望你能學個乖,下次再遇到彈出明文信用卡号的時候記得停下,别再繼續深入。收起你那該死的好奇心,用腦子想一想别人的底線在哪裡。”
事情越讨論就越明朗,部落客的行為不僅僅是“檢視源碼”,還拆開了競争對手的應用程式并圍繞私有 API 進行逆向工程。這就埋下了一個責任上的“地雷”,這種情況他需要立即請教相關律師。另外部落客在向公司回報時,也不曾留下任何書面記錄......
并不是說對法律的無知是一個借口,但是不在資訊安全領域的軟體開發人員也需要知道一些限制。公共資訊安全研究是必要的,但漏洞本身也是“燙手的山芋”。一方面,漏洞處理機制離不開漏洞發現者的配合,但另一方面,安全漏洞的發掘與報送都存在較高的法律風險,要注意不能觸及法律的“紅線”。國内常常也有開發者因為法律意識淡薄而做出不當行為:
2019 年 7 月,某政府網站管理者報警稱信箱子產品有網民多次發送非正常留言,疑遭黑客攻擊。警方調查後發現,犯罪嫌疑人利用休息時間,在未授權的情況下,對網站進行滲透測試,他的目的為了找出網站漏洞并生成漏洞報告,“為家鄉做點貢獻”。
2019 年 5 月,揭陽網警工作發現違法嫌疑人蘇某有涉嫌非法侵入計算機系統的行為。經深入調查發現,違法嫌疑人蘇某利用“禦 X”軟體等對南方網等網站進行漏洞掃描,後用弱密碼測試北京中醫院網站的背景并成功登入,在未經授權的情況下擅自修改管理者賬号密碼,同時将該網站的漏洞送出給“漏洞盒子”網站。據其本人交代,其違法行為隻是為了擷取相應積分,“有利于其以後找工作”。
此類事件層出不窮,也說明了就算不在安全資訊領域工作,大家也有必要去了解一些基本法律,包括《網絡安全法》、《網絡産品安全漏洞管理規定》,等等,知道“界限”在哪裡,進而避免因為不知法守法讓自己陷入違法甚至犯罪的窘境。
參考連結:
https://news.ycombinator.com/item?id=30706014&p=1
https://www.secrss.com/articles/13122
http://gd.sina.cn/news/2019-11-12/detail-iihnzhfy8578952.d.html
《計算機資訊系統安全保護條例》:http://www.gov.cn/flfg/2005-08/06/content_20928.htm
《網絡安全法》:http://www.cac.gov.cn/2016-11/07/c_1119867116.htm
《網絡産品安全漏洞管理規定》:http://www.gov.cn/zhengce/zhengceku/2021-07/14/content_5624965.htm
《研究人員指南:安全研究的一些法律風險》:https://clinic.cyber.harvard.edu/files/2020/10/Security_Researchers_Guide-2.pdf