LINUX.ORG.RU
ФорумTalks

Действительно открытые веб-фреймворки настолько небезопасны?


0

1

Набрел тут на пиаристую статейку: http://ocpsoft.org/opensource/secure-your-applications-url-based-attacks-are-... (можно не читать)

Статейка рассказывает про ужасные и тупые баги:

http://struts.apache.org/2.2.1/docs/s2-005.html

http://www.springsource.com/security/cve-2011-2730

От себя можно добавить аналогичную

Небезопасные параметры по умолчанию в проектах на базе Rails

Все вышеуказанное демонстрирует две вещи:

- использование сторонних библиотек небезопасно

- налицо проблема модели разработки открытых систем - квалификация разработчиков никак не регулируется, что позволяет людям в принципе не задумывающимся о вопросах безопасности (а вопросы ведь тривиальные!) разрабатывать базовое ПО которое потом используют практически все в своих проектах.

В итоге выходит, если у вас задача сделать сколь нибудь безопасную систему либо вам придется заниматься постоянным аудитом кода новых версий сторонних библиотек либо писать все с нуля самим, или использовать ПО вендоров несущих какую либо ответственность за свои ошибки (никаких AS IS, NO WARRANTY?).

Ответ на: комментарий от kim-roader

Этот минимум — теоретически недостижимый предел. В случае решения недопоставленной задачи при помощи неавтоматизируемых средств (программистов) нет никаких аргументированно уменьшающих число ошибок средств.

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

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

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

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

kim-roader ★★
()
Ответ на: комментарий от Manhunt

Так ты готов после внедрения практик нести реальную ответственность своими яйцами за критически баги, или нет?

Конечно нет. Недоказанные практики, которые помогали трём с половиной анонимусам, слова которых в последний раз пытались проверять статистическим анализом эдак в 85 году (ну ладно, в 95 если считать проверку на которую я дал ссылку в прошлом сообщении — корректной), как-то не внушают мне достаточно уверенности.

kim-roader ★★
()
Ответ на: комментарий от kim-roader

Только вот тут приходится надеяться, что формализация была корректной

Требования типа «работать без переполнения буферов» формализуются достаточно просто, чтобы надеяться на корректность в этой части; вплоть до готовности отвечать яйцами после того, как будет проведено тщательное тестирование. Нетривиальные бизнес-сценарии могут быть формализованы не вполне верно, да - согласен, тут проблема.

математическое доказательство не содержало ошибок интерпретации (вы ведь доказываете про модель, а не реальный код на реальном железе?)

Про машинный код.

а системы верификации никогда не ошибаются

Верификация готового доказательства, вроде бы, должна быть достаточно простой задачей.

Manhunt ★★★★★
()
Ответ на: комментарий от kim-roader

вы ведь доказываете про модель

Да, про модель ЭВМ. Доказать, что ЭВМ соответствует модели - отдельное, презабавнейшее занятие для разработчиков аппаратуры :D

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Верификация готового доказательства, вроде бы, должна быть достаточно простой задачей.

Нет, не очень. В системах автоматического доказательства теорем периодически тоже находят ошибки, а доказательства великих теорем проверяются топовыми математиками по два года.

kim-roader ★★
()
Ответ на: комментарий от Manhunt

Требования типа «работать без переполнения буферов» формализуются достаточно просто, чтобы надеяться на корректность в этой части

Ты, конечно, про динамические проверки, а не статические. Для надежных статических проверок надо иметь статическую систему проверки зависимых типов (а такие системы упираются в проблему останова). С динамическими проверками всё проще, но они значат только то, что при вызове «five_elements_array[6] = 12» в программе вызовется исключение/завершение программы с ошибкой, вместо того, чтобы засрать чужую память.

kim-roader ★★
()
Ответ на: комментарий от kim-roader

В системах автоматического доказательства теорем периодически тоже находят ошибки

Между поиском доказательства и проверкой доказательства - огромная пропасть. Первое несравнимо сложнее.

а доказательства великих теорем проверяются топовыми математиками по два года

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

Manhunt ★★★★★
()
Ответ на: комментарий от kim-roader

Ты, конечно, про динамические проверки, а не статические.

Это уже от требований зависит. Можно и про статические.

Для надежных статических проверок надо иметь статическую систему проверки зависимых типов (а такие системы упираются в проблему останова).

В общем случае - упираются. А в частном случае - пиши свою программу так, чтобы не уперлось.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

А так они должны проверяется машиной, причем по мощности вполне может хватить того, что встроено в твой мобильный телефон

И сколько лет мне придётся потратить на изобретение структуризации математического знания и сколько гигабайт на хранение этого знания?

kim-roader ★★
()
Ответ на: комментарий от Manhunt

А в частном случае - пиши свою программу так, чтобы не уперлось

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

