簡體   English   中英

java堆轉儲中的敏感數據

[英]Sensitive data in java heap dumps

我編寫的軟件可以處理各種敏感信息,例如電子郵件地址、密碼和信用卡號。

當我們遇到內存問題時,最好讓應用程序寫入堆轉儲。 問題是,如果一個線程恰好在該區域工作,堆轉儲可能包含純文本形式的敏感信息……當我們在其他任何地方花費如此巨大的精力對其進行加密時,我們真的不希望將其寫入磁盤。

有沒有辦法解決這個問題,比如讓 JVM 寫一個加密的轉儲?

我一直在考慮在VM外面處理這個問題。 一種天真的方法可能是讓jvm將轉儲寫入加密的環回設備。 當然,這並不是完全安全的,因為任何具有root訪問權限的人都可以訪問掛載點,但這是我期望的那種解決方案。 我可能會看到我是否可以設置jvm最終寫入的FIFO。 我知道vm將使用的文件名,所以這可能會起作用,這取決於vm如何應對(稍后:這不起作用.JVM抱怨“文件存在”)

使用char數組只能緩解問題,但仍有可能數組在轉儲時包含一些純文本。

簡短的回答並不完全。 在某些時候,您必須使用明文中的數據來使用它,並且在垃圾收集的VM中,您無法控制何時從內存中物理移除對象。 將風險降至最低的唯一真正策略是盡快刪除對未加密機密數據的所有引用。 它不能保證不會在內存轉儲中寫入任何機密數據,但如果有人能夠這樣做,那么他們就可以獲得關鍵信息。

Paypal 最近發布了一個工具,das 從堆轉儲中刪除敏感數據:

https://github.com/paypal/heap-dump-tool

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM