В свете проявляемого нами в последнее время (и все более усиливающегося) интереса к вопросам безопасности, стало достаточно очевидным, что только строгий и полный просмотр дерева исходных текстов FreeBSD, не больше и не меньше, позволит нам быть достаточно уверенными в защищенности нашей операционной системы, на работу которой опирается все больше и больше людей и она должна быть сделана более чем достаточно защищенной, если мы хотим, чтобы её продолжали использовать и в будущем.
Большой объём унаследованного кода и кода третьих разработчиков, входящего во FreeBSD, также позволяет пробелам в защите системы особенно легко оставаться незамеченными, пока не будет слишком поздно; хотя по настоящему серьёзной попытки пройтись по всем исходным текстам системы с упором на обеспечение безопасности, до этого момента не делалось, это будет достаточно большим проектом, а большинство разработчиков FreeBSD более чем заняты где-то еще. Однако мы должны изменить такое положение вещей, если хотим оставаться операционной системой, на которую люди могут положиться, и продолжать расти с ростом Internet и (я ожидаю) становиться все более подходящим окружением для других, не полностью защищённых систем. Полная безопасность это нечто, обеспечиваемое совместно местным администратором и поставщиком ОС, а мы как "поставщики ОС" должны с блеском справиться с задачей обеспечения безопасности.
Первым шагом основной группы разработчиков на пути к более серьезному отношению к вопросам обеспечения безопасности было включение офицера безопасности, Guido van Rooij, в основную группу, для того, чтобы этот "решающий голос" занимался безопасностью как основной задачей и представлял FreeBSD во всех важных списках рассылки, внешних по отношению к проекту. Он также позволит остальным в основной группе разработчиков гораздо более внимательно относиться к вопросам безопасности, когда они возникнут, и надеемся, что они не будут возникать так неожиданно, как это было несколько раз в прошлом.
Нашим вторым шагом будет осуществление этого аудита, попробовав методично пройтись по каждой строке исходного текста FreeBSD в поиске обычных ошибок выхода за границы буферов (sprintf()/strcpy() вместо snprintf()/strncpy() и тому подобное), менее обычных брешей в защите, кусков недостаточно защищённого кода, бесполезных строк комментариев для пересылки во freebsd-chat, ну и так далее.
Используя базу данных модулей как план, мы разобьем дерево исходных текстов на более обозримые части, поместив подписной лист на видном месте, так, чтобы все желающие смогли видеть, какие модули уже просмотрены, а какие нет. Также сейчас формируется группа людей, состоящая из "аудиторов" и "обозревателей" (большинство участников будут относиться к обеим категориям). Аудитор будет отвечать (может быть, совместно с другими аудиторами) за то, чтобы действительно пройти по коду, просматривая его на предмет наличия брешей в защите и/или ошибок. Как только будет накоплено достаточное количество патчей, означающих, что была найдена какая-то проблема, они будут посланы обозревателям, которые будут отвечать за просмотр изменений еще раз и, если аудитор не имеет привилегий коммиттера, внесение изменений в исходные тексты системы, когда и если они будут необходимы.
Чтобы стать аудитором, вы должны иметь привилегии коммиттера на машине freefall.FreeBSD.org либо контакт с другим аудитором/обозревателем, который их имеет. Вы должны также работать с или иметь доступ к исходным текстам FreeBSD-current, так как все наши изменения будут делаться относительно этой ветки, а затем (по мере необходимости) переноситься обратно в ветви 2.1 и 2.2.
Что искать и каким общим правилам нужно следовать, достаточно сложно определить, поэтому я оформил их в Руководство по безопасности FreeBSD. Прочтите его прямо сейчас, если вы этого еще не сделали. Другими прекрасными источниками информации являются Secure Programming Checklist и Unix Security Checklist, доступные с сервера AUSCERT.
Вот подписной лист как он есть. В настоящее время он имеет *весьма* приблизительный вид, принимая во внимания что мы только начали, и как только все желающие укажут, аудит и обозрение каких модулей они готовы проводить, мы их сюда занесем. Если этого табличного формата по мере заполнения также станет недостаточно, мы сможем его изменить, перенести в другое место или придумаем что-нибудь еще :) Я оставил несколько строк для примера открытыми, к тому же вряд ли кто-нибудь захочет взять такие большие куски.
Всё в базе данных модулей представляет собой потенциальный объект для аудита - от такого маленького модуля, как "cat", до большого "lib"; самым важным является то, что люди могут брать куски не больше, чем они полагают в состоянии справиться. Если вы возьмете 15 кусочков на одну тарелку, но просмотрите только 5, вряд ли это будет хорошо, так как другие аудиторы будут полагать, что оставшиеся 10 тоже просмотрены.
Чтобы подписаться на что-нибудь, пожалуйста, пошлите письмо на адрес jmb@FreeBSD.org.Модуль | Аудитор(ы) | Обозреватели | Статус |
---|---|---|---|
bin | ac ee* gvr* jh ka mu vk | imp* jmb* md* gvr* | Открыто |
contrib | cg | gvr* | Открыто |
eBones | mrvm* | gvr* | Открыто |
games | ab ee* xaa | gvr* | Открыто |
init | gl | gvr* | Открыто |
lib | ak bjn pst* | dg* imp* jkh* gvr* | Открыто |
libc | ee* mu | gvr* | Открыто |
libexec | crh ee* imp* mr witr | gvr* | Открыто |
lkm | dob* | gvr* | Открыто |
sbin | ee* imp* or* tao | jmb* md* gvr* | Открыто |
secure | dc mrvm* | gvr* | Открыто |
telnetd | ac dn | imp* gvr* | Открыто |
usr.bin | bob ee* jha jm ky* rb rd rjk vk | md* gvr* | Открыто |
usr.sbin | ee* ejc gl imp* jm marc rd | md* gvr* | Open |
Это список людей, которые изъявили желание участвовать в проекте как аудиторы или обозреватели. К ним можно обратиться, послав письмо на адрес auditors@FreeBSD.org в случае, когда нужно послать письмо всем аудиторам. Если вы хотите найти аудиторов или обозревателя, работающих в конкретной категории, скажем, usr.sbin, то вам нужно послать письмо в адрес audit-usr.sbin@FreeBSD.org.
Ключ | Имя аудитора/обозревателя и адрес Email |
---|---|
ab | Aaron Bornstein aaronb@j51.com |
ac | Adrian Chadd adrian@psinet.net.au |
ak | Adam Kubicki apk@itl.waw.pl |
am | Albert Mietus gam@gamp.hacom.nl |
avk | Alexander V. Kalganov top@sonic.cris.net |
bb | Bob Bishop rb@gid.co.uk |
bjn | Brent J. Nordquist nordquist@platinum.com |
bob | Bob Willcox bob@luke.pmr.com |
btm | Brian T. Michely brianm@cmhcsys.com |
cg | Coranth Gryphon gryphon@healer.com |
cl | Chris Lambertus cmlambertus@ucdavis.edu |
crh | Charles Henrich henrich@crh.cl.msu.edu |
dc | Dan Cross tenser@spitfire.ecsel.psu.edu |
dg* | David Greenman davidg@FreeBSD.org |
din | Dinesh Nair dinesh@alphaque.com |
dn | David Nugent davidn@labs.usn.blaze.net.au |
dob* | David E. O'Brien obrien@NUXI.com |
dz | Danny J. Zerkel dzerkel@phofarm.com |
ee* | Eivind Eklund eivind@FreeBSD.org |
eh | Elijah Hempstone avatar@gandalf.bss.sol.net |
ehu | Ernest Hua hua@chromatic.com |
ejc | Eric J. Chet ejc@gargoyle.bazzle.com |
gl | Giles Lean giles@nemeton.com.au |
gvr* | Guido van Rooij guido@FreeBSD.org |
gw | Graham Wheeler gram@oms.co.za |
imp* | Warner Losh imp@FreeBSD.org |
jb | Jim Bresler jfb11@inlink.com |
jh | Jake Hamby jehamby@lightside.com |
jha | John H. Aughey jha@cs.purdue.edu |
jk | Jerry Kendall Jerry@kcis.com |
jkh* | Jordan K. Hubbard jkh@FreeBSD.org |
jm | Josef Moellers mollers.pad@sni.de |
jmb* | Jonathan M. Bresler jmb@FreeBSD.org |
joe* | Joe Greco jgreco@solaria.sol.net |
ka | Kalganov Alexander top@bird.cris.net |
ki | Kenneth Ingham ingham@i-pi.com |
ky* | Kazutaka YOKOTA yokota@zodiac.mech.utsunomiya-u.ac.jp |
marc | Marc Slemko marcs@znep.com |
md* | Matt Dillon dillon@best.net |
mr | Mike Romaniw msr@cuc.com |
mrvm* | Mark Murray mark@grondar.za |
mu | Mudge mudge@l0pht.com |
or* | Ollivier Robert roberto@keltia.freenix.fr |
pb | Peter Blake ppb@baloo.tcp.co.uk |
peter* | Peter Wemm peter@FreeBSD.org |
phk* | Poul-Henning Kamp phk@FreeBSD.org |
pst* | Paul Traina pst@FreeBSD.org |
rb | Reinier Bezuidenhout rbezuide@oskar.nanoteq.co.za |
rd | Rajiv Dighe rajivd@sprynet.com |
rel | Roger Espel Llima espel@llaic.univ-bpclermont.fr |
rjk | Richard J Kuhns rjk@grauel.com |
rm | Robin Melville robmel@nadt.org.uk |
rs | Robert Sexton robert@kudra.com |
sc | Sergei Chechetkin csl@whale.sunbay.crimea.ua |
tao | Brian Tao taob@risc.org |
tdr | Thomas David Rivers ponds!rivers@dg-rtp.dg.com |
vk | Vadim Kolontsov vadim@tversu.ac.ru |
witr | Robert Withrow witr@rwwa.com |
xaa | Mark Huizer xaa@stack.nl |