2011-06-22 101 views
2

今天下午,我一直在通過生成隨機字符串並將它們傳遞給Perl的eval。這些腳本是隻包含以下字符的字符串:評估隨機文本危險嗎?

+-*$_.,/\@()%=` 

是否存在統計上顯着的風險,我會破壞某些內容?

注意:我不通過它的參數,如"rm -rf /"

+0

如果「過於本地化」是關於人物的選擇,我很樂意聽到關於他人的答案。 – Tim

+0

我很感興趣的是對'___ .. @)+ $$'做什麼的解釋。 – Rob

+0

@Rob:看到[隨機輸出](http://dump.gurka.se/perl-output.txt)('say ___ .. @)+ $$'),如果你想要:) – Tim

回答

0

我的直覺說明確地回答這個問題(即以一個實際的概率)可能會最終放置一個Chaitin's constant這是一個無法估量的界限。所以這很可能不可能(數學上)回答你的問題。

如果你擔心,爲什麼不只是沙盒的Perl過程?

+0

我不擔心確切的概率。我寫關於統計顯着性的原因是,可能有一種方法可以製作一個巨大的列表,在標量上下文中進行評估並以二進制代碼形式執行該數字。這不是一個真正的風險。 – Tim

+0

@Tim,沒有確切概率的任何答案都是猜測。這不太可能做一些壞事,但不太可能?這可能是不可知的。 – bdonlan

1

從統計學家的角度來看,統計學意義上沒有。從程序員的角度來看是的。任何可以避免的風險百分比都太多了。

+0

百分比肯定很重要。 「具有統計意義」,我的意思是我不會擔心是否需要比宇宙熱量死亡更長的時間。你從程序員的角度發現了什麼風險? – Tim

+0

對不起@Tim Nordenfur。我不是一個很好的perl程序員,可以根據您提供的角色創建一個危險的陳述。但是,我認爲即使構建危險聲明的可能性非常低,我仍然會猶豫是否允許執行這樣的程序。 –

+0

你也怕隕石嗎? :)失去備份數據的10^-100風險不足以花費幾分鐘時間來構建沙箱。 – Tim

1

$!可以解析爲各種字符串,具體取決於平臺和區域設置。所以也許像

eval "$!=$$/$.,`$!`" 

有可能會惡作劇。

+0

謝謝,這很有幫助。我沒有在問題中寫出'!',但這只是我希望的反應。 – Tim

+0

沒有'!'在他的樣本字符串中。我同意,暴露於shell是一種風險,特別是因爲它暴露了一種全新的可能性語法(sh,bash,msdos等),以及與進程和文件系統的緊密鏈接。還有另外一個問題。特殊變量如$ _和$ /可能會改變遠程程序的行爲,如果事實證明這個測試是作爲一個更大的腳本的一部分運行的話。另外,如果eval發生在循環中,$ _和$ /爲狀態機提供累加器和寄存器。 //也提供正則表達式。 – DavidO

+0

@DavidO:改變包裝程序的能力絕對值得注意。除了DoS之外,任何方式都是正則表達式的漏洞嗎? – Tim