《壞傢伙2》教會了我關於資訊不對稱和…的知識 Application Security 無人願意提及的問題

01 他們是你的學生

《絕地戰警2》裡有一句台詞足以讓所有保全人員瞠目結舌。當「壞女孩」們——凱蒂·凱特、豬尾巴·彼得羅娃和杜姆——首次現身時,她們並非帶著強大的火力或先進的技術趾高氣揚地出現,而是以仰慕者的身份出現,如同粉絲一般。正如電影裡所說,她們是「壞蛋們的學徒」。她們對「壞蛋們」的研究可謂透徹,能夠複製他們的行動模式,預判他們的下一步行動,並利用他們的人際關係。當「壞蛋們」最終明白發生了什麼事時,遊戲已經結束了。資訊不對稱在開場之前就已經完全形成。

攻擊者已經研究過你的程式碼。他們掌握了你的二進位。但這些偵察活動都沒有在你的日誌中留下任何痕跡。

這並非什麼巧妙的電影橋段,而是對過去十年中所有嚴重應用程式安全漏洞的真實寫照。

攻擊者早已研究過你的程式碼。他們掌握了你的二進位。他們利用反彙編器和調試器離線運行它,從容不迫,沒有任何時間壓力和警報系統。他們了解你的加密金鑰、身份驗證邏輯、API 呼叫模式以及混淆方案(如果有的話)。他們比你大多數開發人員都更了解你的應用程式。而所有這些偵察活動都沒有在你的日誌中留下任何痕跡。

問題不在於你的申請是否遇到了這個問題,答案是肯定的。問題在於他們檢查後會發現什麼。

02 資訊不對稱才是真正的問題

資訊不對稱是經濟學家用來描述交易雙方資訊掌握程度遠超過另一方的情況的概念。喬治·阿克洛夫因研究資訊不對稱如何破壞市場而榮獲2001年諾貝爾經濟學獎——他最著名的例子是二手車市場:賣家了解車輛的真實狀況,而買家卻一無所知,導致市場充斥著大量劣質車。掌握更多資訊的一方總是能夠勝出,這並非因為他們更聰明,而是因為他們掌握了對方所不知道的資訊。

在應用程式安全性領域,從您發布程式碼的那一刻起,不對稱性就完全體現在攻擊者身上。攻擊者獲得了二進位檔案。二進位檔案包含了您的邏輯、金鑰、機密資訊以及信任假設。攻擊者可以不受任何限制地對其進行檢查。而您,作為開發者,一旦應用程式離開您的環境,就無法看到攻擊者對其進行的操作。您只能獲得日誌。攻擊者則擁有與您發布程式碼完全相同的權限,可以查看所有已發佈程式碼。

這並非假設。現代反編譯器和反彙編器已經使逆向工程普及到二十年前難以想像的程度。一位熟練的分析師,只要擁有免費工具,就能在一個下午的時間裡剝離移動應用程式的混淆層,在幾個小時內提取硬編碼的密鑰,並在一兩天內繪製出應用程式完整的伺服器通訊介面圖。這些工具功能完善,文件詳盡,圍繞這些工具的社群也十分活躍。

壞女孩們並不需要比壞男孩們更聰明。她們只需要掌握比壞男孩們更多的關於她們的資訊。在電影中,這種資訊不對稱是透過耐心的觀察和研究建立起來的。而在應用程式安全領域,攻擊者從應用程式商店下載你的應用程式的那一刻起,就已經建立了這種資訊不對稱。

03 緋紅之爪難題:當秘密離開盒子

《絕地戰警2》中最具啟發性的時刻並非劫案本身,而是劫案錄影帶。

州長黛安福克斯頓有一個秘密身分:緋紅之爪,她曾經的犯罪化身。這個秘密多年來一直被嚴密保守。它是她公共權威、政治合法性以及與沃爾夫關係的基礎。從任何意義上來說,它都是一把密碼金鑰──一個隱藏的訊息,維繫著整個信任體系。

凱蒂·凱特掌握了錄影帶。她以此要挾壞蛋們,迫使他們配合她的偷竊計畫。在故事的高潮,當沃爾夫以為他已經找回了裝有錄影的U盤時,凱蒂還是把它上傳到了網上。黛安的秘密身分被公諸於世。勒索的價值瞬間消失,但秘密所保護的一切也隨之崩塌。州長的信譽、她的人際關係、她的政治生涯——所有這一切都依賴那把鑰匙的秘密——同時瓦解。

這正是從應用程式中提取加密金鑰時發生的情況。

密鑰就是秘密。秘密是信任體系的基石。一旦密鑰被提取——一旦攻擊者掌握了它——你的應對措施就毫無意義。這種洩漏是不對稱的,也是不可逆的。你可以輪換密鑰、修補應用程式、撤銷憑證。但攻擊者已經擁有了他們想要的一切。

沃爾夫的錯誤在於他誤以為擁有U盤就意味著掌握了秘密。但秘密早已從U盤洩漏。在行動和Web應用程式開發中,這種錯誤是結構性的。嵌入二進位檔案中的金鑰並非秘密,而是存在時間延遲的公開資訊。延遲的時間長短取決於一位合格的分析師需要多久才能發現它。

04 隨身碟錯覺

在應用安全性理念中,存在著一種反覆出現的故障模式:將容器與金鑰混淆。企業往往認為金鑰的安全性取決於其儲存位置的安全性。硬體安全模組?安全。加密金鑰庫?安全。硬編碼在行動應用二進位檔案中?嗯,我們確實使用了第三方混淆工具,所以…

沃爾夫以為U盤裡裝著錄影。凱蒂在交出任何東西之前就已經備份好了,上傳也已經排好了隊。那個實體只是個道具,一個佔位符,用來轉移沃爾夫的注意力,讓他不再去找真正的錄影──因為錄影帶當時已經存在於沃爾夫無法進入的系統中。

混淆處理才是關鍵,U盤才是。關鍵不在於錄影本身。

這是業界一直在學習又不斷遺忘的一點。混淆會增加逆向工程的難度,提高成本。對於某些威脅模型而言,提高成本是一種有效的防禦措施。但對於任何有足夠動機的攻擊者——例如國家級攻擊者、有組織的金融犯罪集團或資金雄厚的競爭對手——混淆只會拖延時間,而非防禦。關鍵仍然隱藏在二進位檔案中。經驗豐富的分析師終會找到它。他們可能需要三天而不是三個小時,但結果是一樣的。

傳統密碼學的設計是基於演算法公開、密鑰保密的假設。現代加密的整個理論體係也只有在這假設成立的前提下才能維繫。然而,在應用程式運行於攻擊者控制的硬體上的環境中——例如每個行動裝置、每個物聯網終端、每個用戶端應用程式——這一假設便不再成立。密鑰就隱藏在二進位檔案中。

只要有時間和工具,就​​能找到它。唯一能在金鑰提取後仍然存活的加密架構,是金鑰提取本身不會產生任何有用資訊的架構。

05 蘇珊並非真正的蘇珊:內部威脅作為資訊擷取管道

Snake的女友「Susan」就是Doom。她看起來不像個威脅,倒像是一對情侶。 Snake越來越少參與「壞蛋聯盟」的行動,卻和一位已經掌握了她所需權限的人共度時光。她無需突破防線,因為她就在防線之內。 Snake讓她進來了。

在電影和現實生活中,內部滲透都是最可靠的攻擊手段之一。 「壞女孩」們無需透過外部攻擊來瓦解「壞男孩」們的勢力。她們只需要在關係網絡中找到一個值得信賴的節點,而斯內克在不知情的情況下就提供了這個節點。

