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