The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Основы разработки безопасного программного обеспечения

28.10.2008 16:55

Ассоциация SAFECode, созданная для пропаганды методов повышения безопасности программ, оборудования и сервисов, представила документ "Fundamental Practices for Secure Software Development" (PDF, 2.1Мб), в котором изложены основы разработки безопасного программного обеспечения. В документе представлены следующие рекомендации:

  • Минимизация использования потенциально небезопасных функций (strcpy, strncpy, strcat, scanf, sprintf, gets и подобных);
  • Использование последних версий средств компиляции и сборки. Например, в новых версиях gcc появились средства для защиты от срыва стека (-fstack-protector); возможность переключения определенных областей памяти, после загрузки исполняемого приложения, в режим только для чтения (-Wl,zrelro); средства рандомизации адресного пространства (-Wl -pie); функции glibc для дополнительной внутренней проверки выхода за пределы буфера функций, таких как strcpy ("-D_FORTIFY_SOURCE=2"); технология защиты от атак через параметры форматирования строки ("-Wformat" и "-Wformat-security").
  • Применение статических и динамических анализаторов кода для выявления вероятных проблем (например, различные lint-системы, хорошую подборку которых можно найти здесь);
  • Дополнительный ручной аудит кода;
  • Особое внимание при проверке входящих, получаемых из вне, и выходящих параметров;
  • Использование дополнительных библиотек для защиты от межсайтового скриптинга. Например, PHP библиотека AntiXSS;
  • Работа с каноническими форматами представления данных (подразумевается, например, что экранированные URL запросы должны приводиться в канонических вид, упрощающий проверку и исключающий передачу скрытых параметров);
  • Избежание формирования динамического SQL запроса через соединение строк (предполагается, что так легче упустить из вида непроверенный параметр);
  • Проверка стойкости используемых криптоалгоритмов;
  • Ведение подробных логов, отражающих все события в работе программы;
  • Тестирование безопасности приложения, используя различные сканеры типовых уязвимостей и генераторы случайного контента (Fuzz Testing).

Кроме того, можно отметить статью "Writing Insecure C", в которой разобраны типичные ошибки программистов на языке Си, приводящие к проблемам с безопасностью: игнорирование кодов возврата при вызове функций, ошибки приведения типов, неаккуратная работа с буферами и строками.

  1. Главная ссылка к новости (http://www.safecode.org/news.p...)
  2. SAFECode Releases Guide to Secure Development Practices
  3. Как избежать проблем безопасности в своих программах (написано более 10 лет назад)
Лицензия: CC BY 3.0
Источник: heise-online.co.uk
Короткая ссылка: https://opennet.ru/18617-security
Ключевые слова: security, gcc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, не скажу (?), 18:31, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    всё как обычно - одни работают, а другие подсказывают как это лучше сделать )
     
  • 1.2, HounD (?), 18:47, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жаль для С++ нет вразумительного открытого инструмента статического анализа кода.
     
     
  • 2.3, Аноним (3), 20:19, 28/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Это потому что в C++ без поллитры не разберешься, а компы пить не умеют. Приходится анализировать самим.
     
     
  • 3.12, andr.mobi (??), 10:21, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Это потому что в C++ без поллитры не разберешься, а компы пить
    >не умеют. Приходится анализировать самим.

    Нет ничего более строго структурированного и прозрачно-интуитивно-ясного, чем C++
    Просто инструментом нужно сначала овладеть, а потом уже бежать за поллитрой, не наоборот

     
     
  • 4.14, Аноним (-), 12:09, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Нет ничего более строго структурированного и прозрачно-интуитивно-ясного, чем C++

    кроме Delphi )))

     
     
  • 5.15, Читатель (?), 21:03, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >>Нет ничего более строго структурированного и прозрачно-интуитивно-ясного, чем C++
    >
    >кроме Delphi )))

    Тогда давай сразу Object Pascal )) Вот там действительно все строго, в отличие от сев...

     

  • 1.4, Читатель (?), 20:57, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Из книг что доводилось читать, только от Микрософта самая грамотная, по этой теме.
     
     
  • 2.5, Painbringer (?), 22:24, 28/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    "совершенный код" что ле?
     
     
  • 3.8, Читатель (?), 09:20, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    совершенный или защищенный код... Не помню уже.
     
     
  • 4.10, Читатель (?), 09:23, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, есть еще у O'Relly книженция неплохая...
     
  • 2.7, Аноним (3), 01:56, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Жаль, что они сами её не читали :)) А то, глядишь, и винда была бы не такой уязвимой :)
     
     
  • 3.9, Читатель (?), 09:22, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >Жаль, что они сами её не читали :)) А то, глядишь, и
    >винда была бы не такой уязвимой :)

    Те кто читал, пишут нормально. Придратся не к чему.
    Только в реалиях иногда необходимо жертвовать защищенностью :(, для увеличения производительности, и не превращения этого кода в одну большую проверку.

     
     
  • 4.11, ноним (?), 10:07, 29/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    А ещё микрософфту и закладки надо оставлять
     
  • 4.16, Писатель (?), 13:23, 30/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    > Только в реалиях иногда необходимо жертвовать защищенностью :(, для увеличения производительности, и не превращения этого кода в одну большую проверку.

    Нельзя так делать :-)

     
     
  • 5.17, Читатель (?), 21:57, 30/10/2008 [^] [^^] [^^^] [ответить]  
  • +/
    >> Только в реалиях иногда необходимо жертвовать защищенностью :(, для увеличения производительности, и не превращения этого кода в одну большую проверку.
    >
    >Нельзя так делать :-)

    Знаю.

     

  • 1.6, Erley (?), 23:59, 28/10/2008 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Спасибо за заметку, многое использую из того что приведено, но и кое-что новое для себя увидел.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру