[#]
g2k14: Theo de Raadt on security and configurations ==== ORIG
vit01(mira, 1) — All
2014-07-16 07:21:28
OpenBSD project leader Theo de Raadt (deraadt@) writes in from g2k14:
In the two weeks leading up to Slovenia I worked with Bob Beck on the replacement functions that would be needed to emulate getentropy(2). During the start of the hackathon there was a final bit of work to ensure Bob and Brent Cook were on their way with that.
Then it was time to attack a new security issue I have become aware of. Apparently file descriptor exhaustion can be used to hide reporting of buffer overflows by the stack protector. The stack protector guard function needs a file descriptor to report failure. Some of you who have been following blogs about arc4random and getentropy will recognize this issue.
This issue was first made apparent due to the systrace sandbox technique now used in the ssh tools, which prevents syslog_r from doing socket, connect, sendto.. all the good system calls necessary to report failure, but dangerous -- and precisely what the sandbox is trying to prevent.
This has been solved by creating a new system call that can send a message to syslogd without needing any additional resources; syslog_r(3) then uses this directly, one shot, fire and forget. The system call is rather narrow in purpose, and thus named sendsyslog(2), but this also fits the narrow use case it will have such as sandboxing.
In that regard, it is quite similar to the way getentropy(2) was carved off sysctl. Funny how one thing leads to another.
Taking a break from the kernel space, it was time for some cleanup and hopeful improvement for /etc, sysmerge, and the installation tools. Robert and Antoine helped out with a plan to mostly empty /etc/rc, this work is not yet finished but will lead to an improved sysmerge. On other fronts, I worked with the install script guys and the DRM guys to make sure that our next release can automatically know to leave the X aperture closed for capable chipsets.
Remainder of the hackathon I flitted here and there, as usual, participating in projects of other developers. A very enjoyable and productive week!
[#]
Re: g2k14: Theo de Raadt on security and configurations
vit01(mira, 1) — vit01
2014-07-16 08:10:20
Лидер проекта OpenBSD Тео де Раадт (deraadt@) пишет от g2k14:
В двух неделях до Словении я работал с Бобом Беком над заменяемыми функциями, которые будут необходимы для эмуляции getentropy(2). Во время начала хакатона шёл окончательный этап работы, чтобы гарантировать, что Боб и Брент Кук были на их пути с этим.
Потом пришло время напасть на новый вопрос безопасности, который я узнал. Очевидно, дескрипторное истощение файла может использоваться, чтобы скрыть сообщение о буферных переполнениях защитника стека. Функция охраны защитника стека требует файловый дескриптор, чтобы сообщить о неудаче. Некоторые из вас, кто был подписан на блоги arc4random и getentropy, признают эту проблему.
Эта проблема была сделана очевидной из-за метода песочницы systrace, теперь используемого в ssh инструментах, который препятствует тому, чтобы syslog_r открывал сокет, соединялся, отправлял.. все хорошие системные вызовы, необходимые, чтобы сообщить о неудачах, но опасные - и точно те, что песочница пытается предотвратить.
Это было решено созданием нового системного вызова, который может отправлять сообщение syslogd, вообще не нуждаясь в дополнительных ресурсах; syslog_r(3) тогда использует его непосредственно - один выстрел, огонь, и забыли. Системный вызов довольно узок в цели, поэтому назван sendsyslog(2), но это также соответствует его узкому случаю использования, который он будет иметь как в песочнице.
В том отношении, это подобно пути getentropy(2), который вырезали из sysctl. Забавно, как одна вещь приводит к другой.
Делая перерыв от пространства ядра, это было время для некоторой очистки и обнадёживающего улучшения для /etc, sysmerge, и для средств установки. Роберт и Антуан, который помог нам с планом для почти пустого /etc/rc, эта работа ещё не закончена, но приведёт к улучшенному sysmerge. На других фронтах я работал с парнями, что занимались установочными скриптами и с теми, что работали с DRM, чтобы удостовериться, что наш следующий релиз сможет автоматически знать, как оставлять апертуру X закрытой для совместимых чипсетов.
В остаток хакатона я мелькал тут и там, как обычно, участвуя в проектах других разработчиков. Очень приятная и производительная неделя!
[#]
Комментарий по Тео от Вадима
51t(lenina,1) — vit01
2014-07-22 07:04:53
Речь об исчерпании лимита на количество открытых файлов, которое в
случае использования syslog(3) могло привести к тому, что сообщения об
ошибках не попадут в системный журнал. Дело в том, что syslog(3)
оперировал через открытие файла /dev/log, которое, в случае исчерпания
оных лимитов, становится невозможным.