В ноябрьском выпуске журнала MSDN опубликована статья Говарда и Салливана в которой представлены 10 фрагментов уязвимого кода. Читателям предлагается найти все допущенные в них уязвимости, посчитать свои баллы и, тем самым, осуществить сабж. После каждого из фрагментов идет весьма познавательный "разбор полетов" на тему "почему так нельзя делать".
Набрал 12 баллов , зато есть куда развиваться
P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C#
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C#
Справедливости ради надо заметить, что уязвимости, которые эти фрагменты демонстрируют, легко можно было проиллюстрировать и примерами на С/С++. А вот наоборот — вряд ли.
What a piece of work is a man! how noble in reason! how infinite in faculty! in form and moving how express and admirable! in action how like an angel! in apprehension how like a god! the beauty of the world! the paragon of animals!
Допустим, что код Linux – это приложение, помеченное как корень setuid. Когда приложение запускается обычным пользователем, приложение реально работает как корень, а это означает уязвимость локального повышения прав доступа.
Здравствуйте, Hobot Bobot, Вы писали:
KV>>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C# ;) HB>Справедливости ради надо заметить, что уязвимости, которые эти фрагменты демонстрируют, легко можно было проиллюстрировать и примерами на С/С++. А вот наоборот — вряд ли. :)
да вернитесь же наконец в сырую землю! вам легче спать от того, что именно такие уязвимости не получится сделать на С#? хорошо, нельзя именно эти, но можно нахреначить кучу других. и не забывайте, что в C++ есть готовые стандартные средства, которыми можно многократно сократить возможность допущения приведенных ошибок. скажете, что раз в языке есть потенциально небезопасные вещи, то ими нужно обязательно пользоваться? если вы пользуетесь "низкоуровневым" api, то должны понимать, как именно с ним нужно работать и, соответсвенно, берете на себя ответственность, за все потенциальные ошибки. хотите поковыряться в АЭС паяльником, вместо того, чтобы заменить готовый блок — ковыряйтесь.
Здравствуйте, vayerx, Вы писали:
V>Здравствуйте, Hobot Bobot, Вы писали:
KV>>>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C# HB>>Справедливости ради надо заметить, что уязвимости, которые эти фрагменты демонстрируют, легко можно было проиллюстрировать и примерами на С/С++. А вот наоборот — вряд ли.
V>да вернитесь же наконец в сырую землю!
Ну спасибо. Нет, я тоже вашего брата недолюбливаю, но чтобы настолько...
Можно один вопрос? Если все так радужно, почему большая часть уязвимостей, обнаруживаемая в ОСях и, скажем — броузерах, относится именно к этому классу уязвимостей (статистика, подтверждающая это есть на secunia.com и securityfocus.com)?
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Можно один вопрос? Если все так радужно, почему большая часть уязвимостей, обнаруживаемая в ОСях и, скажем — броузерах, относится именно к этому классу уязвимостей (статистика, подтверждающая это есть на secunia.com и securityfocus.com)?
О какой именно статистике на secunia.com и securityfocus.com идет речь? Приведите, пожалуйста, конкретные ссылки.
Попытаюсь ответить априорно, правда, вопросом на вопрос. Какой процент софта, в котором обнаруженны уязвимости, написан/использует код "олдскульникамов" и/или ansi c? От какого объема софта считается процент (от суммарного во всем мире? от неуправляемого? etc?)? Как именно рассчитвается этот процент (кол-во приложений? кол-во пользователей? суммарное время использования? кол-во строчек кода? etc?)?
Здравствуйте, vayerx, Вы писали:
V>Здравствуйте, Hobot Bobot, Вы писали:
KV>>>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C# HB>>Справедливости ради надо заметить, что уязвимости, которые эти фрагменты демонстрируют, легко можно было проиллюстрировать и примерами на С/С++. А вот наоборот — вряд ли.
V>да вернитесь же наконец в сырую землю! вам легче спать от того, что именно такие уязвимости не получится сделать на С#? хорошо, нельзя именно эти, но можно нахреначить кучу других. и не забывайте, что в C++ есть готовые стандартные средства, которыми можно многократно сократить возможность допущения приведенных ошибок.
Забавно смотреть, как Microsoft игнорирует эти стандартные средства и взамен толкает свои долбанутые технологии SSAL и SRAL. Вероятно, индусов от программирования легче научить SSAL-у чем классу std::string.
kochetkov.vladimir wrote:
> познавательный "разбор полетов" на тему "почему так нельзя делать".
По поводу вопроса 6. Этот микрософт сам любит так дизайнить системы, что
совершенно разные сущности сваливаются в одну кучу. Этот IE-шный document.all,
аттрибуты тегов перемешанные с свойствами js-объектов, name и id элементов. Ещё
меня всегда поражал объект Request в ASP, который по операции Request("blah")
перебирает всё что можно — от http-заголовков, куков до POST data. И оказывается
эту великую идею перенесли и в ASP.NET. А теперь вот c безопасностью борются..
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, vayerx, Вы писали:
V>О какой именно статистике на secunia.com и securityfocus.com идет речь? Приведите, пожалуйста, конкретные ссылки. V>Попытаюсь ответить априорно, правда, вопросом на вопрос. Какой процент софта, в котором обнаруженны уязвимости, написан/использует код "олдскульникамов" и/или ansi c? От какого объема софта считается процент (от суммарного во всем мире? от неуправляемого? etc?)? Как именно рассчитвается этот процент (кол-во приложений? кол-во пользователей? суммарное время использования? кол-во строчек кода? etc?)?
Здравствуйте, kochetkov.vladimir, Вы писали:
>>>А теперь вот c безопасностью борются.. KV>Ваши предложения?
1) Расстрелять разработчиков Microsoft.
2) Переименовать Windows в "Linux".
kochetkov.vladimir wrote:
>> >А теперь вот c безопасностью борются.. > Ваши предложения?
Не использовать кривые технологии.
Скажем, в сервлетах сделано всё правильно, есть getParameter который берёт из
query string или из post. И есть getHeader — для заголовков http, и getCookies
для кук. Всё чётко разделено.
А в ASP если брать данные из формы, то нужно писать либо Request("param") —
который берёт откуда попало, либо
Request.QueryString("param").Item || Request.Form("param").Item (и это только в
js так удобно можно).
А уж если вспомнить весь этот ужас с установкой/настройкой, скажем того же IIS и
если сравнить с jetty...
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>В ноябрьском выпуске журнала MSDN опубликована статья Говарда и Салливана в которой представлены 10 фрагментов уязвимого кода.
За такой перевод нужно увольнять без выходного пособия .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, ., Вы писали:
.>kochetkov.vladimir wrote:
>>> >А теперь вот c безопасностью борются.. >> Ваши предложения? .>Не использовать кривые технологии.
Скорее, не использовать технологии криво
.>Скажем, в сервлетах сделано всё правильно
И где сейчас сервлеты?
.>А уж если вспомнить весь этот ужас с установкой/настройкой, скажем того же IIS и .>если сравнить с jetty...
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, alexeiz, Вы писали:
A>>и взамен толкает свои долбанутые технологии SSAL и SRAL.
L>Что, реально есть такие технологии? Жесть!
alexeiz упомянул эти технологии, видимо потому является приверженцем куда более примитивных PEREVIRAL, GNAL и NECHITAL.
Речь о SAL. Собственно, говоря про security-костыли в плюсах, я в т.ч. SAL и имел ввиду.
kochetkov.vladimir wrote:
> .>Скажем, в сервлетах сделано всё правильно > И где сейчас сервлеты?
Живут и здравствуют. Немного фичи добавляют и только.
Просто их напрямую уже редко используют, а фреймворки всё равно основываются
старых добрых сервлетах.
> .>А уж если вспомнить весь этот ужас с установкой/настройкой, скажем > того же IIS и > .>если сравнить с jetty... > Чего там ужасного-то?
да хотя бы в случае embedded...
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>В ноябрьском выпуске журнала MSDN опубликована статья Говарда и Салливана в которой представлены 10 фрагментов уязвимого кода.
VD>За такой перевод нужно увольнять без выходного пособия .
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>В ноябрьском выпуске журнала MSDN опубликована статья Говарда и Салливана в которой представлены 10 фрагментов уязвимого кода. Читателям предлагается найти все допущенные в них уязвимости, посчитать свои баллы и, тем самым, осуществить сабж. После каждого из фрагментов идет весьма познавательный "разбор полетов" на тему "почему так нельзя делать".
KV>Набрал 12 баллов , зато есть куда развиваться
KV>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C#
смешно, что советуют ГУИДы в качестве идентификаторов сессий хотя здесь
Здравствуйте, avpavlov, Вы писали:
A>Здравствуйте, kochetkov.vladimir, Вы писали:
KV>>В ноябрьском выпуске журнала MSDN опубликована статья Говарда и Салливана в которой представлены 10 фрагментов уязвимого кода. Читателям предлагается найти все допущенные в них уязвимости, посчитать свои баллы и, тем самым, осуществить сабж. После каждого из фрагментов идет весьма познавательный "разбор полетов" на тему "почему так нельзя делать".
KV>>Набрал 12 баллов , зато есть куда развиваться
KV>>P.S: На радость "Нео и Морфеусов", 6 фрагментов написаны на C#
A>смешно, что советуют ГУИДы в качестве идентификаторов сессий хотя здесь
приведена ссылка на статью, где описывается уязвимость такого подхода
Мог бы поспорить, что атаки на перехват пользовательской сессии редко обуславливаются только лишь нестойкостью sessionID (зависит от используемой платформы, реализации аутентификации и т.п.), но не буду. Т.к. GUID'ы действительно лучше вообще не применять в таких задачах от греха подальше. По-моему, и в стандарте на них так и сказано
Хотя в статье авторы нисколько не слукавили. GUID в том конкретном случае действительно был бы "гораздо лучшим вариантом" по сравнению с инкрементом целых чисел
Они вообще слишком много лукавили на мой взгляд — например задним числом упоминают кластер, или что код выполняется на клиенте — этот последний пример меня особенно разозлил Совершенно не очевидно что это исполняется на клиенте