Читаем Защита от хакеров корпоративных сетей полностью

elliptic@ellipse:~$ diff axspawn-0.2.1/axspawn.c axspawn-

0.2.1a/axspawn.c

491c491

< envc = 0;

> envc = 0;

493c493

< sprintf(envp[envc++], “AXCALL=%s”, call);

> sprintf(envp[envc++], “AXCALL=%.22s”, call);

495c495

< sprintf(envp[envc++], “CALL=%s”, (char *)user);

> sprintf(envp[envc++], “CALL=%.24s”, (char

*)user); 497c497

< sprintf(envp[envc++], “PROTOCOL=%s”, protocol);

> sprintf(envp[envc++], “PROTOCOL=%.20s”,

protocol); 500c500

< envp[envc] = NULL;

> envp[envc] = NULL;

Видно, что в первой версии программы axspawn.c используется функция sprintf без всяких ограничений на длину выводимой строки данных, а во второй – введено ограничение на длину выводимой строки в спецификации преобразования. В некоторых случаях производитель может выпустить патч, который будет сообщать отличия между двумя версиями программы. Обычно такие патчи выпускаются для операционных систем типа BSD (BSD – Berkeley Software Design Incorporated – компания-разработчик программного обеспечения), например FreeBSD. В январе 2002 года была найдена уязвимость в пакете инструментальных средств операционной системы FreeBSD. До ее устранения пользователь мог извлечь данные во временную директорию и изменить их. До тех пор, пока уязвимость не была всесторонне изучена, патч pkg_add сообщал точное местонахождение уязвимости:

– usr.sbin/pkg_install/lib/pen.c 17 May 2001 12:33:39 -0000

+++ usr.sbin/pkg_install/lib/pen.c 7 Dec 2001 20:58:46 -0000

@@ -106,7 +106,7 @@

cleanup(0);

errx(2, __FUNCTION__ “: can’t mktemp “%s””, pen);

}

– if (chmod(pen, 0755) == FAIL) {

+ if (chmod(pen, 0700) == FAIL) {

cleanup(0);

errx(2, __FUNCTION__ “: can’t mkdir “%s””, pen);

}

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже