亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Python常見安全漏洞及修復(fù)方法

        2018-09-10 06:14:13姜唐
        計算機與網(wǎng)絡(luò) 2018年23期
        關(guān)鍵詞:序列化調(diào)用漏洞

        姜唐

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

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

        1.輸入注入

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

        SQL注入是直接編寫SQL查詢(而非使用ORM)時將字符串與變量混合。我讀過很多代碼,其中“引號字符轉(zhuǎn)義”被認為是一種修復(fù),但事實并非如此,可以通過SQL注入所有可能發(fā)生的方式。

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

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

        修復(fù)方法:

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

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

        2.解析XML

        如果應(yīng)用程序加載并解析XML文件,可能你正在使用一個XML標準庫模塊。有一些針對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)存。

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

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

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

        修復(fù)方法:

        直接用defusedxml替換標準庫模塊。它增加了針對這類攻擊的安全防護。

        3. Assert語句

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

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

        修復(fù)方法:

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

        4.計時攻擊

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

        但是,如果應(yīng)用程序有提示輸入密碼的命令行,攻擊者就可以編寫一個簡單的腳本來計算將其值與實際密碼進行比較所需的時間。

        修復(fù)方法:

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

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

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

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

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

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

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

        修復(fù)方法:

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

        6.臨時文件

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

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

        修復(fù)方法:

        如果需要生成臨時文件,請使用tempfile模塊并使用mkstemp。

        7.使用yaml.load

        引用PyYAML的說明文檔:

        警告:使用不可信源的數(shù)據(jù)調(diào)用yaml.load是不安全的!yaml.load和pickle.load一樣強大,所以可以調(diào)用任何Python函數(shù)。

        在流行的Python項目Ansible中找到一個例子,可以將此值提供給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ù)方法,該方法返回一個字符串、或一個元組。攻擊者可以使用它來引用其中一個子進程模塊,在主機上運行任意命令。

        這有一個在Python2中pickle一個類并打開shell的例子。更多利用pickle漏洞的方法請看這個。

        修復(fù)方法:

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

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

        大多數(shù)可移植操作系統(tǒng)都自帶Python2,通常還是舊版本。由于“Python”,即CPython是用C語言編寫的,所以Python解釋器本身存在漏洞。C語言中常見的安全問題與內(nèi)存分配有關(guān),所以存在緩沖區(qū)溢出錯誤。

        多年來CPython出現(xiàn)了多個溢出漏洞,每個漏洞都在后續(xù)版本中進行了修復(fù)。也就是說,如果你修補了Python本身的漏洞,你就是安全的。

        修復(fù)方法:

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

        10.不修補依賴包的漏洞

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

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

        修復(fù)方法:

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

        猜你喜歡
        序列化調(diào)用漏洞
        漏洞
        如何建構(gòu)序列化閱讀教學(xué)
        甘肅教育(2020年14期)2020-09-11 07:58:36
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        三明:“兩票制”堵住加價漏洞
        漏洞在哪兒
        兒童時代(2016年6期)2016-09-14 04:54:43
        Java 反序列化漏洞研究
        高鐵急救應(yīng)補齊三漏洞
        作文訓(xùn)練微格化、序列化初探
        語文知識(2015年12期)2015-02-28 22:02:15
        日韩精品国产一区在线| 啪啪无码人妻丰满熟妇| 国产高潮刺激叫喊视频| 麻豆国产AV网站| 免费观看日本一区二区三区| 亚洲国产精品日本无码网站 | 在线看高清中文字幕一区| 激情综合婷婷色五月蜜桃| 国产精品亚洲一区二区三区在线| 四虎精品免费永久在线| 一本色道久久综合亚州精品| 极品尤物人妻堕落沉沦| 中文字幕免费不卡二区| 无码成人片一区二区三区| 亚洲一级天堂作爱av| 国产性自爱拍偷在在线播放| 欧美日韩不卡合集视频| 9久9久女女热精品视频免费观看| 小黄片免费在线播放观看| 精品福利一区二区三区免费视频| 国产三级在线观看播放视频| 九九在线精品视频xxx| 亚洲成熟中老妇女视频| 亚洲av永久无码精品漫画| 性饥渴艳妇性色生活片在线播放| jiZZ国产在线女人水多| 中文字幕一区在线直播| 农村欧美丰满熟妇xxxx| 亚洲AV永久青草无码性色av| 亚洲一区视频中文字幕| 欧美xxxxx在线观看| 丰满人妻熟妇乱又伦精品视| 国产精品天干天干在线观蜜臀| 阴唇两边有点白是怎么回事| 国产喷水1区2区3区咪咪爱av| 日日摸夜夜欧美一区二区| 日本高清一区在线你懂得 | 亚洲国产一区一区毛片a| 亚洲欧美色一区二区三区| 国产福利午夜波多野结衣| 久草视频在线视频手机在线观看 |