Solaris - luka w funkcji sysinfo()

Znaleziono lukę w Solarisie firmy Sun Microsystems. Błąd wystepuje w /usr/src/uts/common/syscall/systeminfo.c, na którym to możemy wykonać integer overflow.

Oto fragment wadliwego kodu:

125 if (kstr != NULL) {
126 if ((strcnt = strlen(kstr)) >= count) {
127 getcnt = count - 1;
128 if (subyte(buf + count - 1, 0) < 0)
129 return (set_errno(EFAULT));
130 } else
131 getcnt = strcnt + 1;
132 if (copyout(kstr, buf, getcnt))
133 return (set_errno(EFAULT));
134 return (strcnt + 1);
135 }

Luka pozwala na odczyt pamięci kernela za pomocą nieuprzywilejowanego procesu użytkownika. Wykorzystanie tej luki może dać atakującemu dostęp do haseł bądź kluczy. Może także dać hakerowi dostęp do informacji, które ten może wykorzystac przy wyszukiwaniu błędów na poziomie jądra. Z tego co do tej pory wiadomo podatny na ten błąd jest jedynie Solaris 10.

Źródło: fr33d0m.net

Realizacja: SIPLEX Studio