| |
| 2.2, Вадим Жуков (?), 09:50, 05/10/2026 [^] [^^] [^^^] [ответить]
| +8 +/– |
chroot меняет видимую структуру каталогов и доступен только для root. Так как если его разрешить использовать обычным пользователям, это само по себе станет вектором для атак: представьте себе, что атакующий воссоздаёт /etc, /usr, /var и т.д. в своей папке, а потом делает chroot и провоцирует срабатывание чужого кода, который честно считывает параметры работы и доступа из, казалось бы, доверенных каталогов.
| | |
| |
| 3.14, Аноним1234 (?), 11:00, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
>chroot меняет видимую структуру каталогов и доступен только для root.
chroot запускается без прав суперпользователя в комлпекте с unshare (если речь идёт о Linix).
>Так как если его разрешить использовать обычным пользователям, это само по себе станет вектором для атак: представьте себе, что атакующий воссоздаёт /etc, /usr, /var и т.д. в своей папке, а потом делает chroot и провоцирует срабатывание чужого кода, который честно считывает параметры работы и доступа из, казалось бы, доверенных каталогов
Ничего не понял. Можно на кокретном примере. Допустим я пишу свой http/ftp/smb сервер. Я не хочу, чтобы кто-то получив доступ к нему не мог выбраться в систему (собственно так они и устроены). В чём проблема в том, что хакер подсуент /etc, /usr, /var в домашнюю папаку своего пользователя?
| | |
| |
| 4.22, Аноним (22), 11:12, 05/10/2026 [^] [^^] [^^^] [ответить]
| +3 +/– | |
> Допустим я пишу свой ... smb сервер...
у нас про безопасность тред или как, лол
| | |
|
| 3.17, Аноним (17), 11:07, 05/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– |
Сам системный вызов не требует повышенных привилегий, нужна только капа на вызов chroot. Никаких проблем от того что пооцесс с отдельным UID сам себя посадит в отдельный рут нету (ну или не должно быть, если только в ядре не делали какие-то идиотские предположения по этому поводу).
| | |
| 3.53, Ivan_83 (ok), 19:17, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
chroot может и под юзером работать, как минимум по FreeBSD.
В случае работы от юзера все бинарники с SUID будут проигнорированы или как то так, те об этом уже подумали.
| | |
|
| 2.54, Ivan_83 (ok), 19:18, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Не удобно для всего процесса это делать, особенно если это какой то веб сервер у которого несколько webroot.
| | |
|
| 1.3, Аноним (3), 09:54, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Почему изначально к системным частям фс и переменным имеют доступ все и каждый?
| | |
| |
| 2.5, Аноним (5), 10:15, 05/10/2026 [^] [^^] [^^^] [ответить]
| –6 +/– |
Потому что всем было просто класть на безопасность)
Если почитать воспоминания "отцов основателей" (они же диды бракоделы) про реакцию сообщества программистов на червь морриса, то они там офигенно обделались.
Раньше можно было просто писать забивая на проверки, а теперь придется думать.
Ну и второе, а чего вы хотели от базарной разработки?
| | |
| |
| 3.12, YetAnotherOnanym (ok), 10:53, 05/10/2026 [^] [^^] [^^^] [ответить]
| +5 +/– |
О, а вот ещё один обожжённый исповедями дидов.
Хотел бы я посмотреть работу твоего кода на железе 1970-х гг.
| | |
| |
| 4.27, Аноним (27), 11:27, 05/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– | |
Не приписывай свои фантазии незнакомым людям)
Древним акса-калам на которых так любят наяривать местные было реально пофигу.
Упало? Ну и черт с ним.
Dennis once fed a couple-of-thousand-byte line on standard input to everything in /bin. Crashes abounded, but so what? Wasn't a crash just an ungraceful way for a program to say "I can't handle this"? Not until the Morris worm (1988) did folks wake up to the real danger of overflows.
> Хотел бы я посмотреть работу твоего кода на железе 1970-х гг.
Думаешь tinyAVR мощнее железа на котором ваяли тот же юникс?
| | |
| |
| 5.32, qqq (??), 12:47, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Думаешь tinyAVR мощнее железа на котором ваяли тот же юникс?
у вас уже многопроцессная и многопользовательская система общего назначения на нем работает? С приемом произвольных данных от произвольных пользователей и возможностью собирать свой код в системе?
| | |
| 5.42, Аноним (42), 15:24, 05/10/2026 [^] [^^] [^^^] [ответить]
| +2 +/– | |
>Древним акса-калам на которых так любят наяривать местные было реально пофигу.
Так ты сам же врёшь. Во те времена это было не актуально. А раз неактуально то никто на это не обращал внимания. Всё логично. Осозание пришло потом. Люди защищаются в ответ на действия хулиганов. Именно в ответ. И это называется нормальным течением событий. Если бы в те времена, кто-то бы озаботился вопросами безовасности 2026 года, то его посчитали бы сумашедшим.
Спустя полвека, легко критиковать.
| | |
| 5.44, Инопланетянин (?), 15:34, 05/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
> Древним акса-калам на которых так любят наяривать местные было реально пофигу.
Ну современные акса-калы всем покажут как надо? Ведь правда? Ведь покажут же?
Только постойте-ка. Почему то они пользуются наработками древних акса-калов...
| | |
| 5.57, Sem (??), 19:38, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Вообще-то, Денис - самый аксакалистый из аксакалов. И он сделал этот тест как раз, что бы показать проблему. А рукожопов сейчас гораздо болльше, чем было тогда.
Ну и учитывать контекст того времени, когда сэкономить одну инструкцию процессора и один бит памяти казалось важнее всего остального.
| | |
|
|
|
| 2.10, Жироватт (ok), 10:30, 05/10/2026 [^] [^^] [^^^] [ответить]
| +10 +/– |
Как и во всех системах - да. Какой путь может отобразить система - на такой и имеют.
Правда, во время реального чтения/записи/траверса ОС применяет ACL и непривилегированная программа просто не сможет даже прочитать закрытый для траверса каталог, но само создание дескриптора через open() это не проверяет - это не его работа.
Так что да, хакер и солонки.
| | |
| 2.11, Аноним (11), 10:42, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ты такие вопросы тоже задаёшь, когда кодишь под огороженный контейнер или его дебажишь?
| | |
| 2.23, Аноним (23), 11:21, 05/10/2026 [^] [^^] [^^^] [ответить]
| +5 +/– |
Потому что везде проталкивать "безопасность" это ненормально.
| | |
| 2.50, Аноним (50), 18:39, 05/10/2026 [^] [^^] [^^^] [ответить]
| +1 +/– | |
>Почему изначально к системным частям фс и переменным имеют доступ все и каждый?
Потому что UNIX - это про удобство написания программ, а не про создание идеальной "правильной" системы. См. "worse-is-better" и "MIT way vs UNIX way"
| | |
|
| 1.8, Аноним (8), 10:23, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
В openbsd нет механизмой apparmor/selinux чтобы можно было сделать ограничения доступа к ФС для процессов?
| | |
| |
| 2.24, Аноним (22), 11:23, 05/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
да везде всё есть - на какой-нить винде вы без суперюзера и мусор с родного рута С:\ не вынесите, но вот специально оформленная веб-страница... как пруф могу менее месячной давности новость подложить - плойку5 вскрыли, по-моему также через веб-кит встроенный, что там, итерация фряхи?
| | |
|
| 1.9, Жироватт (ok), 10:25, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Теперь осталось уговорить всех и каждого писателя софта использовать openat(), вместо привычной и давно указанной во всех пособиях, хендбуках и манах open().
| | |
| |
| 2.18, Аноним1234 (?), 11:07, 05/10/2026 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Теперь осталось уговорить всех и каждого писателя софта использовать openat(), вместо привычной
> и давно указанной во всех пособиях, хендбуках и манах open().
И сделав тем самым свой софт несовместимый ни с чём кроме беты openbsd либо добавить дефайны типа ifdef OPENBSD_VERSION_XX > YY
| | |
| 2.26, Аноним (26), 11:27, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Алло, знатоки! openat описана в том же мане, что и open. И в линуксовом тоже, ага.
| | |
| 2.62, Ivan_83 (ok), 19:42, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Предложение Тэо работает и с opendir() и всеми производными который потом DIR* употребляют.
| | |
|
| 1.19, Аноним (19), 11:08, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
Только сразу продумайте, что будет, если в каталоге будет вложенный каталог, который является символической ссылкой на /
А то будет как всегда.
| | |
| |
| 2.37, Аноним (36), 14:16, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
так он далек от понятия безопасность. За место того, чтобы проектировать по определению (дизайну) безопасную систему, он костыляет курам на смех.
| | |
| |
| 3.61, Ivan_83 (ok), 19:41, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Идея то годная, просто вы не читали оригинал письма и не поняли сути.
| | |
| |
| 4.65, Аноним (36), 20:12, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Идея то годная
идея? в том то и суть, что идея, а не дизайн, секурный дизайн! Секурный дизайн требует пруфов, а тут очередное фуфло, которое любой школьник в будущем найдет как обходить, а еще лучше придумают еще кучу всякого Г нового и необходимости даже обходить не будет. Так вот. Зарубите на носу, все безопасное это фактически угроза нац. безопасТности!!!
| | |
|
|
|
| 1.33, Аноним (33), 13:10, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– | |
Не ожидал такого бреда от самого безопасного.
> вызовы openat() с абсолютным путём или с переходом вверх через ".." будут завершаться ошибкой ENOENT
А тео не помнит сколько сотен способов сбежать из линуксового chroot было потому что он на таких проверках строился?
> В случае атаки, приводящей к выполнению кода, таблица файловых дескрипторов процесса будет содержать менее функциональные "dirfd", что будет ограничивать поверхность атаки.
Подумать только. А просто наоткрывать новых дескрипторов при RCE без pledge/unveil кто запретит? Тео изобрёл security through inconvenience.
> но сделать это при помощи функций unveil() и pledge() не представлялось возможным
А может лучше эти изобретения допилить до уровня, где ими можно пользоваться в настоящих приложениях?
| | |
| |
| 2.58, Ivan_83 (ok), 19:38, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Вы бы лучше в рассылке с ним поспорили, к тому же там оно расписано зачем и почему.
Еслик кратко, то как я понял у них не было O_RESOLVE_BENEATH и вместо него они хотят сразу к dirfd клеить флаг что все пользователи dirfd не могут выходить выше.
| | |
| |
| 3.66, Аноним (36), 20:14, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– | |
> Вы бы лучше в рассылке с ним поспорили, к тому же там оно расписано зачем и почему.
Зачем мешать глупцам совершать глупости? и с какого, он будет делать то, что вы хотите? Он делает ровно то, что ему прикажут!
| | |
|
| 2.59, Ivan_83 (ok), 19:40, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
И да, там же в коде есть:
dirp = opendir(dir);
if (dirp == NULL)
return (NULL);
+ fcntl(dirfd(dirp), F_BELOW);
те таким образом они могут запатчить не только тот С код который напрямую юзает openat(), но опосредованно через openat() похороненый в недрах libc.
| | |
|
| 1.48, Аноним (48), 18:19, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
Тео -- сказочный. На полном серьёзе предлагает доверить кодерам правильно ограничить поведение своей программы, которое надо ограничивать в первую очередь потому, что 99% кодеров не могут пройти по массиву не вывалившись за его пределы.
| | |
| |
| 2.55, Ivan_83 (ok), 19:28, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Точно, нужно доверить это вам и прочим растокодерастам, или вообще ЫЫ, особенно моделям размером до 5гб, ведь они быстрее работают :)
| | |
| |
| 3.64, Аноним (48), 20:08, 05/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Ну раз про другие варианты ты не в курсе, то видимо придётся раст и "вообще ЫЫ". По перечисленному в принципе виден уровень "развития" и "профессионализма", неясно только зачем ты так старательно выпячиваешь это на публичном форуме. Ещё до "вообще ЫЫ" HRы пользовались примитивным ML позволявшим по популярным форумам и соцсетям искать сообщения, похожие на стиль писанины соискателя. Смекаешь?
| | |
| |
| 4.70, Ivan_83 (ok), 00:31, 06/10/2026 [^] [^^] [^^^] [ответить]
| +/– |
Те меня типа должно волновать ваше мнение о моей персоне?
Или я должен быть зашуганным и прятатся под анонимом?
Вы видать с хубра, там такого зашуганства полным полно.
Для хрюнов у меня линкедин и гитхуб, там видны мои достижения на практике.
| | |
|
|
|
| 1.56, Ivan_83 (ok), 19:36, 05/10/2026 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Что то я давно думал что оно так и есть, всмысле что подобную связку используют чтобы не свалить парсинг путей на ядро и не дать обойти указанный root который заботливо открыт до того как.
Во фре есть уже O_RESOLVE_BENEATH.
Но да, его надо сувать в каждый openat().
Идея Тэо это добавить этот флаг к dirfd, так что все кто потом его используют в openat() автоматом не смогут обойти ограничение каталога.
| | |
|