This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Mach".

The branch, master has been updated
       via  b46c2dfa327804bd0f8c6ef630608bbf749bf2b5 (commit)
       via  874e8419e428b8fd96924beb8d757b27311d410a (commit)
       via  cb2b448ac1e8574e7fefffc4b153f2fa2bea63c7 (commit)
       via  47cc33e11b6867a507fbb23ba127c451b7f3c1ac (commit)
       via  ec7c3b52480155cc5a090e011ec40a7b7ef49fb5 (commit)
       via  c5fca45353505c70f4d75482399beb2965e7615f (commit)
       via  c3ad53fdc77940fc18243d9c9337edba237399dd (commit)
       via  e77ba1309f4ab284ca0c43f7c8bad46f01f5960c (commit)
      from  749d77d9d2ad6f645d27661d44929e308b6607eb (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit b46c2dfa327804bd0f8c6ef630608bbf749bf2b5
Author: Samuel Thibault <[email protected]>
Date:   Thu Sep 10 02:50:47 2026 +0200

    bpf: Avoid leaking memory content

commit 874e8419e428b8fd96924beb8d757b27311d410a
Author: Denis Ovsienko <[email protected]>
Date:   Thu Sep 10 02:50:28 2026 +0200

    For "lsh" and "rsh" guard "#k" as well.
    
    "lsh x" and "rsh x" in BPF space produce an undefined behaviour in C
    space if X > 31 and commit db833b9 prevents exactly that by adding
    guards to the BPF interpreter.  "lsh #k" and "rsh #k" are a case of the
    same problem, except the value is immediate.  Although in programs that
    have been generated by libpcap these instructions never have k > 31, in
    programs that come from an external source via pcap_offline_filter() or
    [deprecated] bpf_filter() 'k' can have any value.  The validator does
    not catch that even if in use, but UBSan eventually does in the
    interpreter:
    
    bpf_filter.c:455:6: runtime error: shift exponent 32 is too large for
    32-bit type 'unsigned int'
    bpf_filter.c:459:6: runtime error: shift exponent 32 is too large for
    32-bit type 'unsigned int'
    
    Add the missing guards to the validator and the interpreter to fix the
    remaining part of the problem.

commit cb2b448ac1e8574e7fefffc4b153f2fa2bea63c7
Author: Denis Ovsienko <[email protected]>
Date:   Thu Sep 10 02:50:10 2026 +0200

    CVE-2026-6244: Avoid division by zero via pcap_offline_filter().
    
    The current revision of pcapint_filter_with_aux_data() for "div x" and
    "mod x" correctly rejects the packet if X is zero, but for "div #k" and
    "mod #k" it assumes that k is never zero.  This holds for programs that
    have been generated or validated by libpcap.
    
    However, this does not necessarily hold for programs that come from an
    external source via pcap_offline_filter() or [deprecated] bpf_filter()
    and have not been explicitly validated.  If the interpreter executes
    such a program, it can attempt a division by zero, which will typically
    terminate the process via SIGFPE.
    
    To fix this problem, in pcapint_filter_with_aux_data() treat "div #k"
    and "mod #k" the same way as "div x" and "mod x".

commit 47cc33e11b6867a507fbb23ba127c451b7f3c1ac
Author: Denis Ovsienko <[email protected]>
Date:   Thu Sep 10 02:49:49 2026 +0200

    CVE-2026-0799: Access M[] safely in the BPF interpreter.
    
    Include Security identified and reported this problem as a potential
    vulnerability in 2018 (case reference "I7").  Their work was sponsored
    by Mozilla under the Secure Open Source program.  The vulnerability has
    been independently confirmed only recently.
    
    The current revision of pcapint_filter_with_aux_data() can, but does not
    check whether a scratch memory register index is valid in the "ld M[k]",
    "ldx M[k]", "st M[k]" and "stx M[k]" BPF instructions, and assumes this
    is always the case.  This holds for programs that have been generated or
    validated by libpcap.
    
    However, this does not necessarily hold for programs that come via
    pcap_offline_filter() or [deprecated] bpf_filter() from an external
    source and have not been explicitly validated.  If the interpreter
    executes such a program with an invalid index, it will read/write the
    process memory at arbitrary locations starting at the current stack
    frame.  Depending on the address, the memory layout and the OS, this can
    result in stack buffer overflow, SIGSEGV, SIGBUS or other effects.  To
    fix this, in the interpreter reject the packet if the index is invalid.

commit ec7c3b52480155cc5a090e011ec40a7b7ef49fb5
Author: Guy Harris <[email protected]>
Date:   Thu Sep 10 02:49:15 2026 +0200

    Handle negation in a way that doesn't upset compilers or UBSan.
    
    Most BPF arithmetic is unsigned, but negation can't be unsigned;
    respecify it as subtracting the value from 0U, so that 1) we don't get
    compiler warnings about negating an unsigned value and 2) don't get
    UBSan warnings about the result of negating 0x80000000 being undefined.
    
    Credit to OSS-Fuzz for finding these issues.

commit c5fca45353505c70f4d75482399beb2965e7615f
Author: Guy Harris <[email protected]>
Date:   Thu Sep 10 02:48:49 2026 +0200

    Fix the semantics of BPF_LSH and BPF_RSH for shifts >= 32 bits.
    
    Some processors treat shifts greater than the width of the shifted
    operand as setting the destination to 0, some others treat it as a shift
    modulo the width.
    
    C says it's undefined, and most if not all implementations make it work
    the way the target processor works.
    
    We treat it as setting the destination to 0, regardless of how the
    processor on which we're running works.
    
    Credit to OSS-Fuzz for finding this issue.

commit c3ad53fdc77940fc18243d9c9337edba237399dd
Author: Guy Harris <[email protected]>
Date:   Thu Sep 10 02:48:23 2026 +0200

    Squelch warnings for negating an unsigned value.

commit e77ba1309f4ab284ca0c43f7c8bad46f01f5960c
Author: Guy Harris <[email protected]>
Date:   Thu Sep 10 02:47:41 2026 +0200

    Support mod and XOR operators.
    
    Same opcodes as on Linux.

-----------------------------------------------------------------------

Summary of changes:
 device/net_io.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 59 insertions(+), 7 deletions(-)


hooks/post-receive
-- 
GNU Mach

Reply via email to