The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Локальная уязвимость в Apache 1.3.x. Выход Apache 1.3.32

22.10.2004 13:25

Вчера выпущен новый релиз http-сервера Apache 1.3.32, в котором исправлено несколько ошибок в mod_rewrite, а также ошибки в mod_digest, mod_log_forensic,mod_setenvif, mod_usertrack и mod_so.

Самое неприятное, что в Apache 1.3.32 не исправлено обнаруженное на днях локальное переполнение буфера в mod_include, позволяющее локальным пользователям, имеющим возможность использования SSI директив, запустить свой код под привилегиями web-сервера.

Решение: найти в файле mod_include.c все строки "if (t - tag == tagbuf_len) {" и заменить на "if (t - tag >= tagbuf_len - 1) {".

  1. Главная ссылка к новости (http://www.securitylab.ru/4880...)
  2. Changelog 1.3.32
  3. securityfocus.com: Apache mod_include Local Buffer Overflow Vulnerability
  4. secunia.com: Apache "mod_include" Privilege Escalation Vulnerability
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/4534-apache
Ключевые слова: apache, security
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (3) RSS
  • 1, citrin (ok), 14:14, 23/10/2004 [ответить]  
  • +/
    А в виде пачта исправления для mod_include.c нету? Чтоб ручкамине править.
     
  • 2, Andrey (??), 07:57, 25/10/2004 [ответить]  
  • +/
    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;
             }
     
  • 3, Аноним (3), 09:47, 25/10/2004 [ответить]  
  • +/
    Читайте оригинал внимательнее! Фикс указан НЕВЕРНО!!
    Правильно так:
    if (t - tag >= tagbuf_len-1) {
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру