2011-06-17 49 views
3

所以我一直在想是否有辦法發送一個XML,使XML包含的代碼(字節碼)將被JVM無意中執行。我正在使用java,所以我認爲未編譯的代碼將無法工作。我想我需要在XML中插入字節碼來欺騙JVM?我想嘗試確保我構建的Web服務是安全的。我正在使用JAXB進行xml編組解碼和Jersey作爲Web服務處理程序。爲了有害的目的在XML中注入Java字節碼

回答

4

無意中?我不這麼認爲。

JAXB marshaller將要將XML值反序列化爲給定對象的狀態,但該類及其行爲將由您決定。我沒有看到在XML中發送原始字節碼,並做了任何有害的事情。

您可以發送一個JSON對象,您的Java對象可以使用Rhino執行,但這不是無意的。

您的服務可能存在其他安全問題,但Java字節碼注入攻擊不是其中之一。

無論如何,您應該在綁定之前驗證發送給您的所有數據。

2

關於唯一與xml相關的漏洞(我知道)是「外部實體」,你可以在here上閱讀。很確定這些日子裏jdk的默認外部實體處理被禁用了。

1

XML是數據,任何收件人都不會嘗試執行它。

但是當然,一些XML詞彙表使用這些數據來包含您可以認爲的執行操作的指令,然後收件人可能會被愚弄到執行不適當的操作,您可能會認爲這是一個安全問題。此漏洞不在XML級別,它處於應用程序協議(詞彙表)級別。攻擊將不得不使用在本協議中有意義的指令,這比字節碼級別的東西更像是<employee action="delete"/>