Python 新功能:或?qū)⒃试S安全工具查看運(yùn)行時(shí)操作
針對(duì) Python 編程語(yǔ)言的新功能提議之一是希望為運(yùn)行時(shí)添加“透明度”,并讓安全和審計(jì)工具查看 Python 何時(shí)可能運(yùn)行潛在危險(xiǎn)的操作。
在當(dāng)前的形式下,Python 不允許安全工具查看運(yùn)行時(shí)正在執(zhí)行的操作。 除非這些操作之一產(chǎn)生可能引起警報(bào)的特定錯(cuò)誤,否則安全和審計(jì)工具就會(huì)視而不見(jiàn),攻擊者可能正在使用 Python 在系統(tǒng)上執(zhí)行惡意操作。
PEP-551 為 Python 提出了兩個(gè)新的 API
但在 Python Enhancement Proposal 551(PEP-551)中,Python 核心開(kāi)發(fā)人員 Steve Dower 已經(jīng)提出了兩個(gè)新的 API,這些 API 將使安全工具能夠在 Python 執(zhí)行潛在危險(xiǎn)操作時(shí)進(jìn)行檢測(cè)。
第一個(gè)是 Audit Hook API,它可以引發(fā)關(guān)于某些類(lèi)型的 Python 操作的警告消息。
“這些操作通常在 Python 運(yùn)行時(shí)或標(biāo)準(zhǔn)庫(kù)的深處,比如動(dòng)態(tài)代碼編譯,模塊導(dǎo)入,DNS 解析或使用某些模塊,如 ctypes,”Dower 說(shuō)。
安全或?qū)徲?jì)工具可能會(huì)使用這些消息作為可疑事件的警告標(biāo)志,并在真正造成危害之前標(biāo)記或阻止 Python 進(jìn)程繼續(xù)。
第二種,驗(yàn)證 Open Hook API,這是是一種讓 Python 運(yùn)行時(shí)允許執(zhí)行或篡改哪些文件的機(jī)制。 道爾解釋道:
大多數(shù)操作系統(tǒng)都有一種機(jī)制來(lái)區(qū)分可以執(zhí)行的文件和不可執(zhí)行的文件。 例如,這可能是權(quán)限字段中的執(zhí)行位,或者是文件內(nèi)容的驗(yàn)證散列,以檢測(cè)潛在的代碼篡改。 這些是防止執(zhí)行未被批準(zhǔn)用于給定環(huán)境的數(shù)據(jù)或代碼的重要安全機(jī)制。 目前,Python 在啟動(dòng)腳本或?qū)肽K時(shí)無(wú)法與這些集成。
Python 的性能影響可以忽略不計(jì)
道爾去年8月份提出了 PEP-551。 早期的測(cè)試表明,添加這兩個(gè) API 所帶來(lái)的性能影響可以忽略不計(jì),“絕大多數(shù)基準(zhǔn)測(cè)試顯示速度在 1.05 倍之間”的結(jié)果。
最初的計(jì)劃是讓 PEP-551 搭載 Python 3.7,并計(jì)劃于 2018 年 6 月中旬發(fā)布,但根據(jù)下個(gè)月發(fā)布的新功能列表,該提案沒(méi)有進(jìn)行最終削減。 但這并不意味著 PEP-551 不會(huì)在未來(lái)版本的 Python 中提供。