kim-roader ★★
()
Ответ на: комментарий от kim-roader

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

Как вариант. Лишь бы формально удовлетворить формальным требованиям.

Manhunt ★★★★★
()
Ответ на: комментарий от Manhunt

Изобретено уже. http://www.reflexion.ru/club/16-04-09Beklemishev.pdf

Сам ты, как я понимаю, не открывал презенташку?

Формализм ZFC и PA … плохо приспособлен к нуждам реальной формализации математики.
развёрнутая запись числа 1 в формальной теории множеств содержит 4 523 659 424 929 символов

Замечательно. Это получается 4 терабайта на одно число. А ведь ими ещё и ворочать надо. И ведь при этом:

Абсолютной надёжности не гарантирует ни один прувер.

И того удовлетворительно формализованной математики нет и ждать не приходится. Есть некоторые поделки в узких областях, а в основном пилите сами.

kim-roader ★★
()
Ответ на: комментарий от Manhunt

Лишь бы формально удовлетворить формальным требованиям

Только вот не все формальные задачи можно уложить в такие формальные решения. А общего решения, как вы уже согласились, у нас нет.

kim-roader ★★
()
Ответ на: комментарий от GateKeeper

а причем здесь потребление проца и 12309? Если нет замираний мышки, зависаний, невозможности нормального ввода данных с устройств ввода - это НЕ 12309. Высокая нагрузка проца при fsck ни о чем не говорит

Pinkbyte ★★★★★
()
Ответ на: комментарий от kim-roader

Сам ты, как я понимаю, не открывал презенташку?

Открывал.

развёрнутая запись числа 1 в формальной теории множеств содержит 4 523 659 424 929 символов

Пфф. Во-первых, вовсе не обязательно всегда манипулировать развернутой записью. Во-вторых, вот тебе работа, на которую дается ссылка: http://personnel.univ-reunion.fr/ardm/inefff.pdf

If one seeks an ad hoc definition of the number 1 in Bourbaki's dialect of set theory, a shorter one — perhaps the shortest ? — would be. τZ (∃x(x ∈ Z et ∀y(y ∈ Z =⇒ y = x))), which runs to 176 symbols



Абсолютной надёжности не гарантирует ни один прувер.

Нам не прувер нужен, а верификатор.

Manhunt ★★★★★
()
Ответ на: комментарий от kim-roader

Только вот не все формальные задачи можно уложить в такие формальные решения.

Думаю, это вопрос трудозатрат. Совершенно невменяемых, к сожалению.

Manhunt ★★★★★
()

Большинство библиотек на безопасность не влияют. Те, которые влияют, обычно вполне вылизаны. Проблема высосана из пальца.

Legioner ★★★★★
()
Ответ на: комментарий от Pinkbyte

Высокая нагрузка на проц при IOWAIT (я уже в который раз обращаю внимание: _WAIT_, акула тебе в печень! Не _RUN_!) это 12309. Просто на первых порах а) два ядра были редкостью, б) шедулеры были в еще более плачевном состоянии, чем сейчас. В итоге: простаивающие в основном на десктопах со второе по последнее ядра позволяют нормально рендерить графические отклики на действия пользователя, а в шедулеры напихали костылей, дабы не лечить этот говнокод. Однако, нагрузку во время простоя системы так и не вылечили. И, самое печальное, никто даже не может толком объяснить, какого хрена происходит. Однако, на серверах, а данный розовый чатик просто кишит лжецами и девственниками, с соплями на губах кричащими, что сабжевая ось - тех бест фор сёваз, ситуация совсем другая. Там каждый такт на счету. Просранное на «форматирование дискетки» зеоновское вычислительное ядро (даже одно из 32-64х) - это лютейший звиздец, какого может ожидать хайлоад.

GateKeeper ★★
()

> или использовать ПО вендоров несущих какую либо ответственность за свои ошибки (никаких AS IS, NO WARRANTY?).

Пример такого продукта в студию.

provaton ★★★★★
()
Ответ на: комментарий от Tark

И причем баг в рельсах это был не баг, а недосмотр разработчиков, потому как ситуация полностью описана в документации.

Эти все баги есть недосмотр разработчиков.

belous_k_a
() автор топика
Ответ на: комментарий от Legioner

А ссылки на баги это такое хитрое подтверждение вашей правоты?

belous_k_a
() автор топика
Ответ на: комментарий от GateKeeper

нагрузка на проц может быть ЛЮБОЙ при 12309. У меня top на проблемной машине говорит 80% idle, а тем не менее всё становится в позу речного омара когда идет копирование с флешки. Проблема гораздо более глубока, нежели думаешь ты или я. Не, возможно я ошибаюсь и ты знаешь больше(возможно даже являешься разработчиком ядра), тогда я умываю руки... В противном случае наш с тобой спор - как пердение в лужу, причем с обоих сторон...

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.