Подтвердить что ты не робот

Поиск уязвимостей в программном обеспечении

Мне неинтересно знать методы, используемые при обнаружении уязвимостей. Я знаю теорию о переполнении буфера, эксплоиты форматирования строки, ecc, я также написал некоторые из них. Но я до сих пор не понимаю, как эффективно найти уязвимость.

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

например.

Я не понимаю, как команда разработчиков может быстро найти уязвимости для iPhone. У них нет исходного кода, они не могут выполнять программы, и поскольку существует небольшое количество значений по умолчанию программ, я не ожидаю большого количества дыр в безопасности. Итак, как найти такую ​​уязвимость так быстро?

Спасибо заранее.

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Вернуться к вашему вопросу: это будет зависеть от того, что у вас есть (рабочие двоичные файлы, полный/частичный исходный код и т.д.). С другой стороны, он не находит ЛЮБОЙ уязвимости, кроме тех, которые считаются (например, те, что клиент аудита, или владелец программного обеспечения). Правильно?

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

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

Ответ 3

Помимо эксплойтов переполнения буфера и форматирования строки, вы можете немного прочитать информацию о инъекции кода. (многое из того, что вы встретите, будет связано с веб-сайтом/БД, но копать глубже). AFAIK это была огромная сила в джейлбрейке iThingies. Мобильный субстрат Saurik позволяет (s) (-ed?) Загружать сторонние .dylib и вызывать любой код, содержащийся в них.