Возможно вы искали: 'Soul Captor'

May 15 2025 19:08:53
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » макросы для strcpy/strcat/[v]sprintf (security lib string)

макросы для strcpy/strcat/[v]sprintf (security lib string)

Ключевые слова: security, lib, string, (найти похожие документы)

_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _
From : Solar Designer 2:5020/400 04 Oct 98 11:38:38
Subj : макросы для strcpy/strcat/[v]sprintf
________________________________________________________________________________
From: Solar Designer <solar@cannabis.dataforce.net>

Valentin Nechayev <netch@lucky.net> wrote:

> SD> 3. Проверка пароля (root или gid=shadow).

Вот тут некрасиво выходит, чтобы портабельно и везде безопасно.

Вариант 1:
1. setuid под юзера.
2. exec своего продолжения, чтобы address space от shadow очистить.

Вариант 2:
1. exec продолжения с какой-то передачей uid'а.
2. setuid уже в продолжении.

Проблема в первом варианте: риск ptrace'а между пунктами 1 и 2 на
некоторых (пусть даже кривых) системах, где нет аналога current->dumpable
или он не сбрасывается при setuid. Да, это race, но от этого не легче.
Тем не менее, djb'шный checkpassword сделан именно так, я даже думаю не
намылить ли djb об этом. ;-) Тем более, что там обнаружился еще и ляп
пострашнее, пока даже в эхе не скажу (сейчас еще пойду проверю). Хотя,
конечно, всякий там login на эту тему не особо аккуратен. Да и фиксить
такие вещи надо все-таки в ядре. Hо если уж делать идеальный код, так,
чтобы он не был дыряв даже на сломанных системах, ... Короче, не знаю.

Второй вариант лишен этого недостатка, но сама передача uid'а будет
лишним кодом, выполняемым под рутом. Причем "лишним" в буквальном смысле
на не-таких-уж-кривых системах вроде Linux'а. ;-)

> Свести до минимума действия под рутом, обложить их тысячью проверками.

Вот тут возникает некоторое противоречие -- часть из этой "тысячи проверок"
сама будет вынуждена выполняться под рутом. ;-) Поэтому тысячу я делать не
буду, а ограничусь разумным количеством, достаточным для того, чтобы часть
работающая под рутом совсем не доверяла остальным.

> Работу собственно с ящиком вывести в дочерний процесс, у которого resuid -
> выбранный пользователь, resgid - хотя бы nogroup. Анализ кода возврата
> ребенка может разве что вынудить к действию оставить временный файл для
> отладки, но лучше и этого не делать - просто передать код дальше.

Hа самом деле есть вариант и без временного файла совсем, во всех случаях.
Hо с риском потери мыла при вырубании питания. А есть-таки и вариант _без_
такого риска, ценой некоторых тормозов, и запуска "восстановителя" из rc.d
скриптов до inetd и MTA.

> SD> протокол для взаимодействия частей pop3 демона, работающих полностью
> SD> под разными uid'ами. Второй вариант сложнее, но IMHO предпочтительнее.

> Да.

Пока начал уже делать по такому варианту, "черновик". ;-) Форкается и
говорит сам с собой через pipe. Вроде не так уж и сложно получается. :-)

В таком варианте, чтобы кому-то получить рута, надо найти как минимум два
бага -- по одному в каждой части.

В состоянии authentication:
client (remote) <-> pop3 protocol (uid=pop3) -> auth/setuid (uid=0)
В состоянии transaction:
client (remote) <-> pop3 protocol & mailbox access (uid=user)
В состоянии update, реализация без временного файла:
client (remote) <-> pop3 protocol & mailbox access (uid=user)
В состоянии update, реализация с временным файлом:
client (remote) <-> pop3 protocol (uid=user) -> unlink (uid=0)

Как видно, из-за временного файла, если его делать, пришлось бы все время
держать лишний процесс для "хранения" рута. ;-(

> SD> Также, желательно будет временами проходить через лишний exec() дабы
> SD> прочистить address space от остатков shadow после вызовов libc. Иначе
> SD> делать setuid под самого юзера будет на некоторых системах (не Linux,
> SD> а, например, Solaris до 2.6 не включительно) небезопасно из-за ptrace.

> Форкнутый ребенок делает exec() с определенными ключами и уже resuid на
> пользователя.

Здесь придется выбрать между двумя вариантами -- см. выше.

> Если система позволяет измерения точнее чем до секунды - воспользоваться.

Да, но тут важна не точность измерений, а формат времени в файловой
системе (который обычно меньшей точности).

> Вполне хорошо.

Тогда буду делать. :-) Кстати, вот cucipop вообще таких проверок не делает
и лок не держит -- просто в расчете, что ничего, кроме прихода нового мыла,
с mailbox'ом делать не будут. А если будут -- запорченный mailbox. ;-) Так
что, тоже можно оставить как опцию для ускорения работы, на сайтах, где
юзерам ничего, кроме pop3, для чтения мыла и не дают.

> SD> Баг, как известно, тупейший -- в Dprintf. А вообще, там такого много, так
> SD> что я просто пересобрал со своими макросами для strcpy/strcat/[v]sprintf,
> SD> которые когда-то кидал в security-audit уже. (Hу и, конечно, убедился,
> SD> что vsprintf бинарник больше не знает.)

> А макросы можешь привести сюда?
> Я к чему - во-первых, лучше иметь готовый комплект, которым можно будет всем
> пользоваться, а, во-вторых, сверить бы. У меня свой комплект (могу привести)
> - хотелось бы сравнить идеи и реализацию.

Да. Только сначала скажу disclaimer -- это _не_ решение проблемы, и вообще
не правильный путь к решению -- а то еще опять кто-нибудь разговоры начнет.

Известная проблема: sizeof() руганется на incomplete type при некоторых
описаниях extern'ов. Hапример, встречается в squid'е. Если твой вариант
чем-то лучше -- покажи, было бы интересно посмотреть.

#ifndef _STRFIX_H
#define _STRFIX_H

#define strcpy(dst, src)
({
char *_out = (dst);
if (sizeof(dst) <= sizeof(char *))
_out = strcpy(_out, (src));
else {
*_out = 0;
_out = strncat(_out, (src), sizeof(dst) - 1);
}
_out;
})

#define strcat(dst, src)
({
char *_out = (dst);
if (sizeof(dst) <= sizeof(char *))
_out = strcat(_out, (src));
else {
int _size = sizeof(dst) - strlen(_out) - 1;
if (_size > 0) _out = strncat(_out, (src), _size);
}
_out;
})

#endif

#ifndef _STDIOFIX_H
#define _STDIOFIX_H

#define sprintf(dst, format, args...)
({
int _out;
if (sizeof(dst) <= sizeof(char *))
_out = sprintf((dst), (format) , ## args);
else {
_out = snprintf((dst), sizeof(dst), (format) , ## args);
if ((unsigned)_out >= sizeof(dst)) _out = sizeof(dst) - 1;
}
_out;
})

#define vsprintf(dst, format, ap)
({
int _out;
if (sizeof(dst) <= sizeof(char *))
_out = vsprintf((dst), (format), (ap));
else {
_out = vsnprintf((dst), sizeof(dst), (format), (ap));
if ((unsigned)_out >= sizeof(dst)) _out = sizeof(dst) - 1;
}
_out;
})

#endif

--
/sd
--- ifmail v.2.14dev2
* Origin: DataForce ISP (2:5020/400@fidonet)

338 Прочтений •  [макросы для strcpy/strcat/[v]sprintf (security lib string)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• макросы для strcpy/strcat/[v]sprint... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка