On 8/12/26 11:30, Baoquan He wrote:
On 08/11/26 at 07:52pm, Jan Sebastian Götte wrote:
.....snip...
@@ -142,6 +170,7 @@ void __noclone __crash_kexec(struct pt_regs *regs)
                        crash_save_vmcoreinfo();
                        machine_crash_shutdown(&fixed_regs);
                        crash_cma_clear_pending_dma();
+                       crash_wipe_secrets();

I remember when crash_cma added this, we argued a lot about the risk,
finally it's added in with an added note to tell it's an opt-in feature
and risky. I don't know if it opens a Pandora box, I think anything
wanted being here need prove anything else has been tried, and the thing
is very very important. If we don't guard the door well, one day one guy
cold come and said I need ask Oracle database to do some transactions
before juming into kdump kernel because the actions will save billions
of dollar.

I see your point.

And what does security people say about this wiping? Is it very
important information and wiping is mandotary? There's no any other way
to wipe it or pollute it, no way in kdump kernel?

I'm doing both - my kdump kernel does a linear memzero of all of DRAM. However, that's too slow - it takes several hundred milliseconds, and I want these cryptographic keys gone within no more than 10 ms.

Doing this in the original kernel is cleanest I think, because to do a targeted erase in the kdump kernel, that kernel would have to know all the original kernel's symbols, and it would have to forensically reconstruct it's memory content similar to the crash utility. I think that's too complex and error-prone to do in this use case.

I can imagine one alternative way to approach this, tell me what you think: Instead of registering wipe handlers that memzero places on panic, I could put an optional registry of (addr, len) descriptors into crashkernel memory that the original kernel populates with the PAs of buffers to clear ahead of time. Then the kdump kernel could do the actual memzero. This would remove all code from the actual kdump path here. The registry could be made per-core to avoid locks.

I noticed it's
happening on en embedded target, is it possible you do this on your
embedded kernel tree, but not mainline tree?

I could keep it in a vendor tree, but I think the functionality is useful beyond my particular use case.

Reply via email to