RE: F36 Change: DIGLIM (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> From: David Sastre [mailto:d.sastre.medina@xxxxxxxxx]
> Sent: Saturday, February 19, 2022 11:56 PM
> (Secure Boot is concerned only with verifying the trustworthiness of the
> bootloader.
> From https://man7.org/linux/man-pages/man7/kernel_lockdown.7.html:
> The Kernel Lockdown feature is designed to prevent both direct
> and indirect access to a running kernel image, attempting to
> protect against unauthorized modification of the kernel image and
> to prevent access to security and cryptographic data located in
> kernel memory, whilst still permitting driver modules to be
> loaded.
> eBPF does not require loading additional kernel modules, perhaps you were
> thinking of systemtap?,
> nor does it need to modify the kernel image.)

Thanks David.

If I remember correctly, there could be some limitations
if the Lockdown LSM is in confidentiality mode. By default
in Fedora it is in integrity mode.

I tried to run my eBPF in a system with secure boot enabled
and it seems to work (there are some issues with how
gnome-shell uses mmap(), I will fix them).

Roberto

HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063
Managing Director: Li Peng, Zhong Ronghua

> To verify this works on current stable, you can try:
> 
> # hostnamectl | rg -i cpe
>      CPE OS Name: cpe:/o:fedoraproject:fedora:35
> 
> 
> # bootctl | rg -i secure.*boot
> systemd-boot not installed in ESP.
>   Secure Boot: enabled
> 
> 
> # cat /sys/kernel/security/lockdown
> none [integrity] confidentiality
> 
> 
> # rpm -q bcc-tools
> bcc-tools-0.21.0-1.fc35.x86_64
> 
> 
> # rpm -ql bcc-tools | rg bitesize
> /usr/share/bcc/tools/bitesize
> /usr/share/bcc/tools/doc/bitesize_example.txt
> /usr/share/man/man8/bcc-bitesize.8.gz
> 
> 
> # /usr/share/bcc/tools/bitesize
> Tracing block I/O... Hit Ctrl-C to end.
> ^C
> Process Name = dmcrypt_write/2
>      Kbytes              : count     distribution
>          0 -> 1          : 0        |                                        |
>          2 -> 3          : 0        |                                        |
>          4 -> 7          : 195      |**********                              |
>          8 -> 15         : 42       |**                                      |
>         16 -> 31         : 756      |****************************************|
>         32 -> 63         : 166      |********                                |
>         64 -> 127        : 24       |*                                       |
>        128 -> 255        : 5        |                                        |
>        256 -> 511        : 99       |*****                                   |
> ...
> 
> 
> The bcc-tools package is a collection of eBPF programs
> (https://github.com/iovisor/bcc).
> 
> 
> Alternatively, the much simpler
> https://gist.github.com/lizrice/47ad44a15cce912502f8667a403f5649#file-
> hello_world-py
> 
> (requires python3-bcc):
> 
> # cat << 'EOF' > hi.py
> #!/usr/bin/python
> from bcc import BPF
> 
> prog = """
> int hello(void *ctx) {
>     bpf_trace_printk("Hello world\\n");
>     return 0;
> }
> """
> 
> b = BPF(text=prog)
> clone = b.get_syscall_fnname("clone")
> b.attach_kprobe(event=clone, fn_name="hello")
> b.trace_print()
> > EOF
> 
> 
> 
> # strace -e bpf ./hi.py
> 
> 
> Hope that helps.
> 
> 
> 
> On Fri, Feb 18, 2022 at 6:50 PM Fabio Valentini <decathorpe@xxxxxxxxx
> <mailto:decathorpe@xxxxxxxxx> > wrote:
> 
> 
> 	On Fri, Feb 18, 2022 at 4:27 PM Roberto Sassu via devel
> 	<devel@xxxxxxxxxxxxxxxxxxxxxxx <mailto:devel@xxxxxxxxxxxxxxxxxxxxxxx>
> > wrote:
> 	>
> 	> Hi everyone
> 	>
> 	> I have very exciting news to share.
> 	>
> 	> Given the difficulty to have the DIGLIM kernel patches
> 	> accepted, I checked if I could achieve the same goals
> 	> with an eBPF program.
> 	>
> 	> I focused only on the functionality side, it is probably
> 	> required some support from the kernel to have the
> 	> same security guarantees of an LSM integrated in the
> 	> kernel.
> 	>
> 	> But, at least for the functionality part, I would say that
> 	> thanks to the very extensive support from eBPF, I managed
> 	> to almost match what I provided with the kernel patches
> 	> (at least for appraisal, not for measurement).
> 	>
> 	> This is the repo with the code:
> 	>
> 	> https://github.com/robertosassu/diglim-ebpf
> 	>
> 	> and the Copr project with binary packages:
> 	>
> 	> https://copr.fedorainfracloud.org/coprs/robertosassu/DIGLIM-eBPF/
> 	>
> 	> Unfortunately, due to a feature introduced only recently
> 	> (allow sleepable programs to use the inode map), it will
> 	> work only with Fedora 36. Probably, commit 0fe4b381a59e
> 	> ("bpf: Allow bpf_local_storage to be used by sleepable programs)
> 	> applied to the kernel 5.16 would be sufficient to use
> 	> DIGLIM eBPF also in Fedora 35.
> 	>
> 	> Unlike the previous version of DIGLIM, this one does not
> 	> have any dependency (I just had to add rpmplugin.h in
> 	> the rpm-devel package).
> 	>
> 	> It can be configured with two simple commands (please
> 	> do it in a testing VM):
> 	>
> 	> # dnf copr enable robertosassu/DIGLIM-eBPF
> 	> # diglim_setup.sh install --default
> 	>
> 	> After reboot, the kernel will refuse to execute anything
> 	> that is not in a package. Updating a package or installing
> 	> new ones is supported, DIGLIM eBPF takes care of loading
> 	> the new reference values.
> 	>
> 	> Adding custom software is also possible, as shown with the
> 	> following commands:
> 	>
> 	> # ./script.sh
> 	> -bash: ./script.sh: /bin/bash: bad interpreter: Operation not permitted
> 	> # compact_gen -d /etc/digest_lists -i script.sh
> 	> # diglim_user_client -o add -p /etc/digest_lists/0-file_list-compact-
> script.sh
> 	> Digest list command successful
> 	> # ./script.sh
> 	> Hello world!
> 	>
> 	> I know it is too late for Fedora 36, but I hope you could
> 	> consider this version for Fedora 37. In the meantime, I will
> 	> work on the security guarantees (signature verification of
> 	> the digest lists, avoid unplugging of the LSM).
> 	>
> 	> Any comment or suggestion is very appreciated!
> 	>
> 	> Thanks
> 	>
> 	> Roberto
> 
> 	I seem to remember discussions about eBPF programs having certain
> 	limitations (related to kernel Lockdown patches and Secure Boot).
> 	Has this changed? Is running eBPF programs in stock Fedora (with
> 	Secure Boot enabled) possible now?
> 
> 	Fabio
> 	_______________________________________________
> 	devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
> <mailto:devel@xxxxxxxxxxxxxxxxxxxxxxx>
> 	To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
> <mailto:devel-leave@xxxxxxxxxxxxxxxxxxxxxxx>
> 	Fedora Code of Conduct: https://docs.fedoraproject.org/en-
> US/project/code-of-conduct/
> 	List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
> 	List Archives:
> https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
> 	Do not reply to spam on the list, report it: https://pagure.io/fedora-
> infrastructure
> 

_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux