研究人員稱,Canopy是一個家長控制應用程序,它提供了一系列的功能,可以通過內容檢查來保護孩子們上網,但它卻很容易受到各種跨站腳本(XSS)攻擊。
這些攻擊可以造成禁用孩子的監控甚至是更嚴重的后果,還可以向家長提供惡意軟件。
Canopy提供了防止色情短信、設備照片保護(通過圖像過濾)、屏幕時間監控、為父母提供兒童通信警報、違規網站的智能內容過濾,同時,Canopy還使用了人工智能引擎和VPN過濾功能。此外,對于父母來說,它還提供了遠程設備管理和控制孩子使用的應用程序和網站的功能。
據安全研究員稱,該應用的安裝過程需要授予一系列的權限,包括無障礙支持、在其他應用程序之上顯示的功能、安裝根CA和配置VPN。該應用程序還可以(選擇性地)充當設備管理員,防止應用程序被刪除……這種特權訪問會給設備的安全和使用這些設備的兒童的隱私帶來相當大的風險。
該應用程序被曝出XSS漏洞
事實證明,研究人員的想法并沒有錯。在研究該應用程序的安卓版本時,研究人員發現了幾個XSS漏洞,當惡意腳本被注入到其他正常的或受信任的網站時,就會發生這種攻擊。
這種注入通常是通過將惡意代碼輸入到網絡響應或評論字段來實現的,然后有效載荷就會被發送到網絡服務器。通常情況下,這些響應會在服務器端被驗證,因此惡意腳本就會被阻止了。但在Canopy公司的案例中,研究人員發現該應用缺乏這些方面的檢查。
一旦網站被入侵后,那么該網站的任何訪問者都有可能成為受害者,要么是被存儲型XSS攻擊,要么是被引誘點擊一個鏈接,被反射型XSS攻擊。
漏洞簡析
第一個問題是該應用程序的保護措施可以被繞過。
當研究人員測試Canopy的屏蔽不良網站核心功能時,他發現當他試圖在測試的安卓設備上加載一個被禁止的網站時,顯示的是一個屏蔽通知頁面。該通知頁面內有一個按鈕,它可以使孩子要求他或她的父母允許所要訪問的頁面。
當在測試設備上點擊了這個按鈕后,然后在響應的數據中附加上了一個簡單的XSS有效載荷腳本,在待訪問的網站上創建一個JavaScript彈出窗口,仔細觀察會發生什么。當他進入網站時,果然,出現了彈窗口。
該漏洞產生的原因是由于系統未能對用戶輸入的內容進行轉義。研究人員發現,該字段只允許用戶輸入50個字符,但這就足以輸入一個外部腳本。現在我們可以有多種方法來利用這個漏洞。
攻擊者(例如被監控的孩子)可以在異常請求中嵌入一個有效攻擊載荷。雖然攻擊者有多種方式利用這個漏洞,但很明顯最簡單的方式是自動批準一個請求。這里第一個測試的是一個自動點擊批準傳入的有效載荷。又測試了另一個有效載荷,它可以自動暫停監控保護。
外來攻擊者對Canopy進行攻擊
雖然熟悉腳本知識的孩子可以對父母進行網絡攻擊,但研究人員也發現它還可以產生更嚴重的后果。
例如,他觀察到阻止通知頁面中的URL值(表明哪個網站被拒絕)會顯示在父母儀表板的主頁面上。研究人員在這里做了一個簡單的測試,在URL中添加了一個腳本標簽,并在父控制臺進行加載,當加載父儀表板的主頁面時該腳本就會執行。我們現在可以提交一個異常請求,當父母登錄檢查被監控的設備時,攻擊者就可以控制Canopy應用程序了。
此外,由于攻擊需要使用一個特制的URL,因此攻擊完全有可能來自外部的第三方平臺。攻擊者只需要建立一個可能被屏蔽的網站,并在其URL中添加腳本,并誘導孩子嘗試訪問它。當有關訪問請求的通知傳到家長控制臺時,監控該賬戶的家長就會成為惡意腳本的受害者。
但這還不是全部。事實證明,Canopy API的設計允許外部攻擊者通過猜測父賬戶的ID,直接將XSS有效載荷注入到父母賬戶的網頁上。這還可能會將用戶重定向到廣告頁面、進行其他漏洞利用、進行惡意軟件攻擊等后果。最糟糕的是,攻擊者還可以劫持對安裝在孩子手機上的應用程序的訪問,并從受保護的設備中提取GPS坐標。
由于用戶的賬戶ID是一串很簡短的數值,因此,攻擊者只需依次對每個ID值發出阻斷異常請求,就可以在每個賬戶上使用攻擊載荷。
最糟糕的是Canopy沒有發布補丁
研究人員說,他多次通過電話和電子郵件與該公司進行聯系,但幾乎沒有得到回應,因此他決定披露這些漏洞。他補充說,為了防止兒童受到攻擊,開發商應該盡快提出修復措施。
Canopy需要對所有用戶輸入的字段進行轉義,但實際上它并沒有這樣做。在反復嘗試與供應商進行合作后,為方便其他人可以從中了解并采取相應的措施,最終決定公布這份報告 。