В свете проявляемого нами в последнее время (и все более усиливающегося) интереса к вопросам безопасности, стало достаточно очевидным, что только строгий и полный просмотр дерева исходных текстов 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 тоже просмотрены.
Чтобы подписаться на что-нибудь, пожалуйста, пошлите письмо на адрес [email protected].Модуль | Аудитор(ы) | Обозреватели | Статус |
---|---|---|---|
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 |
Это список людей, которые изъявили желание участвовать в проекте как аудиторы или обозреватели. К ним можно обратиться, послав письмо на адрес [email protected] в случае, когда нужно послать письмо всем аудиторам. Если вы хотите найти аудиторов или обозревателя, работающих в конкретной категории, скажем, usr.sbin, то вам нужно послать письмо в адрес audit-usr.sbin@FreeBSD.org.
Ключ | Имя аудитора/обозревателя и адрес Email |
---|---|
ab | Aaron Bornstein [email protected] |
ac | Adrian Chadd [email protected] |
ak | Adam Kubicki [email protected] |
am | Albert Mietus [email protected] |
avk | Alexander V. Kalganov [email protected] |
bb | Bob Bishop [email protected] |
bjn | Brent J. Nordquist [email protected] |
bob | Bob Willcox [email protected] |
btm | Brian T. Michely [email protected] |
cg | Coranth Gryphon [email protected] |
cl | Chris Lambertus [email protected] |
crh | Charles Henrich [email protected] |
dc | Dan Cross [email protected] |
dg* | David Greenman [email protected] |
din | Dinesh Nair [email protected] |
dn | David Nugent [email protected] |
dob* | David E. O'Brien [email protected] |
dz | Danny J. Zerkel [email protected] |
ee* | Eivind Eklund [email protected] |
eh | Elijah Hempstone [email protected] |
ehu | Ernest Hua [email protected] |
ejc | Eric J. Chet [email protected] |
gl | Giles Lean [email protected] |
gvr* | Guido van Rooij [email protected] |
gw | Graham Wheeler [email protected] |
imp* | Warner Losh [email protected] |
jb | Jim Bresler [email protected] |
jh | Jake Hamby [email protected] |
jha | John H. Aughey [email protected] |
jk | Jerry Kendall [email protected] |
jkh* | Jordan K. Hubbard [email protected] |
jm | Josef Moellers [email protected] |
jmb* | Jonathan M. Bresler [email protected] |
joe* | Joe Greco [email protected] |
ka | Kalganov Alexander [email protected] |
ki | Kenneth Ingham [email protected] |
ky* | Kazutaka YOKOTA [email protected] |
marc | Marc Slemko [email protected] |
md* | Matt Dillon [email protected] |
mr | Mike Romaniw [email protected] |
mrvm* | Mark Murray [email protected] |
mu | Mudge [email protected] |
or* | Ollivier Robert [email protected] |
pb | Peter Blake [email protected] |
peter* | Peter Wemm [email protected] |
phk* | Poul-Henning Kamp [email protected] |
pst* | Paul Traina [email protected] |
rb | Reinier Bezuidenhout [email protected] |
rd | Rajiv Dighe [email protected] |
rel | Roger Espel Llima [email protected] |
rjk | Richard J Kuhns [email protected] |
rm | Robin Melville [email protected] |
rs | Robert Sexton [email protected] |
sc | Sergei Chechetkin [email protected] |
tao | Brian Tao [email protected] |
tdr | Thomas David Rivers [email protected] |
vk | Vadim Kolontsov [email protected] |
witr | Robert Withrow [email protected] |
xaa | Mark Huizer [email protected] |