Вчера выпущен (http://www.apache.org/dist/httpd/Announcement.html) новый релиз http-сервера Apache 1.3.32, в котором исправлено несколько ошибок в mod_rewrite, а также ошибки в mod_digest, mod_log_forensic,mod_setenvif, mod_usertrack и mod_so.Самое неприятное, что в Apache 1.3.32 <font color=red>
не исправлено
</font> обнаруженное на днях локальное переполнение буфера в mod_include (http://www.securitylab.ru/48807.html), позволяющее локальным пользователям, имеющим возможность использования SSI директив, запустить свой код под привилегиями web-сервера.Решение: найти в файле mod_include.c все строки
"if (t - tag == tagbuf_len) {" и заменить на "if (t - tag == tagbuf_len - 1) {".URL: http://www.securitylab.ru/48807.html
Новость: http://www.opennet.me/opennews/art.shtml?num=4534
А в виде пачта исправления для mod_include.c нету? Чтоб ручкамине править.
diff -uNr apache_1.3.32.orig/src/modules/standard/mod_include.c apache_1.3.32/src/modules/standard/mod_include.c
--- apache_1.3.32.orig/src/modules/standard/mod_include.c 2004-02-29 06:19:04.000000000 +0800
+++ apache_1.3.32/src/modules/standard/mod_include.c 2004-10-25 13:00:55.048550840 +0900
@@ -337,7 +337,7 @@
/* find end of tag name */
while (1) {
- if (t - tag == tagbuf_len) {
+ if (t - tag == tagbuf_len - 1) {
*t = '\0';
return NULL;
}
@@ -371,7 +371,7 @@
term = c;
while (1) {
GET_CHAR(in, c, NULL, p);
- if (t - tag == tagbuf_len) {
+ if (t - tag == tagbuf_len - 1) {
*t = '\0';
return NULL;
}
Читайте оригинал внимательнее! Фикс указан НЕВЕРНО!!
Правильно так:
if (t - tag >= tagbuf_len-1) {