public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Andrew Fish" <afish@apple.com>
To: devel@edk2.groups.io, mhaeuser@posteo.de
Cc: pedro.falcato@gmail.com
Subject: Re: [edk2-devel] Question about UEFI, AddressSanitizer and MMU mappings
Date: Fri, 25 Mar 2022 11:42:03 -0700	[thread overview]
Message-ID: <CA872A9A-5982-4F61-9CDB-12F3226B39EE@apple.com> (raw)
In-Reply-To: <765AD9BF-54CE-4161-B7D8-BF55A333975F@posteo.de>

[-- Attachment #1: Type: text/plain, Size: 2350 bytes --]

>From an UEFI point of view if you own the memory you can do what you want with it. The UEFI Spec does not deal with paging but the PI Spec does have abstractions for how the CPU operates via the CPU ARCH Protocol [1].

So for example if you want to write protect the page tables, add guard page, or add a stack guard all that is OK and exists today [2].
PcdNullPointerDetectionPropertyMask
PcdInitValueInTempStack
PcdHeapGuardPageType
PcdHeapGuardPoolType
PcdHeapGuardPropertyMask
PcdHeapGuardPageType
PcdHeapGuardPropertyMask
PcdCpuStackGuard

Does Asan just need to force page faults? Or does it want to make virtual address mappings? 

If someone wants to work on ASan (or any of the other sanitizers) I’m happy to volunteer to consult. 

[1] https://github.com/tianocore/edk2/blob/master/MdePkg/Include/Protocol/Cpu.h#L221
[2] https://github.com/tianocore/edk2/blob/master/MdeModulePkg/MdeModulePkg.dec#L979

Thanks,

Andrew Fish

> On Mar 25, 2022, at 2:07 AM, Marvin Häuser <mhaeuser@posteo.de> wrote:
> 
> Hey Pedro,
> 
> ASan is somewhat listed for „LLVM Optimizations“.
> A quick and dirty reference for UEFI UBSan can be found here: https://github.com/acidanthera/OpenCorePkg/tree/master/Library/OcGuardLib <https://github.com/acidanthera/OpenCorePkg/tree/master/Library/OcGuardLib>
> 
> I don’t think you need to strictly adhere to the UEFI spec for debug tooling. I cannot check the code now, but I can imagine things like ConvertPointer() will not be happy about non-identity-mapping OOTB. But the issues I can think of should be fairly easy to resolve.
> 
> Best regards,
> Marvin
> 
>> On 24. Mar 2022, at 23:32, Pedro Falcato <pedro.falcato@gmail.com> wrote:
>> 
>> 
>> Hi!
>> 
>> I've been thinking about adding sanitizer support (UBSan and KASAN), like coreboot already has, to the wiki's Tasks for the upcoming GSoC, but I'm a bit confused by something.
>> Is there anything in the UEFI spec that stops us from doing non-identity memory mappings? I know it specifies the need for the identity mappings (in the architectures where it requires the MMU being enabled), but nowhere do I see anything about the other parts of the address space.
>> Of course, UEFI supporting AddressSanitizer would be kind of dependent on fancier memory mappings.
>> 
>> Thanks,
>> Pedro
> 


[-- Attachment #2: Type: text/html, Size: 10344 bytes --]

  reply	other threads:[~2022-03-25 18:42 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-24 22:32 Question about UEFI, AddressSanitizer and MMU mappings Pedro Falcato
2022-03-25  9:07 ` [edk2-devel] " Marvin Häuser
2022-03-25 18:42   ` Andrew Fish [this message]
2022-03-25 20:47     ` Pedro Falcato
2022-03-26 18:30       ` Vitaly Cheptsov
2022-03-28 11:32       ` Steven Shi
2022-03-28 16:30         ` Pedro Falcato
2022-03-29 11:58           ` Steven Shi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA872A9A-5982-4F61-9CDB-12F3226B39EE@apple.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox