Поводом к очередному материалу для СильныхИдей стала консультация ребят, которые занимаются реверс-инжинирингом софта наших теперь уже недружественных друзей, которые сбежали, наплевав на все платные лицензии, однако их софт продолжает эксплуатироваться (буквально, в КИИ), но не то что исходников, теперь и секьюрных патчей за свои уплоченные денежки не получишь. Но баги надо как-то фиксить, и вот ребята теперь дизассемблируют бинарники, пытаясь что-то где-то там подправить в плане безопасности.
Но вот факт: большинство недостатков в вашей системе в плане безопасности невозможно использовать.
Если вы не специалист по ИБ, это утверждение может сбить вас с толку. Что такое косяк с безопасностью, если не то, что может позволить злоумышленнику получить контроль над вашей системой или похитить ваши данные?
Ну, посмотрите например стандарт безопасного кодирования института программной инженерии SEI (авторы CMM и PSP) при университете Карнеги-Меллона, и вы увидите, что то, что отметит типовой эксперт по ИБ -- это множество мелких деталей, которые можно заметить с первого взгляда, при стандартном code review. Они утверждают, что если сделать всё это стилистически правильно, то ваше программное обеспечение, скорее всего, будет безопасным. Написание правильного кода подразумевает создание модулей, которые могут быть рассмотрены по отдельности.
Однако создание эксплойтов через воспроизведение ошибок заключается в долгом и нудном поиске длинных цепочек событий во всей программе, которые приводят к тому, что она переходит в "плохое" состояние. И тот факт, что нельзя гарантировать, что буфер не переполнится, очень далёк от прикладной проверки возможности Heartbleed (неправильно сформированное значение в пакете действительно будет использовано таким образом, что позволит злоумышленнику прочитать данные).
Между мышлением разработчика и мышлением хакера имеются кардинальные различия. Это принципиально разные думательные машики, которые встраиваются в ум качественно разными способами и приёмами. У каждой из них своя математическая логика (у программистов -- логика Хоара прежде всего). Чтобы тут не путаться, дам курсантам в СильныхИдеях, которых учу ясному формальному мышлению классического разработчика, чёткое научное определение модели мышления разработчика эксплойтов, как правильно рассуждать в хакерской парадигме, по материалу исследователей формальной (и несовместимой с хоаровской) хакерской логики из фейспалма и University College London.
Post #680
927
- 👍 9
- 🔥 2
- ❤ 1