Abstract
An approach is presented for the detection of software vulnerabilities using the widely known SPIN model checker. Classes of vulnerabilities in C programs that can be detected using the presented approach are discussed. We present the results of experiments on detecting vulnerabilities in student-made software tools implementing array processing algorithms.
Highlights
Предлагается метод тестирования безопасности С программ с использованием широко известного верификатора SPIN
Некорректная работа программиста с памятью может также привести к наличию уязвимости
Далее мы сканируем исходную C программу инструкция за инструкцией; каждый раз при встрече оператора new в C (С++) коде в соответствующей PROMELA программе мы увеличиваем значение v на единицу
Summary
Задача безопасности программного обеспечения становится все более актуальной, особенно для программного обеспечения, используемого в критических системах (к которым относятся системы связи, медицина, ряд протоколов в системах связи и др.), где большое количество программ написано на языке программирования С. Верификатор проверяет, найдутся ли такие входные данные для программы, что выполняется свойство, соответствующее наличию проверяемой уязвимости. Далее на основе полученного контрпримера формируются входные данные, которые подаются на проверяемую программу, и, если программа ведет себя некорректно, то уязвимость найдена; в противном случае можно заключить, что верификация, которая обычно проводится по некоторой модели программы, была выполнена некорректно. Мы рассматриваем уязвимость как особое свойство C программы, и для того чтобы проверить, обладает ли программа данным свойством, мы используем программу-верификатор SPIN [5], которая позволяет осуществлять динамический поиск уязвимостей в программе. Которая сохраняется в ее PROMELA модели, то, как и любой верификатор, SPIN выдает контрпример с соответствующими значениями локальных переменных или входных данных. С одной стороны, такие ограничения сужают класс программ, к которым применим предлагаемый метод обнаружения уязвимостей, с другой стороны, как правило, на уязвимости тестируют не все приложение целиком, а лишь некоторые его части (например, некоторую функцию или блок инструкций)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.