[Mono-bugs] [Bug 44848][Wis] Changed - Zeroize data upon GC collect
bugzilla-daemon@rocky.ximian.com
bugzilla-daemon@rocky.ximian.com
Tue, 17 Jun 2003 10:18:28 -0400 (EDT)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by lupus@ximian.com.
http://bugzilla.ximian.com/show_bug.cgi?id=44848
--- shadow/44848 Sun Jun 15 15:36:57 2003
+++ shadow/44848.tmp.3439 Tue Jun 17 10:18:28 2003
@@ -1,13 +1,13 @@
Bug#: 44848
Product: Mono/Runtime
Version: unspecified
OS: All
OS Details:
-Status: NEW
-Resolution:
+Status: RESOLVED
+Resolution: WONTFIX
Severity: Unknown
Priority: Wishlist
Component: misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: spouliot@videotron.ca
QAContact: mono-bugs@ximian.com
@@ -46,6 +46,22 @@
GC.MarkSensitiveData (object o) which would mark an object as
"sensitive", meaning that when it was deallocated that it would
automatically zeroized. Then, we could call GC.Collect () in the place
where the api needs to zeroize sensitive data. This method would have
the advantage that only data that was marked as sensitive would be
zeroized, meaning that the performance hit would be even smaller.
+
+------- Additional Comments From lupus@ximian.com 2003-06-17 10:18 -------
+zeroing data on collect would have a huge performance impact.
+There's more: doing it on collect means a lot of time may pass with
+the sensitive data still in memory, possibly until program termination.
+So I don't how it would help. You can get the same effect by storing
+the sensitive data in an object those class defines a destructor that
+clears the data: this at least affects the performance of the security
+code only and not of all the runtime. The real solution is to clear
+the data as soon as possible manually (or with the Dispose()/using
+pattern) and never ever using strings to hold sensitive info, since
+strings are immutabled, they can't be cleared. Manual zeroing requires
+you know where the sensitive data lifetime and that you don't pass
+around references to it to unknown code: I think this is a fair
+assumption to make in code where sensitive data is used.
+