salt w crypt z glibc 2.17
Rafał Janiczek
rafal.janiczek at gmail.com
Wed Jun 5 16:20:49 CEST 2013
Hej,
Dzisiaj zauważyłem, że nowe glibc ma jakieś problemy z crypt. A dokładniej
z "$" na pierwszej lub drugiej pozycji salta. Akurat tak się pechowo
złożyło, że hasło w htpasswd wygenerowało się z $ na drugiej pozycji i po
aktualizacji zestawu lighttpd +glibc serwer www wylatywał przy próbuje
autoryzacji.
Szukając problemu doszedłem do czegoś takiego:
# cat glibc-test.c ; gcc glibc-test.c -o glibc-test -l crypt; strace -o
strace.log ./glibc-test ; tail strace.log ; rpm -q glibc
#include <stdio.h>
#include <crypt.h>
int main(void) {
char *ok = "aaaaaaaaa";
char *ble = "a$aaaaaaa";
puts(crypt(ok, ok));
puts(crypt(ble, ok));
puts("A teraz...");
puts(crypt(ok, ble));
}
aakcR08PK3l1o
aa4Q3qpgbUtfg
A teraz...
Segmentation fault
mprotect(0x7f43ef2b6000, 4096, PROT_READ) = 0
mprotect(0x7f43ef507000, 4096, PROT_READ) = 0
munmap(0x7f43ef4fc000, 40542) = 0
open("/proc/sys/crypto/fips_enabled", O_RDONLY) = -1 ENOENT (No such file
or directory)
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 9), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) =
0x7f43ef505000
write(1, "aakcR08PK3l1o\n", 14) = 14
write(1, "aa4Q3qpgbUtfg\n", 14) = 14
--- {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x8} (Segmentation
fault) ---
+++ killed by SIGSEGV +++
glibc-2.17-3.x86_64
To samo się dzieje na glibc 2.17-5 oraz w wersji i686. Nie ma problemu z
wcześniejszymi, 2.16 i 2.14.1-4.
--
Rafał Janiczek
More information about the pld-devel-pl
mailing list