在應用安全領域,這直接關係到供應鏈。對一個經過加固的應用而言,最危險的攻擊途徑並非應用本身,而是應用所信任的對象。第三方 SDK、開源依賴項、API 服務、分析套件等等,應用在執行時間初始化的每個外部程式庫,原則上都擁有與自身程式碼相同的應用程式執行時間狀態存取權。如果該庫遭到入侵,或者本身就是惡意的,那麼你在自身程式碼庫中建立的信任關係將毫無意義。

2020年SolarWinds資料外洩事件 在基礎設施層面,最典型的例子就是建置系統遭到入侵,並透過可信任管道向數千個組織分發惡意更新。但這種模式也常出現在行動應用層面。例如,從合法供應商取得行動 SDK,新的擁有者在發布更新時內建了資料竊取功能。所有自動拉取該 SDK 的應用程式現在運行的程式碼都違反了其建置時所依賴的所有信任假設。事實上,邊界並未被突破,真正的攻擊在於信任關係本身。

蘇珊從來就不是蘇珊。你的分析 SDK 可能不是你真正的分析 SDK。

06 辮子知道你的簽名

「豬尾巴」佩特洛娃,這群「壞女孩」中的野豬工程師,是片中最具技術深度的角色。正是她陷害了「壞傢伙們」。她並非依靠蠻力,而是透過模仿。她對「壞傢伙們」的作案手法——他們的特徵、作案手法、破綻——進行了極其深入的研究,以至於她能夠偽造出與他們作案手法如出一轍的犯罪。 「壞傢伙們」因此背負了他們並未犯下的罪行,因為「豬尾巴」能夠從功能層面模仿他們的行為。

這就是利用逆向工程進行競爭情報分析。這也是老練的金融攻擊者對應用程式身分驗證系統所採取的手段。

當攻擊者對行動銀行應用程式進行完全逆向工程時,他們不僅能找到密鑰,還能了解應用程式的行為模式。他們能夠理解構成合法會話的 API 呼叫序列,了解應用程式用於向伺服器驗證身分的質詢-回應協議,以了解應用程式發送哪些裝置遙測資料、包含哪些頭部資訊以及正常使用時序模式。有了這些訊息,他們就可以建立一個模擬器——一個能夠高度模擬應用程式行為的合成客戶端,從而透過伺服器端驗證。

伺服器會收到看似來自合法應用程式的請求。這些請求在取證上與合法請求無法區分,因為攻擊者逆向工程了合法請求的簽名並進行了複製。這種欺詐行為在欺詐模式本身變得可檢測之前是隱形的——而到那時,攻擊者已經進行了數千筆交易。

07 麥格芬尼效應與真正的目標

電影製作人給他們的「麥格芬」(MacGuffinite)取了個名字,引得觀眾哄堂大笑。麥格芬是一種稀有金屬,能像磁鐵一樣吸引黃金。這個梗源自希區考克:麥格芬指的是劇情需要所有人想要的東西,無論它本身是否重要。麥格芬只是個幌子。真正的目標是從多國太空站盜取全世界的黃金。精心策劃的劫掠行動只是實現真正目標的鋪墊,而真正的目標規模完全不同。

安全團隊接受的訓練是保護關鍵物品。但攻擊者另有所圖。

當攻擊者對你的行動應用程式進行逆向工程時,最直接的目標是取得加密金鑰。但密鑰往往只是輔助手段。攻擊者真正想要的可能是大規模產生有效身份驗證令牌的能力——從而實現對數百萬用戶的帳戶接管。也可能是攔截和修改傳輸中的財務資料而不觸發憑證綁定機制的能力。或者,他們可能克隆應用程式的身份,直接存取後端服務,繞過應用程式在客戶端實施的所有安全控制。

關鍵的盜竊行動是婚禮上智慧手錶被盜。手法嫻熟、精準,幾乎看不出來。真正的重頭戲在於接下來發生的事。

08 邊界始終是一種設想,而非一道牆。

安全產業在過去近二十年致力於建構安全邊界,包括防火牆、入侵偵測系統、網路分段和零信任架構。其基本模型是:將惡意攻擊者拒之門外,信任內部數據,並守護兩者之間的邊界。

當應用程式駐留在你的硬體、資料中心、防火牆之後時,這種模式是合理的。但當應用程式遷移到雲端後,它就開始顯得力不從心。而當應用程式轉移到用戶的口袋裡時,這種模式則徹底崩潰了。

行動應用部署在攻擊者控制的硬體上。物聯網設備部署在攻擊者可以實際佔有的硬體上。 Web 應用程式載入到攻擊者可以檢查的瀏覽器中。在這些環境中,邊界模型都不適用。應用不在邊界之內。應用程式從發布之日起就處於邊界之外,運行在對抗環境中。

這就是邊界安全無法解決的架構問題。你可以把伺服器環境做得完美無瑕,基礎設施零漏洞,網路分段完美,每個後端服務都擁有嚴密的存取控制。然而,你的行動應用卻帶有硬編碼的服務密鑰和混淆方案,一個週末空閒的初級分析師就能輕易破解。攻擊者無需觸碰你的伺服器,只需攻擊你的應用,而應用程式本身就能與伺服器流暢通訊。

09 攻擊面的幾何形狀發生了變化

金融服務、醫療保健、國防承包、電信……過去十年中,所有實現了面向客戶業務數位化的行業,都在不知不覺中將攻擊面從資料中心轉移到了終端。敏感資料、身份驗證邏輯、加密操作——所有這些,現在至少有一部分運行在企業不擁有或控制的硬體上。

這對密碼學的影響是具體且未被充分重視的。傳統的密碼學——例如 AES-256 加密、RSA 簽章和 TLS 握手——在金鑰保密的前提下是可證明安全的。這個前提並非數學上的,而是物理上的。現代加密的數學原理是合理的,問題在於這個前提。

當應用程式在攻擊者控制的裝置上執行加密操作時,攻擊者可以觀察應用程式在金鑰載入、操作執行和輸出生成時的記憶體活動。一種稱為側通道攻擊的攻擊正是利用了這一點:功耗、電磁輻射、時序變化、快取存取模式——所有這些都會洩露有關所用金鑰的資訊。在白盒攻擊中,攻擊者更進一步,將應用程式本身視為一個開放的分析盒,直接從編譯後的程式碼中提取金鑰。

AES-256 仍然是 AES-256。但是當密鑰可以存取時,加密強度僅取決於密鑰的保密性——而密鑰的保密性為零,或接近零。

10. 二進位加固並非混淆。白盒密碼學並非加密。

正因如此,安全方面的討論需要更加精準,因為混淆這些概念會對企業造成真金白銀的損失和真正的風險。

程式碼混淆透過改變程式碼使其更難閱讀。它會重新命名變數、簡化控制流程、插入無用程式碼、加密字串。但只要分析師夠執著,最終總能識破它。程式碼混淆是一種拖延,它就像U盤一樣,難以破解。

二進制加固則有所不同。它透過為應用程式本身添加防禦機制,使篡改行為變得可檢測或無效。例如,反調試技術可以檢測應用程式是否在偵錯器下運行,並改變其行為;完整性檢查會在運行時驗證應用程式本身的程式碼,如果檢測到修改則拒絕執行;反篡改控制可以檢測應用程式是否在模擬環境中運行;環境檢查可以識別表明存在惡意裝置的 root/越獄狀態。二元加固不僅會拖慢分析人員的速度,還會透過使最常見的逆向工程工作流程變得不可靠,從而改變攻擊的經濟效益。

白盒密碼學直接解決了密鑰洩漏問題。在標準的黑盒密碼學中,金鑰是加密操作的獨立輸入。而在白盒密碼學中,密鑰透過一系列數學變換以數學方式嵌入實現本身中,即使攻擊者完全存取程式碼和內存,並能觀察到每一個中間計算過程,密鑰也無法恢復。加密操作仍然會產生正確的輸出。密鑰無法從實作中提取出來。無需交出U盤。

