Как стать автором
Обновить

Комментарии 55

Первый компьютерный пример, что приходит в голову — микроядерные ОС. Вместо того, чтобы допустить сторонний код в ядро, а потом ограничивать его безопасность и бороться с нестабильностью, в микроядерных ОС, как правило, в привилегированном режиме работает только небольшая, проверенная часть кода.
Shorewall, надстройка над iptables, в случае ошибки парсинга своих конфиг-файлов, не просто выдаёт ошибку, а закрывает все порты, чтобы, пока файрвол не запущен, никто не мог использовать уязвимости на открытых портах. Правда, такое поведение приводит к полной недоступности сервера извне, что не всегда хорошо. Зато, система находится в полной безопасности.
Когда-то, еще в фидо, ходили истории «если бы ОС были лифтами» или что-то в этом духе. Если стиль тех текстов применить к данной ситуации, то можно так описать поведение shorewall: если трос лифта обрывается, то его содержимое заливается жидким азотом, а лифт отправляется на луну.
К счастью, такое поведение можно отключить, а последние версии ещё и оставляют открытым сокет к шеллу, из которого была запущена команда старта файрвола.
Представьте себе такую систему, где по умолчанию файлы защищены от модификации. При любом небезопасном действии система будет говорить пользователю: «Программа такая-то пытается изменить системный файл. Разрешить?» Вам очень быстро надоест отвечать «да»…

Беда компьютеров в том, что они сложнее лифта и паровоза. И за безопасность придётся платить удобствами. Панацеи тут нет.
Win Vista…
Да, именно. Заметьте, не самая популярная ОС. И, по-моему, не самая безопасная.
Беда лифтов и паровозов в своё время была в том, что они сложнее повозки. )

А потом найдётся молодчик, который и для ОС придумает нечто гениальное, что до него никому в голову не приходило.
Selinux.

Все правила уже продуманы и записаны. То есть, если вебсервер начинает читать /etc/shadow, то что-то тут не то :) Естественно можно очень просто добавить свои правила.
а если веб-браузер лезет в /home/user/, то это я файл по почте отправляю или вирус с вебсайта хулиганит?
Кто, простите, лезет? Для пользовательских foo.bar/~username есть public_html
Поясню. Я захожу на mail.google.com и создаю письмо с вложением. Браузер скачивает вложение из /home/user/секретный_файл.txt

Ещё примеры. Я открываю документ со встроенными макросами. Макросы лезут в базу данных с моими привелегиями.

Я устанавливаю Java-машину. Во время установки модули java quick start и java update прописываются в автозапуск.

Это всё абсолютно легальные действия, происходящие каждый день по многу раз. Но с точки зрения безопасности они — катастрофа. Следовало бы каждый раз запрашивать подтвержение у пользователя.

Наличие правил а-ля Selinux позволит значительно сократить количество случаев, когда необходимо подтверждение пользователя. Но описанные выше случаи принципиально невозможно исключить. По крайней мере, я не вижу, как.
Не обижайтесь, но вы просто не в теме. ;)

Если вы отправляете файл, то за ним лезет браузер, а не вебсервер. Ясно, что браузеру разрешено читать из хомяков.

Об установке джава-машины заботиться ракетный менеджер, а не юзер, так что все правила новые пропишуться автоматом.

Но это всё для систем с управлением ПО, в умелец это будет трудно сделать.
1. Я и имел в виду браузер, а не сервер. Браузер выполняет априори неизвестно какие скрипты, и имеет доступ к хомяку.

2. Насчёт ракетного менеджера я и правда не в теме. Моя мысль в том, что установка ПО — потенциально опасная операция. На мой компьютер скачивается новый код, который может прописаться в автозагрузку. Система управления ПО ведь не может гарантировать безопасность всех программ, которые могут мне понадобиться.

Вот и получается, что даже для некоторых простых и рутинных действий придётся или соглашаться с небезопасными правилами по умолчанию, или посноянно спрашивать пользователя.
Проверка орфографии в андроиде отжигает по полной :) Причём отключить её нельзя.

1. Ну да, максимум что он может сделать это угрохать файлы одного пользователя.

