Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-110807

invalid read in libfreeblpriv3.so (ppc64le only)

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • None
    • rhel-10.0
    • nss
    • None
    • No
    • Low
    • rhel-security-crypto-clubs
    • None
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • ppc64le
    • None

      What were you trying to do that didn't work?

      The following happens on RHEL-10 and ppc64le only, we did not see it on RHEL-10.0.GA but we can see it on the current version of both RHEL-10.0 and RHEL-10.1 with both 3.101 and 3.112 version of nss.

       

      # mkdir nssdb
      
      # certutil -d nssdb -N --empty-password
      
      # valgrind certutil -d nssdb -A -n ca -t 'cCT,,' -a -i ca.crt
      ==22701== Memcheck, a memory error detector
      ==22701== Copyright (C) 2002-2024, and GNU GPL'd, by Julian Seward et al.
      ==22701== Using Valgrind-3.25.1 and LibVEX; rerun with -h for copyright info
      ==22701== Command: certutil -d nssdb -A -n ca -t cCT,, -a -i ca.crt
      ==22701==
      ==22701== Invalid read of size 8
      ==22701==    at 0x5795948: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x575B43F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x57AAE9F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5730D4F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5711363: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x405827B: call_init (dl-init.c:74)
      ==22701==    by 0x405827B: _dl_init (dl-init.c:121)
      ==22701==    by 0x406B667: call_dl_init (dl-open.c:504)
      ==22701==    by 0x40515DF: _dl_catch_exception (dl-catch.c:211)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:804)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:767)
      ==22701==    by 0x405153B: _dl_catch_exception (dl-catch.c:237)
      ==22701==    by 0x406D0CB: _dl_open (dl-open.c:880)
      ==22701==    by 0x4DA3A77: dlopen_doit (in /usr/lib64/glibc-hwcaps/power10/libc.so.6)
      ==22701==  Address 0x1fff0046b0 is on thread 1's stack
      ==22701==  336 bytes below stack pointer
      ==22701==
      ==22701== Invalid read of size 8
      ==22701==    at 0x579594C: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x575B43F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x57AAE9F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5730D4F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5711363: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x405827B: call_init (dl-init.c:74)
      ==22701==    by 0x405827B: _dl_init (dl-init.c:121)
      ==22701==    by 0x406B667: call_dl_init (dl-open.c:504)
      ==22701==    by 0x40515DF: _dl_catch_exception (dl-catch.c:211)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:804)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:767)
      ==22701==    by 0x405153B: _dl_catch_exception (dl-catch.c:237)
      ==22701==    by 0x406D0CB: _dl_open (dl-open.c:880)
      ==22701==    by 0x4DA3A77: dlopen_doit (in /usr/lib64/glibc-hwcaps/power10/libc.so.6)
      ==22701==  Address 0x1fff0046c0 is on thread 1's stack
      ==22701==  320 bytes below stack pointer
      ==22701==
      ==22701== Invalid read of size 8
      ==22701==    at 0x5795950: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x575B43F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x57AAE9F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5730D4F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5711363: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x405827B: call_init (dl-init.c:74)
      ==22701==    by 0x405827B: _dl_init (dl-init.c:121)
      ==22701==    by 0x406B667: call_dl_init (dl-open.c:504)
      ==22701==    by 0x40515DF: _dl_catch_exception (dl-catch.c:211)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:804)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:767)
      ==22701==    by 0x405153B: _dl_catch_exception (dl-catch.c:237)
      ==22701==    by 0x406D0CB: _dl_open (dl-open.c:880)
      ==22701==    by 0x4DA3A77: dlopen_doit (in /usr/lib64/glibc-hwcaps/power10/libc.so.6)
      ==22701==  Address 0x1fff0046d0 is on thread 1's stack
      ==22701==  304 bytes below stack pointer
      ==22701==
      ==22701== Invalid read of size 8
      ==22701==    at 0x5798458: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x575B41F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x57AAE9F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5730D7B: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5711363: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x405827B: call_init (dl-init.c:74)
      ==22701==    by 0x405827B: _dl_init (dl-init.c:121)
      ==22701==    by 0x406B667: call_dl_init (dl-open.c:504)
      ==22701==    by 0x40515DF: _dl_catch_exception (dl-catch.c:211)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:804)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:767)
      ==22701==    by 0x405153B: _dl_catch_exception (dl-catch.c:237)
      ==22701==    by 0x406D0CB: _dl_open (dl-open.c:880)
      ==22701==    by 0x4DA3A77: dlopen_doit (in /usr/lib64/glibc-hwcaps/power10/libc.so.6)
      ==22701==  Address 0x1fff000ed0 is on thread 1's stack
      ==22701==  304 bytes below stack pointer
      ==22701==
      ==22701== Invalid read of size 8
      ==22701==    at 0x579B0BC: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x575B3FF: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x57AAE9F: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5730DA7: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x5711363: ??? (in /usr/lib64/libfreeblpriv3.so)
      ==22701==    by 0x405827B: call_init (dl-init.c:74)
      ==22701==    by 0x405827B: _dl_init (dl-init.c:121)
      ==22701==    by 0x406B667: call_dl_init (dl-open.c:504)
      ==22701==    by 0x40515DF: _dl_catch_exception (dl-catch.c:211)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:804)
      ==22701==    by 0x406B823: dl_open_worker (dl-open.c:767)
      ==22701==    by 0x405153B: _dl_catch_exception (dl-catch.c:237)
      ==22701==    by 0x406D0CB: _dl_open (dl-open.c:880)
      ==22701==    by 0x4DA3A77: dlopen_doit (in /usr/lib64/glibc-hwcaps/power10/libc.so.6)
      ==22701==  Address 0x1ffeffa6d0 is on thread 1's stack
      ==22701==  304 bytes below stack pointer
      ==22701==
      ==22701==
      ==22701== HEAP SUMMARY:
      ==22701==     in use at exit: 7,955 bytes in 25 blocks
      ==22701==   total heap usage: 10,341 allocs, 10,316 frees, 3,407,148 bytes allocated
      ==22701==
      ==22701== LEAK SUMMARY:
      ==22701==    definitely lost: 0 bytes in 0 blocks
      ==22701==    indirectly lost: 0 bytes in 0 blocks
      ==22701==      possibly lost: 0 bytes in 0 blocks
      ==22701==    still reachable: 7,955 bytes in 25 blocks
      ==22701==         suppressed: 0 bytes in 0 blocks
      ==22701== Rerun with --leak-check=full to see details of leaked memory
      ==22701==
      ==22701== For lists of detected and suppressed errors, rerun with: -s
      ==22701== ERROR SUMMARY: 10 errors from 5 contexts (suppressed: 0 from 0)
      

      This is most likely a valgrind problem but it is still worth investigting. Found by /Security/CVE-2021-43527-Memory-corruption-in-signature-decoding.

       

      Please provide the package NVR for which the bug is seen:

      • nss-3.101 and nss-3.112
      • RHEL-10
      • ppc64le

      Expected results

       

      ==6973== Memcheck, a memory error detector
      ==6973== Copyright (C) 2002-2024, and GNU GPL'd, by Julian Seward et al.
      ==6973== Using Valgrind-3.25.1 and LibVEX; rerun with -h for copyright info
      ==6973== Command: certutil -d nssdb -A -n ca -t cCT,, -a -i ca.crt
      ==6973==
      ==6973==
      ==6973== HEAP SUMMARY:
      ==6973==     in use at exit: 8,723 bytes in 31 blocks
      ==6973==   total heap usage: 10,314 allocs, 10,283 frees, 3,400,692 bytes allocated
      ==6973==
      ==6973== LEAK SUMMARY:
      ==6973==    definitely lost: 0 bytes in 0 blocks
      ==6973==    indirectly lost: 0 bytes in 0 blocks
      ==6973==      possibly lost: 0 bytes in 0 blocks
      ==6973==    still reachable: 8,723 bytes in 31 blocks
      ==6973==         suppressed: 0 bytes in 0 blocks
      ==6973== Rerun with --leak-check=full to see details of leaked memory
      ==6973==
      ==6973== For lists of detected and suppressed errors, rerun with: -s
      ==6973== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
      

       

      Actual results

      See above

              rrelyea Robert Relyea
              omoris Ondrej Moris
              Robert Relyea Robert Relyea
              Joao Silva Joao Silva
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated: