• читаются всем • всегда курсы «вчерашнего» дня • ораничены по времени • не требуют полного покрытия материала Базовые курсы Даже базовые курсы стоит ребутить где-то раз в 5 лет…
– разные требования: Введение в программирование — легкость обучения, простота концепций Алгоритмы — выразительная сила Архитектура компьютера, операционные системы — близость к компьютеру Базовый язык программирования
языка системного программирования? Слишком сложный Местами сложное отображение в инструкции процессора Все равно требует знания Си для правильного использования Rust – пока «темная лошадка», мало материалов Язык ассемблера при АКОС? Важен, но язык ассемблера не должен быть самоцелью, язык ассемблера не имеет самостоятельной ценности Основной язык в курсе ОС — Си, с экскурсами в ассемблер при рассмотрении архитектур компьютеров Язык для курса архитектуры компьютера и операционных систем?
обучения, но курс АКОС— это курс, который должен ставить безопасную разработку одной из целей и должен постоянно поддерживать внимание к ней. Безопасная разработка в рамках курса ОС
целыми числами, безопасное использование В C/C++ 20 наконец-то обещают выпилить все представления, кроме two“s complement Есть надежда, что сдвиги из UB перейдут хотя бы в Implementation Defined Где контролируемые арифметические операции??? Строки и буферы. UB при выходах за пределы массива. Переполнения буфера и его последствия. Динамическая память. UB при use after free, double free, динамическая память и unsigned integer overflow Syllabus
Секции исполняемого кода. Подгрузка динамических библиотек. Подмена указателей на функции в таблицах. Работа процесса в многопроцессном многопользовательском окружении. Race conditions при работе с файловой системой. Безопасное функционирование процесса в недоверенном окружении. Безопасный запуск программ на исполнение. Иньекции параметров командной строки. Syllabus
начала профессионального обучения программированию. Соответствующий взгляд на программирование должен постоянно акцентироваться на всех формах занятий. Основные ошибки, приводящие к уязвимостям, должны объяснятся вплоть до самого низкого уровня. Все это может способствовать тому, что выпускники, даже не специализирующиеся в системном программировании, будут осведомлены о безопасном программировании. «Правильный» базовый курс
по ИБ Безопасная разработка – это «стиль мышления» программиста Разработчик ПО – это Не офицер ИБ Не специалист по CI Не реверсер Не пентестер … Заключение