Проблема в ф-ях сокетов
Posted: Tue Oct 11, 2005 10:11 am
Доброго всем времени суток.
В который раз копаясь в исходниках стека TCP/IP нашёл такой баг. Может даже не баг, а недочёт товарища Хиббетта.
Суть в том, что когда происходит вызов ф-ии socket_write и socket_tcp_write происходит "преобразования адреса приложения в адрес ядра" ((с) Халявин Андрей). Из адреса 0x3010 ядра берётся информация о текущем процессе, и находится адрес данных, которые нада писать в сокет. Проблема в том, что обе ф-ии не проверяют, от какого процесса идёт обращение к открытому сокету. То есть теоретически (пока просто не пробовал на практике, так как сижу на работе и имею тут ограниченые возможности) любой процесс может писать что угодно куда угодно.
Вопрос в том: чем ето нам грозит, и что можно натворить при помощи этого бага??
В который раз копаясь в исходниках стека TCP/IP нашёл такой баг. Может даже не баг, а недочёт товарища Хиббетта.
Суть в том, что когда происходит вызов ф-ии socket_write и socket_tcp_write происходит "преобразования адреса приложения в адрес ядра" ((с) Халявин Андрей). Из адреса 0x3010 ядра берётся информация о текущем процессе, и находится адрес данных, которые нада писать в сокет. Проблема в том, что обе ф-ии не проверяют, от какого процесса идёт обращение к открытому сокету. То есть теоретически (пока просто не пробовал на практике, так как сижу на работе и имею тут ограниченые возможности) любой процесс может писать что угодно куда угодно.
Вопрос в том: чем ето нам грозит, и что можно натворить при помощи этого бага??