挖洞經驗 | 谷歌雲服務平臺的組織資源名稱可修改漏洞($7500)
谷歌雲服務平臺(Google Cloud Platform,GCP)可用來方便使用者集中管理開發工程、賬單賬戶或IAM角色等多種資源服務專案(Resource)。在這篇文章中,作者發現了谷歌雲服務中組織資源名稱的可修改漏洞,可利用這種可修改特性,結合谷歌雲服務中的分享和依賴關係,可假冒組織資源,對GCP使用者實現欺騙。
谷歌雲服務 中的組織資源介紹
GCP服務專案依賴存在於宿主專案中,如果你不再需要某服務專案,可以選擇刪除(關閉)該服務專案,但在此之前,需要確保該服務專案已從宿主專案中分離。刪除(關閉)該服務專案後,依然具有一個月的可恢復期限,在這期間,可以選擇恢復該服務專案。
因此,重要的是,使用者需要注意自己服務專案的存放位置,如果出於某些原因,使用者在某個不可信的組織資源中建立了一個賬單賬戶( 設定組織資源 ),那麼最終,其他惡意人員可能會利用這個賬單賬戶來進行支付操作。
現在的問題就是,如何在一個組織資源中建立服務專案呢?在此,有兩種方法:
如果你是 G Suite 或 Cloud Identity 使用者,系統會自動為你提供組織資源,這樣的話,就可在其中來建立服務專案了
或者是有可以共享的組織資源
漏洞分析
GCP下的組織資源(Organizations)可被共享給任意谷歌身份管理系統(IAM)認可的谷歌使用者。所以,如果我共享給多個谷歌使用者的話,可能某個使用者會在其中不經意地建立一個服務專案(Resource),那麼,我也就能夠任意來管理這個專案了。
但是,GCP的組織資源具備名稱和域名屬性,就比如我個人的組織資源就叫”ezequiel.tech”,這種名稱可能會讓人覺得有些奇怪。我發現,出於某些原因,可以從GCP組織資源管理下的一個棄用方法(Deprecated) – organizations.update 來對組織資源名稱進行修改,即使該方法下顯示的’displayName’引數是可讀的,也一樣可以發起修改操作。
通過這種方法,我可以用我自己的組織資源來做測試,可以把它的修改成其它迷惑人的名稱,比如:
我把它的名稱修改為”<IMPORTANT-COMPANY>.com”;
然後,把它以 “domain:<IMPORTANT-COMPANY>.com”分享給任意谷歌使用者
一些毫無戒心的使用者可能會在這個組織資源中建立專案,特別是一些賬單賬戶和管理敏感資訊的專案,這樣,這種新建立的專案可以簡單地執行關閉,即使執行了刪除動作,我也可以重新恢復並使用它們,從中獲取到我想要的資金交付或密碼憑據等資訊。
還有一個問題,如果我把我的組織資源分享給一個普通的谷歌使用者(@gmail.com),當他在GCP平臺建立專案後,GCP介面會強制他選擇一個組織資源歸屬,如果我的組織資源是他唯一可以選擇訪問的,那麼,毫無疑問,他可能會在其中建立自己的服務專案(宣告:只有一些底層API接口才能建立無組織資源歸屬的服務專案)
我也可以把我的組織資源專案以 “No organization”命名,這樣不需要域名設定,大多數使用者也不知道其真正用意,而且,這種操作,對未註冊GCP賬戶的受害者來說,也可以不顯示GCP的試用banner資訊。
漏洞利用場景
可以考慮一種最簡單直接的漏洞利用場景,攻擊者可以出4美元購買一個域名,再註冊一個14天免費試用版的G Suite賬戶,接下來,可以建立一個組織資源,然後就可實現對上述分析的漏洞機制進行利用了。修改組織資源名稱,迷惑受害者,分享這個組織資源,當受害者無意在其中建立服務專案之後,就能接管控制或間接利用這個服務專案了。
我第一時間向谷歌漏洞獎勵平臺上報了這個漏洞,他們很快就修復了這個漏洞。現在,已經無法再修改組織資源的名稱了,而且,即使把組織資源分享出去,GCP介面也不會強制使用者在歸屬的組織資源中建立服務專案了。
另外,據谷歌內部測試分析來看,這個漏洞還存在一個有意思的影響,就是如果谷歌內部人員用”google.com” 作為GCP組織資源名稱,那麼,這種假冒的內部組織資源名稱會對谷歌內部人員造成欺騙,為此,他們還作了截圖說明,如下:
上面的”google.com” 是假冒的GCP組織資源名稱,下面的 “google.com – 433637338589“才是真正谷歌自己的組織資源。
顯然,利用”google.com” 作為GCP組織資源名稱,可以對使用GCP平臺的谷歌僱員造成很大的偽裝欺騙。儘管谷歌自身有各種安全檢查機制來避免風險隱患,但畢竟,這種自家的平臺、自家的組織資源,偽裝假冒性還是相對較高的。一旦有谷歌僱員在這種假冒的組織資源內建立個人服務專案,在其中可能就會涉及很多谷歌公司內部的工作事項處理,容易導致敏感資訊洩露。
為此,針對該漏洞的影響情況,谷歌漏洞獎勵平臺綜合考慮,給了我 $7500美金的獎勵。