Thread (25 messages) flat view 25 messages, 6 authors, 10h ago

Re: [PATCH v2 01/13] kexec: add CRASH_WIPE_SECRETS to wipe secrets before kdump

From: Baoquan He <baoquan.he@linux.dev>
Date: 2026-08-17 08:25:21
Also in: dm-devel, kexec, keyrings, linux-crypto, linux-doc, linux-fscrypt, linux-fsdevel, linux-integrity, linux-mm, linux-nfs, linux-nvme, lkml, netdev

On 08/17/26 at 03:38pm, Baoquan He wrote:
On 08/16/26 at 02:13pm, Lukas Wunner wrote:
quoted
On Wed, Aug 12, 2026 at 12:08:39PM +0200, Jan Sebastian Götte wrote:
quoted
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.
If this has to be done in kernel, your (addr, len) registry idea is a
better direction, and we can make it a bit more general.

Instead of a secrets-only wipe registry, consider a small "crash memory
region" table with an action per entry:

enum crash_region_action {
    CRASH_REG_WIPE,   /* memzero, then dump normally (leave zeros) */
    CRASH_REG_SKIP,   /* do not include in the vmcore at all */
};

struct crash_region {
    phys_addr_t addr;
    size_t      len;
    enum crash_region_action action;
};

void crash_reg_add(phys_addr_t addr, size_t len,
                   enum crash_region_action action);
void crash_reg_del(phys_addr_t addr, size_t len);

Two actions because the use cases differ:

- WIPE is what you need: zero the secret, 
- SKIP covers things people do not want in the dump at all
   — Registering as SKIP reduce dump size. I have been considering how
     to shrink vmcore size on some big system with huge memory, the
     vmcore size usually is several or tens of GB.

If this is OK to you, you can start a regiestry table
infrastructure with wiping secrets, we can add SKIP later and plus some
driver used memory.

I am not sure if it's satisfactory, but you can give it a shot to show
what it looks like.

Thanks
Baoquan
Since there are a lot of security expert in CC, I am wondering what's
the risk if we wipe secrets during dumping. System is located in
user's place, and vmcore is dumped and collected in user's place. If we
filter out secrets memory when we dumping, what could be leaked out?
quoted
Or create a dedicated mempool from which all sensitive data is allocated,
then call mempool_free_bulk() on kexec to poison everything in that pool?

Thanks,

Lukas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help