精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當(dāng)前位置:安全行業(yè)動態(tài) → 正文

濫用npm庫導(dǎo)致數(shù)據(jù)暗渡

責(zé)任編輯:editor004 |來源:企業(yè)網(wǎng)D1Net  2016-12-20 10:49:12 本文摘自:安全客

摘要:在這篇博文中,我們將介紹攻擊者是如何利用npm從開發(fā)人員的機器中泄露情報的。雖然本文展示的攻擊場景是針對npm來說明的,但類似的攻擊也可以通過其他軟件包管理器來完成,比如gradle。

我們知道,像npm這樣的程序包和依賴庫管理器通常都允許命令執(zhí)行作為構(gòu)建過程的一部分。命令執(zhí)行為開發(fā)人員帶來了一個簡單方便的機制,使得他們可以通過編寫腳本來完成構(gòu)建過程中的各種任務(wù)。例如,npm允許開發(fā)人員使用pre-install hook和post-install hook來執(zhí)行各種任務(wù)。在開始構(gòu)建之前,可以使用pre-install hook來編譯所需的本地庫。post-install hook可以用于構(gòu)建完成之后的清理工作。

在這篇博文中,我們將介紹攻擊者是如何利用npm從開發(fā)人員的機器中泄露情報的。雖然本文展示的攻擊場景是針對npm來說明的,但類似的攻擊也可以通過其他軟件包管理器來完成,比如gradle。

漏洞攻擊

為了證明數(shù)據(jù)滲漏的可行性,我們講介紹三種不同的情形。對于每種情形,攻擊者只需要取得已經(jīng)發(fā)布的npm包,然后設(shè)法讓開發(fā)人員使用npm install命令來安裝它就行了。

我們首先創(chuàng)建一個npm包,并使用package.json文件中的post-install hook來指定一個需要執(zhí)行的任務(wù)。該任務(wù)可以是shell腳本,甚至可以是另一個JavaScript程序。例如,如果我們希望在npm install命令之后運行一個shell腳本build.sh,我們可以執(zhí)行以下操作:

如果我們想要運行一個JavaScript任務(wù),假設(shè)該任務(wù)位于名為install.js的文件中,那么我們還可以將其添加到package.json并使用Node來運行它,具體如下所示:

  泄露環(huán)境變量

一旦我們獲得了在構(gòu)建過程中代表用戶執(zhí)行任務(wù)的能力,那么就可以利用它來泄露敏感信息,例如環(huán)境變量。例如,為了配置AWS CLI,需要設(shè)置以下環(huán)境變量:

如果這些環(huán)境變量在開發(fā)人員構(gòu)建node.js項目時已經(jīng)存在,那么它們可能會被上傳到受攻擊者控制的位置。為了避免引起懷疑,不要將信息轉(zhuǎn)儲到一些容易引起懷疑的IP地址或潛在的可疑域,相反,我們可以使用流行后端作為服務(wù)來存放這些信息,例如Firebase。將下面顯示的JavaScript代碼段放入install.js文件中,在構(gòu)建之后就會運行。這樣的話,它會將所有環(huán)境變量復(fù)制到Firebase數(shù)據(jù)庫。在退出進程之前,clean()方法會從系統(tǒng)中刪除原始的install.js文件。這樣做的好處是,能夠確保在開發(fā)人員的機器上完成構(gòu)建之后,不會留下任何的痕跡。

攻擊者可以監(jiān)控Firebase數(shù)據(jù)庫(https://abcde-fg-1234.firebaseio.com/),并通過捕獲的環(huán)境變量來查找包含AWS密鑰的變量:

查找包含AWS密鑰的變量

  泄漏敏感文件

如果AWS密鑰未存儲在環(huán)境變量中,攻擊者仍然可能通過其他方式來泄漏敏感信息。舉例來說,AWS配置指南建議使用?/ .aws / credentials文件來管理多個命名的配置文件。而這些命名的配置文件可能會存儲有多個AWS訪問密鑰。

由于構(gòu)建post-install任務(wù)時是以用戶的相應(yīng)權(quán)限來運行的,因此可以將文件的內(nèi)容復(fù)制到攻擊者控制之下的位置。我們可以將install.js修改為下面這樣,從而捕獲憑證文件中的敏感信息:

如果開發(fā)人員的機器上存在?/ .aws / credentials文件的話,則很可能會包含多個AWS密鑰。與前面的環(huán)境變量泄露漏洞相比,這種攻擊可能會導(dǎo)致更加敏感的信息泄漏問題。

本地權(quán)限提升

npm包還可以執(zhí)行針對底層系統(tǒng)的提權(quán)漏洞利用代碼。最近在ubuntu系統(tǒng)中發(fā)現(xiàn)的的一個漏洞(CVE-2015-1328),允許本地攻擊者利用overlayfs組件的缺陷獲取root。據(jù)報道稱:

“當(dāng)在上層文件系統(tǒng)目錄中創(chuàng)建新文件時,overlayfs文件系統(tǒng)未能正確檢查此文件的權(quán)限。而這一缺陷則可以被內(nèi)核中沒有權(quán)限的進程所利用,只要滿足該進程CONFIG_USER_NS=y及overlayfs所擁有得FS_USERNS_MOUNT標(biāo)志,即允許掛載非特權(quán)掛載空間的overlayfs。而這一條件是Ubuntu 12.04、14.04、14.10和15.04版本中的默認(rèn)配置,所以這些版本的Ubuntu系統(tǒng)都受此漏洞影響。

ovl_copy_up_ *函數(shù)未能正確檢查用戶是否有權(quán)限向upperdir目錄寫入文件。而該函數(shù)唯一檢查的是被修改文件的擁有者是否擁有向upperdir目錄寫入文件的權(quán)限。此外,當(dāng)從lowerdir目錄復(fù)制一個文件時,同時也就復(fù)制了文件元數(shù)據(jù),而并非文件屬性,例如文件擁有者被修改為了觸發(fā)copy_up_*程序的用戶。”

目前,該漏洞的利用代碼已經(jīng)被公開。該漏洞利用代碼(ofs.c)能夠在目標(biāo)機器上打開一個具有管理員權(quán)限的shell。攻擊者一旦獲得這個shell,就可以用它在系統(tǒng)中安裝永久性的后門。

我們知道,借助于npm中的post-install hook,像構(gòu)建和運行這種漏洞利用代碼這樣的事情,簡直是小菜一碟。攻擊者可以創(chuàng)建一個含有以下內(nèi)容的build.sh文件,并將其作為post-install任務(wù)來運行。

  安全影響

目前,所有流行的構(gòu)建和包管理器(gradle,maven,npm等)幾乎都允許執(zhí)行系統(tǒng)命令,因此,它們都會收到本文描述的安全漏洞的影響。就npm來說,最近發(fā)生了一次攻擊,攻擊者成功上傳了一個惡意軟件包,當(dāng)它作為node.js項目中的依賴庫添加時,會刪除開發(fā)人員的主目錄。盡管之前就有人提醒npm模塊的這種安全問題,但遺憾是的,目前似乎還沒有簡單的方法來防止這種攻擊。

像從用戶的主目錄中刪除文件這樣的直接攻擊是很容易檢測到的,通常也會引起人們的注意。然而,如果惡意行為更加隱蔽,例如本文介紹的靜默竊取信息或安裝后門這樣的攻擊,則可能更難以檢測和跟蹤。在npm上發(fā)布包是非常容易的事情,它只需要一個電子郵件驗證即可。隨著開發(fā)人員數(shù)量的增加,以及越來越常見的安裝臨時包的行為,這種安全漏洞帶來的風(fēng)險只會與日俱增。

安全對策

Build Inspector是一個用于連續(xù)集成環(huán)境的開源取證沙盒,您可以使用它來檢查CI環(huán)境。這個工具能夠監(jiān)控網(wǎng)絡(luò)活動,文件系統(tǒng)更改和運行的進程,從而更容易發(fā)現(xiàn)意外和潛在危險的活動。使用這個沙盒環(huán)境時,構(gòu)建操作將在隔離的情況下進行,從而不會影響機器。運行Build Inspector時,您將獲得構(gòu)建服務(wù)器上所有潛在危險活動的報告,您可以借此發(fā)現(xiàn)上面提到的安全隱患,從而進一步做出相應(yīng)的處理。

關(guān)鍵字:NPMlowerdir攻擊者

本文摘自:安全客

x 濫用npm庫導(dǎo)致數(shù)據(jù)暗渡 掃一掃
分享本文到朋友圈
當(dāng)前位置:安全行業(yè)動態(tài) → 正文

濫用npm庫導(dǎo)致數(shù)據(jù)暗渡

責(zé)任編輯:editor004 |來源:企業(yè)網(wǎng)D1Net  2016-12-20 10:49:12 本文摘自:安全客

摘要:在這篇博文中,我們將介紹攻擊者是如何利用npm從開發(fā)人員的機器中泄露情報的。雖然本文展示的攻擊場景是針對npm來說明的,但類似的攻擊也可以通過其他軟件包管理器來完成,比如gradle。

我們知道,像npm這樣的程序包和依賴庫管理器通常都允許命令執(zhí)行作為構(gòu)建過程的一部分。命令執(zhí)行為開發(fā)人員帶來了一個簡單方便的機制,使得他們可以通過編寫腳本來完成構(gòu)建過程中的各種任務(wù)。例如,npm允許開發(fā)人員使用pre-install hook和post-install hook來執(zhí)行各種任務(wù)。在開始構(gòu)建之前,可以使用pre-install hook來編譯所需的本地庫。post-install hook可以用于構(gòu)建完成之后的清理工作。

在這篇博文中,我們將介紹攻擊者是如何利用npm從開發(fā)人員的機器中泄露情報的。雖然本文展示的攻擊場景是針對npm來說明的,但類似的攻擊也可以通過其他軟件包管理器來完成,比如gradle。

漏洞攻擊

為了證明數(shù)據(jù)滲漏的可行性,我們講介紹三種不同的情形。對于每種情形,攻擊者只需要取得已經(jīng)發(fā)布的npm包,然后設(shè)法讓開發(fā)人員使用npm install命令來安裝它就行了。

我們首先創(chuàng)建一個npm包,并使用package.json文件中的post-install hook來指定一個需要執(zhí)行的任務(wù)。該任務(wù)可以是shell腳本,甚至可以是另一個JavaScript程序。例如,如果我們希望在npm install命令之后運行一個shell腳本build.sh,我們可以執(zhí)行以下操作:

如果我們想要運行一個JavaScript任務(wù),假設(shè)該任務(wù)位于名為install.js的文件中,那么我們還可以將其添加到package.json并使用Node來運行它,具體如下所示:

  泄露環(huán)境變量

一旦我們獲得了在構(gòu)建過程中代表用戶執(zhí)行任務(wù)的能力,那么就可以利用它來泄露敏感信息,例如環(huán)境變量。例如,為了配置AWS CLI,需要設(shè)置以下環(huán)境變量:

如果這些環(huán)境變量在開發(fā)人員構(gòu)建node.js項目時已經(jīng)存在,那么它們可能會被上傳到受攻擊者控制的位置。為了避免引起懷疑,不要將信息轉(zhuǎn)儲到一些容易引起懷疑的IP地址或潛在的可疑域,相反,我們可以使用流行后端作為服務(wù)來存放這些信息,例如Firebase。將下面顯示的JavaScript代碼段放入install.js文件中,在構(gòu)建之后就會運行。這樣的話,它會將所有環(huán)境變量復(fù)制到Firebase數(shù)據(jù)庫。在退出進程之前,clean()方法會從系統(tǒng)中刪除原始的install.js文件。這樣做的好處是,能夠確保在開發(fā)人員的機器上完成構(gòu)建之后,不會留下任何的痕跡。

攻擊者可以監(jiān)控Firebase數(shù)據(jù)庫(https://abcde-fg-1234.firebaseio.com/),并通過捕獲的環(huán)境變量來查找包含AWS密鑰的變量:

查找包含AWS密鑰的變量

  泄漏敏感文件

如果AWS密鑰未存儲在環(huán)境變量中,攻擊者仍然可能通過其他方式來泄漏敏感信息。舉例來說,AWS配置指南建議使用?/ .aws / credentials文件來管理多個命名的配置文件。而這些命名的配置文件可能會存儲有多個AWS訪問密鑰。

由于構(gòu)建post-install任務(wù)時是以用戶的相應(yīng)權(quán)限來運行的,因此可以將文件的內(nèi)容復(fù)制到攻擊者控制之下的位置。我們可以將install.js修改為下面這樣,從而捕獲憑證文件中的敏感信息:

如果開發(fā)人員的機器上存在?/ .aws / credentials文件的話,則很可能會包含多個AWS密鑰。與前面的環(huán)境變量泄露漏洞相比,這種攻擊可能會導(dǎo)致更加敏感的信息泄漏問題。

本地權(quán)限提升

npm包還可以執(zhí)行針對底層系統(tǒng)的提權(quán)漏洞利用代碼。最近在ubuntu系統(tǒng)中發(fā)現(xiàn)的的一個漏洞(CVE-2015-1328),允許本地攻擊者利用overlayfs組件的缺陷獲取root。據(jù)報道稱:

“當(dāng)在上層文件系統(tǒng)目錄中創(chuàng)建新文件時,overlayfs文件系統(tǒng)未能正確檢查此文件的權(quán)限。而這一缺陷則可以被內(nèi)核中沒有權(quán)限的進程所利用,只要滿足該進程CONFIG_USER_NS=y及overlayfs所擁有得FS_USERNS_MOUNT標(biāo)志,即允許掛載非特權(quán)掛載空間的overlayfs。而這一條件是Ubuntu 12.04、14.04、14.10和15.04版本中的默認(rèn)配置,所以這些版本的Ubuntu系統(tǒng)都受此漏洞影響。

ovl_copy_up_ *函數(shù)未能正確檢查用戶是否有權(quán)限向upperdir目錄寫入文件。而該函數(shù)唯一檢查的是被修改文件的擁有者是否擁有向upperdir目錄寫入文件的權(quán)限。此外,當(dāng)從lowerdir目錄復(fù)制一個文件時,同時也就復(fù)制了文件元數(shù)據(jù),而并非文件屬性,例如文件擁有者被修改為了觸發(fā)copy_up_*程序的用戶。”

目前,該漏洞的利用代碼已經(jīng)被公開。該漏洞利用代碼(ofs.c)能夠在目標(biāo)機器上打開一個具有管理員權(quán)限的shell。攻擊者一旦獲得這個shell,就可以用它在系統(tǒng)中安裝永久性的后門。

我們知道,借助于npm中的post-install hook,像構(gòu)建和運行這種漏洞利用代碼這樣的事情,簡直是小菜一碟。攻擊者可以創(chuàng)建一個含有以下內(nèi)容的build.sh文件,并將其作為post-install任務(wù)來運行。

  安全影響

目前,所有流行的構(gòu)建和包管理器(gradle,maven,npm等)幾乎都允許執(zhí)行系統(tǒng)命令,因此,它們都會收到本文描述的安全漏洞的影響。就npm來說,最近發(fā)生了一次攻擊,攻擊者成功上傳了一個惡意軟件包,當(dāng)它作為node.js項目中的依賴庫添加時,會刪除開發(fā)人員的主目錄。盡管之前就有人提醒npm模塊的這種安全問題,但遺憾是的,目前似乎還沒有簡單的方法來防止這種攻擊。

像從用戶的主目錄中刪除文件這樣的直接攻擊是很容易檢測到的,通常也會引起人們的注意。然而,如果惡意行為更加隱蔽,例如本文介紹的靜默竊取信息或安裝后門這樣的攻擊,則可能更難以檢測和跟蹤。在npm上發(fā)布包是非常容易的事情,它只需要一個電子郵件驗證即可。隨著開發(fā)人員數(shù)量的增加,以及越來越常見的安裝臨時包的行為,這種安全漏洞帶來的風(fēng)險只會與日俱增。

安全對策

Build Inspector是一個用于連續(xù)集成環(huán)境的開源取證沙盒,您可以使用它來檢查CI環(huán)境。這個工具能夠監(jiān)控網(wǎng)絡(luò)活動,文件系統(tǒng)更改和運行的進程,從而更容易發(fā)現(xiàn)意外和潛在危險的活動。使用這個沙盒環(huán)境時,構(gòu)建操作將在隔離的情況下進行,從而不會影響機器。運行Build Inspector時,您將獲得構(gòu)建服務(wù)器上所有潛在危險活動的報告,您可以借此發(fā)現(xiàn)上面提到的安全隱患,從而進一步做出相應(yīng)的處理。

關(guān)鍵字:NPMlowerdir攻擊者

本文摘自:安全客

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號-6 京公網(wǎng)安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 色达县| 邯郸县| 桑日县| 鄢陵县| 沈丘县| 久治县| 大同县| 武川县| 河津市| 邯郸县| 尉氏县| 三门峡市| 高陵县| 西华县| 常州市| 涞水县| 乡城县| 台山市| 浦东新区| 清水河县| 盐源县| 巴马| 丹江口市| 晴隆县| 台东县| 承德县| 潍坊市| 新蔡县| 呼伦贝尔市| 徐闻县| 文成县| 调兵山市| 平定县| 成安县| 桐柏县| 新竹市| 陵川县| 景谷| 黄陵县| 阿勒泰市| 蛟河市|