Введение для обеспечения руководства по кодированию

Безопасное кодирование является практикой записи программ, которые являются стойкими для атаки злонамеренными или вредными людьми или программами. Безопасное кодирование помогает защитить данные пользователя от хищения или повреждения. Кроме того, небезопасная программа может предоставить доступ атакующему для взятия под свой контроль сервера или компьютера пользователя, приводящего к чему-либо от отказа в обслуживании до отдельного пользователя к компромиссу секретов, прерывания обслуживания или ущерба систем тысяч пользователей.

Безопасное кодирование важно для всего программного обеспечения; если Вы пишете какой-либо код, работающий на компьютерах Macintosh или на устройствах на iOS из сценариев для Вашего собственного использования к коммерческим приложениям, необходимо быть знакомы с информацией в этом документе.

Сразу

Каждая программа является потенциальной целью. Атакующие попытаются найти уязвимости системы обеспечения безопасности в Ваших приложениях или серверах. Они тогда попытаются использовать эти уязвимости, чтобы украсть секреты, поврежденные программы и данные, и получить контроль над компьютерными системами и сетями. Свойство Ваших клиентов и Ваша репутация под угрозой.

Безопасность не что-то, что может быть добавлено к программному обеспечению машинально; так же, как сарай, сделанный из картона, не может быть сделан безопасным путем добавления замка к двери, небезопасный инструмент или приложение могут потребовать, чтобы обширная модернизация защитила его. Необходимо идентифицировать природу угроз программному обеспечению и включить безопасные методы кодирования в течение планирования и разработки продукта. Эта глава объясняет типы угроз, что может обратиться Ваше программное обеспечение. Другие главы в этом документе описывают определенные типы уязвимостей и дают указания на стабилизирующие методы кода для фиксации их.

Хакеры, взломщики и атакующие

Вопреки использованию большинством новостных СМИ в компьютерной индустрии термин хакер относится к опытному программисту — тот, кто любит узнавать о запутанности кода или операционной системы. В целом хакеры не являются злонамеренными. Когда большинство хакеров находит уязвимости системы обеспечения безопасности в коде, они сообщают компании или организации, что это ответственно за код так, чтобы они могли решить проблему. Некоторые хакеры — особенно, если они чувствуют свои предупреждения, игнорируются — публикуют уязвимости или даже разрабатывают и публикуют использование (код, использующий в своих интересах уязвимость).

Злонамеренные частные лица, врывающиеся в программы и системы, чтобы нанести ущерб или украсть что-то, упоминаются как взломщики, атакующие или черные шляпы. Большинство атакующих не высококвалифицировано, но использует в своих интересах опубликованный эксплоитный код и известные методы, чтобы нанести их ущерб. Людей (обычно, хотя не всегда, молодые люди), кто использует опубликованный код (сценарии) для атаки программного обеспечения и компьютерных систем, иногда вызывают деточками сценария.

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

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

Никакая платформа не неуязвима

До сих пор OS X не стал жертвой никакой основной, автоматизированной атаки как вирус MyDoom. Существует несколько причин этого. Каждый - тот OS X, основывается на программном обеспечении с открытым исходным кодом, таком как BSD; много хакеров искали это программное обеспечение за эти годы, ища уязвимости системы обеспечения безопасности, так, чтобы не остались много уязвимостей. Другой - это, OS X выключает все routable сетевые службы по умолчанию. Кроме того, электронная почта и интернет-клиенты использовали обычно на OS X, не имеют привилегированного доступа к операционной системе и менее уязвимы для атаки, чем используемые в некоторых других общих операционных системах. Наконец, Apple активно рассматривает операционную систему и приложения для уязвимостей системы обеспечения безопасности, и часто выпускает загружаемые обновления системы защиты.

iOS основывается на OS X и совместно использует многие его характеристики безопасности. Кроме того, это по сути более безопасно, чем даже OS X, потому что каждое приложение ограничивается в файлах и системных ресурсах, к которым это может получить доступ. Начинаясь в версии 10.7, приложения Mac могут выбрать в подобную защиту.

Это - хорошие новости. Дурные вести - то, что приложения и операционные системы постоянно под огнем. Каждый день хакеры черной шляпы обнаруживают новые уязвимости и публикуют эксплоитный код. Преступники и деточки сценария тогда используют тот эксплоитный код для атаки уязвимых систем. Кроме того, исследователи в области безопасности нашли много уязвимостей на множестве систем, которые, если использовано, возможно, привели к потере данных, позволив атакующему украсть секреты, или позволив атакующему выполнить код чьего-либо компьютера.

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

Для пользы Ваших пользователей необходимо отнестись к каждой уязвимости системы обеспечения безопасности серьезно и работе для исправления известных проблем быстро. Если каждый разработчик Macintosh и iOS последует совету в этом документе и других книгах по электронной безопасности, и если владелец каждого Macintosh примет меры предосторожности здравого смысла, такие как использование сильных паролей и шифрование уязвимых данных, то OS X и iOS поддержат их репутации быть безопасными, надежными операционными системами, и продукты Вашей компании получат преимущества от того, чтобы быть связанным с OS X или iOS.

Как использовать этот документ

Этот документ предполагает, что Вы уже считали Обзор безопасности.

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

Остающиеся главы в документе обсуждают определенные типы уязвимостей системы обеспечения безопасности в некоторой подробности. Эти главы могут быть считаны в любом порядке, или, как предложено контрольным списком разработки программного обеспечения в Контрольных списках Разработки средств обеспечения безопасности.

Кроме того, Контрольные списки Разработки средств обеспечения безопасности приложения обеспечивает удобный список задач, которые необходимо выполнить прежде, чем поставить приложение, и Сторонние Инструкции по Безопасности программного обеспечения приложения обеспечивают список инструкций для сторонних приложений, связанных OS X.

См. также

Этот документ концентрируется на уязвимостях системы обеспечения безопасности и особенно интересных практиках программирования разработчикам, использующим OS X или iOS. Для обсуждений безопасного программирования интереса для всех программистов см. следующие книги и документы:

Для документации связанных с безопасностью прикладных программных интерфейсов (APIs) для OS X (и iOS, где отмечено), см. следующие документы Apple:

Для получения информации о безопасности в проекте веб-приложения посетите http://www .owasp.org/.