[英]Is this a safe suid/capability wrapper for (Python) scripts?
(注意:我考慮過Linux,但該問題可能適用於其他平台。)
問題: Linux在#上不執行suid! 腳本也不會激活腳本上的“ Linux功能”。
為什么我們有這個問題? 因為在內核解釋程序安裝過程中運行腳本,所以攻擊者可能已替換了該文件。 怎么樣? 以前受信任的啟用suid /功能的腳本文件可以位於他可以控制的目錄中(例如可以刪除不擁有的受信任文件,或者該文件實際上是他擁有的符號鏈接)。
正確的解決方案:在以下情況下,使內核允許suid / cap腳本:a)很明顯,調用者無法控制腳本文件-或-像其他幾個操作系統一樣,b)將腳本作為/ dev / fd /傳遞x,指最初由內核打開的受信任文件。
我正在尋找答案:對於無法做到這一點的內核(所有Linux),我需要一個安全的“現在”解決方案。
我有什么想法 二進制包裝程序,以安全的方式執行內核不執行的操作。
我想要
sudo的問題 :sudo並不是一個很好的包裝器,因為它不能幫助內核避免因為剛才解釋的“腳本被替換”陷阱(注意事項下的“ man sudo”這樣說)而崩潰。
basename script.py .py
或參數-o suid_capability_wrapper可能會打印大量注釋和警告,以使用戶了解以下內容:
你不想使用認領所有,任何文件-你想用它調用Python解釋器的二進制,然后告訴它開始為您問的腳本文件。
它需要做三件事:
這將為您提供一個二進制文件,該二進制文件將僅在Python下執行所有由root和suid擁有的腳本。 您只需要一個這樣的程序,而不需要每個腳本一個。 這是您的“ suidpythonrunner”。
如您所料,您必須在運行Python之前清除環境。 LD_LIBRARY_PATH
由內核處理,但是PYTHONPATH
可能是致命的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.