這些並非對安全邊界的漸進式改進,而是不同的架構理念:不再試圖阻止攻擊者訪問應用程序,而是構建一個即使攻擊者擁有完全訪問權限也能保持安全的應用程序。

11. 應用感知威脅情報:了解惡意攻擊者何時潛入系統

影片中反派的根本問題在於他們的被動性。他們對始料未及的事件做出反應,因為他們對針對他們的陰謀一無所知。直到「壞女孩」們選擇在她們自己選擇的時機,按照自己的意願,主動現身,他們才知道「壞女孩」的存在。

應用程式安全歷來都面臨著同樣的問題:攻擊往往在事後才被發現。日誌在入侵發生後才被審查。取證分析只能重現攻擊者的操作。從最初入侵到被發現的這段時間——業界稱之為潛伏期——平均長達數週甚至數月。在這段時間內,攻擊者完全可以利用資訊不對稱的優勢。

合理的糾正措施是採用檢測手段,將檢測提前到攻擊鏈的更早階段——在密鑰提取完成之前、在偽造的會話令牌被使用之前、在模擬客戶端發出第一個欺詐性調用之前。能夠觀察自身運行時環境並報告異常情況(例如調試活動、異常內存訪問模式、在模擬器中執行、針對實時服務運行的篡改代碼)的應用程序,可以生成遙測數據,從而縮短攻擊者的潛伏時間。

當你的應用程式能夠告知你它正在偵錯器中運行時,分析你二進位檔案的分析師就不再隱身了。當你的應用程式報告說破解版正在呼叫你的伺服器時,Pigtail 的冒充行為不可能幾個月都不被發現。資訊不對稱開始瓦解。

出貨前必須問的12個問題

在「壞蛋幫」執行任何任務之前,沃爾夫都會制定一個計劃。這個計劃是基於「壞蛋幫」擁有的資訊不對稱優勢。他們掌握著目標所不知道的訊息,擁有目標無法預料的能力。只要這種資訊不對稱存在,計畫就能成功。

「壞女孩」們扭轉了局面。她們建構了一幅比「壞傢伙」自己更完整的「壞傢伙」畫像,至少在行動層面上是如此。計劃失敗的原因在於,它所依賴的資訊不對稱已經被逆轉。

在你發布下一個應用程式之前,請先思考一個問題:攻擊者對你的二進位檔案進行逆向工程後,能否找到任何有用的資訊?

如果答案是肯定的——如果其中存在密鑰、可複製的身份驗證簽名,或者暴露後會破壞信任的邏輯——那麼你的計劃就依賴於資訊不對稱,而攻擊者最終會彌補這種不對稱。他們,在某種程度上,正在研究你的方案。

當然,壞人最終還是贏了。畢竟這是一部合家歡電影。但他們的勝利在於改變了資訊不對稱——他們打入了凱蒂的計劃,了解了她的真正目的,並利用了她不知道他們掌握的資訊。這和應用安全領域的勝利之道如出一轍。你不能指望壞女孩永遠不會研究你的工作成果。她們早就研究過了。真正的勝利在於確保她們研究的內容不會告訴她們下一步該怎麼做。

Digital.ai 應用程式保護

Digital.ai的平台 該方法從二進位層向上建構。二元加固技術能夠抵禦最常見的逆向工程和篡改工作流程——包括反調試、完整性驗證、環境檢測和運行時自我保護。白盒密碼技術將密鑰嵌入到實作中,使得密鑰提取在數學上變得難以處理,而不僅僅是不方便。應用感知智能提供您的應用程式在實際環境中發生的情況的遙測資料—無論是被分析、修改還是被冒充。

目標並非拖慢分析師的工作進度,而是確保即使分析師擁有完全存取權限,其發現的內容也不會帶來任何實際的營運優勢。當U盤中沒有任何內容時,Kitty也就無從上傳。

你可能還喜歡