2. Обычно при установки системы прописываются ключи репозиториев откуда ставить можно. Если подпись не совпала — поставить уже ничего нельзя.

Можно конечно проверять подпись при запуске приложения, но это отдаёт параноей.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Спасибо
Но и тут не всё так однозначно.
Насколько я помню, там при падении лифта Тринити и Нео поднялись вверх на том же тросе, значит трос оставался частично натянутым, что могло не дать выпуститься тормозам.
система тормозов-то в лифте, как я понимаю. Поэтому как только трос отстрелили, лифт должен был остановиться (± 2-3 секунды)
Лифт то мог бы и остановиться, но они полетели вверх благодаря противовесу, а тормозов на нем нету
НЛО прилетело и опубликовало эту надпись здесь
Это понятно, но больше именно лифт интересовал, как я понимаю :)
Я вот пытался доказать коллегам, что в ACL (контроль доступа) для нашего web-приложения должен по умолчанию всё запрещать.
Собственно я так и реализовал, воспользовавшись тем, что никто не стал особо в это вникать.
юнит-тесты :) сначала тест — потом код
тесты все-таки привязаны к системе, являются её частью, которая спроектирована с учетом возможного поведения системы. Здесь же говорится о безусловном поведении в условиях нарушения своей целостности.
Например: пробой в системе защиты сайта обычно к приводит к повышению привилегий пользователя. Так вот правильное поведение по методу «лифта» это отсутствие привилегий до которых можно повыситься, например отсутствие привилегии администратора :) Таким образом, следования этому принципу требует исключения возможности использования скомпрометированной системы.

Тестами все не покрыть на практике.
Принцип системы должен быть иным. Тесты можно сделать и для первого примера тормозов поезда, и для второго.
НЛО прилетело и опубликовало эту надпись здесь
Хороший пример. Примитивный, жесткий но весьма надежный.
НЛО прилетело и опубликовало эту надпись здесь
А как вагоны тогда с сортировочных горок спускают? Заглушки ставят, получается?
НЛО прилетело и опубликовало эту надпись здесь
Если есть некий баллон или конструкция — значит её можно сломать.
Пассивная безопасность такая пассивная.
НЛО прилетело и опубликовало эту надпись здесь
На фотографиях, найденных в гугле, под каждым вагоном видны как раз автономные баллоны.
Оно логично, но теперь я перестал понимать как кантуют вагоны на сортировочных станциях? Или там есть режим «тормоз выдумали трусы»?
Ну а кто мешает их подключать к компрессору маневрового локомотива?
Я может слово неправильное употребил?
Имелось ввиду использование маневровой горки, вроде в ж.д. «не кантовать» = «с горки не спускать» (впрочем в комментарии выше уже ответили на мой вопрос)
В каждом вагоне стоят автономные баллоны. Локомотив их накачивает, после чего, перекрыв вентили на вагонах, состав можно расцеплять.
А, понятно, спасибо
Генрих Альтшуллер изучил и систематизировал такие изобретения и дал начало такой дисциплине как Т.Р.И.З. И сформулировал понятие идеального конечного результата (ИКР): «Некий элемент (X-элемент) системы или окружающей среды сам устраняет вредное воздействие, сохраняя способность выполнять полезное воздействие».
Тоже сразу вспомнил о ТРИЗ. Вот здесь www.altshuller.ru/triz/technique1.asp есть некоторое количество приемов, которые интересно использовать при решении разных нерешаемых в лоб задач.
Описанные в статье решения больше всего походят на Прием 11, Принцип заранее подложенной подушки.

Конечно, отдельное использование этих методов без изучения ТРИЗ похоже на забивание гвоздей микроскопом, но все равно это полезная практика для мозга. К тому же, может кого-то она сподвигнет заняться изучением ТРИЗ всерьез.
Если включить механизм высокой абстракции, то принцип лифта и поезда (сила пассивной безопасности) уже давно используется для решения компьютерных проблем. Поясню, когда лифт в состоянии пассивной безопасности (с оторванным тросом), то ним пользоваться как лифтом нельзя. То же самое произойдет если выключить компьютер. Он будет находится в состоянии пассивной безопасности, никакой вирус не страшен, не завсинит и не загудит. Правда как и лифтом, в этот момент пользоваться компьютером нельзя.

Я кстати вспоминаю свой первый опыт работы на 386 компьютере, и как-то раз появился на экране монитора какой-то чудный вирус, посыпались буковки с синего экрана NC вниз и мне пришлось выдернуть шнур из электрической сети, что бы прервать работу, то есть использовать систему пассивной безопасности :)
Проблемы начинатются тогда, когда безопасность = работающий компьютер. На АЭС например, или в самолете. Тупо вырубить его нельзя. Необходима именно надежная работоспособность.

Хотя промежуточный вариант таки применяется — если что-то [проблему] нельзя устранить полностью, нужно свести к минимуму ее последствия.

В случае с системами управления — это многократное резервирование и активное дублирование систем. Вон как в недавних постах про авиационные системы. Есть скажем два модуля, выполняющие одинаковую работу. Подразумевается, что их реакция должна быть всегда одинаковой. Если один из них начинает давать неверные данные (не совпадающие с результатами другого), то отрубаются ОБА (по армейскому принципу, не разбираемся, кто виноват). И т. д.

Например скринсейверы — пока кто-то работает, скринсейвер спит.
Винчестер — пока данные читаются, диски крутятся. Обращений нет — диск засыпает.
VmWareESX — пока есть нагрузка, хосты работают, как только нет — засыпают.
Wake-on-lan
Обратный клапан
На железной дороге есть еще один хороший пример этой системы — семафоры. Сейчас их почти не используют, но раньше они были классическим примером.

Семафор — по сути, жезл на столбе. Если он поднят, можно ехать, если опущен, надо стоять. Так вот, управлялись они раньше с помошью тросов. Трос натягивается — семафор поднимается. Если же трос рвался, то «отключенный» семафор опускался под силой тяжести — таким образом, по причине обрыва троса не должно было произойти аварии.

Кстати, нам в универе об этом рассказывали. Именно с выводом, что в сложных системах состоянием «по умолчанию» должно быть состояние стабильное и безопасное. Так что тезис для дискуссии очень правильный.
SDL (да и все другие методики написания качественного и безопасного софта) постулирует, что система по умолчанию должна работать в безопасном режиме (например, параметры функции по умолчанию должны приводить к безопасной работе функции). BSOD/kernel panic — один из таких примеров: операционка не знает что делать дальше и делает самое безопасное что может — прерывает работу и выдает отчет об окружении, вызвавшем ошибку.

Так что открытия вы не совершили. Но с другой стороны, это может заставить молодых разработчиков задуматься о том, как они проектируют/пишут ПО.
Спасибо за коммент, жаль что открытие не мое, равно как и статья.

Но добавлю еще один пример: дефолтные настройки приложения вшитые в само приложение дают максимальную стабильность, настройки пользователя позволят оттюнинговать его и внести потенциальную нестабильность, но просто удалив свои настройки можно вернуть приложение в исходное состояние.
Если упал сервер базы данных, то никто не украдёт ваши пароли. Вполне пассивная безопасность)))

А по сути очень интересный подход, но в ограниченном применении.
> Джордж Вестингхауз

Вестингауз! Можно же было хотя бы в Википедию посмотреть, а?
Принцип несимметричных (защитных) отказов используется повсеместно в России в железнодорожной автоматике. Например, якорь реле под действием силы тяжести возвращается в защитное состояние.
Firewall в FreeBSD поумолчанию никого никуда непускает, а потом ты добавляешь правила кому и что можно делать. Если какой-то пакет не попал не в одно правило то его поумолчанию отбрасывает.
Очень интересно, почему тот же принцип не был имплементирован в машинах — насколько я понимаю, там с тормозами как раз наоборот.
Возможно, потому, что внезапное неожиданное (и абсолютно неконтролируемое) торможение машины при отказе тормозной системы будет куда опаснее, чем плавное торможение двигателем или ручником.
В некоторых грузовиках применяется та же обратная пневматическая система тормозов. Вспомните, как они «сопят», когда начинают движение :) Это и есть продувка цилиндров
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории