• shadowintheday2@lemmy.world
    link
    fedilink
    English
    arrow-up
    95
    arrow-down
    2
    ·
    10 months ago

    "A qsort vulnerability is due to a missing bounds check and can lead to memory corruption. It has been present in all versions of glibc since 1992. "

    This one amazes me. Imagine how many vulnerabilities future researchers will discover in ancient software that persisted/persist for decades.

    • PlexSheep@feddit.de
      link
      fedilink
      arrow-up
      66
      ·
      edit-2
      10 months ago

      That’s not the main part of the article, just a footnote, for anyone wondering.

      The flaw resides in the glibc’s syslog function, an attacker can exploit the flaw to gain root access through a privilege escalation.

      The vulnerability was introduced in glibc 2.37 in August 2022.

        • PlexSheep@feddit.de
          link
          fedilink
          arrow-up
          5
          ·
          10 months ago

          You are probably confusing the glibc with gcc and g++. Glibc is an implementation of the C standard library, made by GNU (thats where the g in the name comes from).

          If you were to look into it, it uses the syscalls to tell the underlying computer system what to do when you call functions, such as printf.

          If you want to read more, see here

    • xlash123@sh.itjust.works
      link
      fedilink
      arrow-up
      35
      arrow-down
      1
      ·
      10 months ago

      C is just crazy. You accidentally forget to put the bounds in a sorting function, and now you are root.

    • kaputt@sh.itjust.works
      link
      fedilink
      arrow-up
      6
      ·
      10 months ago

      According to the link in the article, the qsort() bug can only be triggered with a non-transitive cmp() function. Would such a cmp function ever be useful?

      • Giooschi@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        10 months ago

        You don’t necessarily have to write a non-transitive cmp() function willingly, it may happen that you write one without realizing due to some edge cases where it’s not transitive.