Компьютер для продвинутого пользователя
Безопасность
Новости
Microsoft укрепляет безопасность новым сервисом
Компания Microsoft создала консультационный сервис в области безопасности. Новое предложение компании станет промежуточным звеном, которое может оказать помощь пользователям в период между публичным сообщением об уязвимости и созданием патча для нее, сообщает сайт Security Pipeline.
Oscarbot-B охотится за пользователями AIM
Новый хитрый червь, созданный для поражения компьютеров, пользователи которых общаются посредством IM-клиента AOL Instant Messenger (AIM), уже успел причинить своим жертвам немало хлопот.
Microsoft и Sun: зайти в сеть будет проще
Компании Sun Microsystems и Microsoft прекратили многолетнее противостояние и решили объединить свои усилия. Исполнительные директора компаний Sun и Microsoft Скотт Макнили (Scott McNealy) и Стив Балмер (Steve Ballmer) объявили о выпуске спецификаций для разработки единых интерфейсов между системами, использующими стандарты WS-Federation и Liberty. Разрабатываемая технология позволит пользователям и администраторам сетей регистрироваться лишь единожды - при входе в сеть. Опыт безопасности
Продукт: Ядро Linux v. 2.6
Проблема:
Две локальные ошибки были найдены в Linux rawdevice и pktcdvd блочных устройств
ioctl обработки, это позволяет локальному пользователю получить рутовский статус,
а также выполнениепроизвольного кода в ядре.
Детали:
Ядро Linux содержит pktcdvd и rawdevice компоненты. Из-за недостаточной проверки
pktcdd и rawdevace ioctl параметров обработки, процесс может быть подвешен
переполнением свободного места и выполнением произвольного кода в ядре.
Описание:
Уязвимый код находится в drivers/block/pktcdvd в вашей версии ядра. Код:
static int pkt_ioctl(struct inode *inode, struct file *file, unsigned
int cmd, unsigned long arg)
{
struct pktcdvd_device *pd = inode->i_bdev->bd_disk->private_data;
VPRINTK("pkt_ioctl: cmd %x, dev %d:%d\n", cmd, imajor(inode),
iminor(inode));
BUG_ON(!pd);
switch (cmd) {
/*
* выбор CDROM ioctls к CD-ROM, для UDF
*/
case CDROMMULTISESSION:
case CDROMREADTOCENTRY:
case CDROM_LAST_WRITTEN:
case CDROM_SEND_PACKET:
case SCSI_IOCTL_SEND_COMMAND:
[*] возврат ioctl_by_bdev(pd->bdev, cmd, arg);
case CDROMEJECT:
/*
* Дверца должна быть закрыта, когда устройство открыто, тогда мы
* можем разблокировать её или если фынуть командна прерывается.
*/
pkt_lock_door(pd, 0);
[*] return ioctl_by_bdev(pd->bdev, cmd, arg);
Пользователь:
Как видно из формы [*] аргумент переменной подставляемой в ioctl_by_bdev()
функцию не проверяется и пользователь может ввести аргумент > TASK_SIZE value.
fs/block_dev.c
int ioctl_by_bdev(struct block_device *bdev, unsigned cmd, unsigned long arg)
{
int res;
mm_segment_t old_fs = get_fs();
[**] set_fs(KERNEL_DS);
res = blkdev_ioctl(bdev->bd_inode, NULL, cmd, arg);
set_fs(old_fs);
return res;
}
Однако, для поддержки ядра так же используются параметры, ioctl_by_bdvec)()
вызывающий set_fs(KERNEL_DS) доступ параметров в ядре. Итак, если
ioctl_by_bdwev() параметр с аргументом >TASK_SIZE, процесс зависнет и перепишет
в ядро информацию. Локальный пользователь может выполнить любой код в ядре.
=========================================================
Если Вам нравится данная рассылка и Вы готовы помочь, то
Вы можете отправить немного помощи на R474348938531 или
Z451490294903.