🖥 Какой может быть безопасная разработка Software 3.0?
Продолжаем рубрику «Фантазии вокруг постов коллег». Сегодня у нас на очереди серия публикаций Макса Митрофанова о будущем безопасной разработки и аппсека (рекомендую).
Начну с дополнения тезиса Макса о том, что (цитирую) «нельзя просто попросить codex/claude code сделать безопасно». Вообще-то, в целом возможно, но только, если делать это с уважением правильно. Не «напиши мне безопасный код», конечно. «Правильно» — сводится к управлению фокусом внимания LLM, вокруг того, чем именно является в каждом конкретном проекте «безопасность». К контекст-менеджменту.
После публикации скилла-генератора SECURITY.md я очень много экспериментировал, пытаясь заставить LLM написать уязвимый код в проектах, для которых был построен этот файл. И... не смог. Нет, серьезно, если кто-то сможет — пришлите плс, какой был кейс, промпт, политика, агент и LLM, мне прям реально это нужно для тестов одной штуки.
Однако же, в целом согласен с тезисом про нынешнюю важность вендорских обвязок с высоким уровнем экспертности в безопасности. Но по другой причине — Swiss Cheese Model.
Идём дальше. С чем обычно ассоциируется термин AppSec в плане инструментов? SCA, SAST, DAST и AF, в первую очередь. И вот с их текущим state-of-the-art есть одна очень большая проблема. Думаю все согласятся с тем, что практика блэклистинга чего-либо, как способа обеспечения безопасности приложений, является анти-паттерном?
Тогда скажите на милость, почему буквально все существующие инструментальные средства аппсека работают именно по принципу черных списков? SCA ищет «плохие» зависимости, SAST ищет «плохие» фрагменты кода, DAST — определяет «плохое» поведение приложения, AF — фильтрует «плохие» запросы.
Понимаете? ВЕСЬ основной инструментарий аппсека сейчас основан на одном из самых заезженных ЕГО ЖЕ антипаттернов 🤷♂️
Безусловно можно (и нужно) усиливать текущие инструменты и подходы к аппсеку через ИИ там, где это имеет смысл. Все LLM-триажеры, агенты анализа кода, автопентестеры и т.п. — всё про это. Но такой аппсек, как был классическим, так и останется им же, лишь усиленным современными технологиями.
Но что, если ИИ даёт нам возможность пересмотреть взгляды на весь нынешний инструментарий? Что, если связка формального SAST и ИИ-агента (эдакий neuro-SAST), вместо поиска фрагментов уязвимого кода, будет доказывать их защищенность? А сработками будет то, защищенность чего не удалось доказать. А SCA — полагаться на эту связку, анализируя ей все зависимости. А DAST и AF — на построенный с помощью неё же поведенческий профиль приложения, описывающий то, что для приложения РАЗРЕШЕНО, а не запрещено.
В результате, вместо показательного аппсека, мы получим доказательный, гарантирующий, что отсутствие сработок — есть отсутствие уязвимостей. Аппсек без false negatives. Вот такое — уже вполне себе претендует на качественно новый уровень, как мне кажется.
Но можно пойти ещё дальше. Нет, буквально: если отойти по этой колее назад на достаточное расстояние (вспоминаем предыдущий пост), то станет понятно, что классический аппсек сформировался таким потому, что тогда, в истоках, просто не было другого выбора.
Но сейчас он — похоже, есть.
Одним из главных принципов нынешнего аппсека является shift-left — вынос влево по жизненному циклу приложения максимального количества усилий на обеспечение его безопасности. Но что, если мы будем применять описанный выше neuro-SAST, вкупе с грамотно построенными им же под конкретный проект политиками безопасности, не к уже написанному коду, а к... ещё не написанному? Сложно себе представить SAST, воткнутый на правах дискриминатора кода между полушариями мозга разработчика-человека. А вот разработчика-агента, раз уж теперь они пишут код — вообще не вопрос.
Как вам такой, доказательный леворадикальный аппсек?
Вот, что лично я вижу, как будущее безопасной разработки Software 3.0.
#мысли
Продолжаем рубрику «Фантазии вокруг постов коллег». Сегодня у нас на очереди серия публикаций Макса Митрофанова о будущем безопасной разработки и аппсека (рекомендую).
Начну с дополнения тезиса Макса о том, что (цитирую) «нельзя просто попросить codex/claude code сделать безопасно». Вообще-то, в целом возможно, но только, если делать это с уважением правильно. Не «напиши мне безопасный код», конечно. «Правильно» — сводится к управлению фокусом внимания LLM, вокруг того, чем именно является в каждом конкретном проекте «безопасность». К контекст-менеджменту.
После публикации скилла-генератора SECURITY.md я очень много экспериментировал, пытаясь заставить LLM написать уязвимый код в проектах, для которых был построен этот файл. И... не смог. Нет, серьезно, если кто-то сможет — пришлите плс, какой был кейс, промпт, политика, агент и LLM, мне прям реально это нужно для тестов одной штуки.
Однако же, в целом согласен с тезисом про нынешнюю важность вендорских обвязок с высоким уровнем экспертности в безопасности. Но по другой причине — Swiss Cheese Model.
Идём дальше. С чем обычно ассоциируется термин AppSec в плане инструментов? SCA, SAST, DAST и AF, в первую очередь. И вот с их текущим state-of-the-art есть одна очень большая проблема. Думаю все согласятся с тем, что практика блэклистинга чего-либо, как способа обеспечения безопасности приложений, является анти-паттерном?
Тогда скажите на милость, почему буквально все существующие инструментальные средства аппсека работают именно по принципу черных списков? SCA ищет «плохие» зависимости, SAST ищет «плохие» фрагменты кода, DAST — определяет «плохое» поведение приложения, AF — фильтрует «плохие» запросы.
Понимаете? ВЕСЬ основной инструментарий аппсека сейчас основан на одном из самых заезженных ЕГО ЖЕ антипаттернов 🤷♂️
Безусловно можно (и нужно) усиливать текущие инструменты и подходы к аппсеку через ИИ там, где это имеет смысл. Все LLM-триажеры, агенты анализа кода, автопентестеры и т.п. — всё про это. Но такой аппсек, как был классическим, так и останется им же, лишь усиленным современными технологиями.
Но что, если ИИ даёт нам возможность пересмотреть взгляды на весь нынешний инструментарий? Что, если связка формального SAST и ИИ-агента (эдакий neuro-SAST), вместо поиска фрагментов уязвимого кода, будет доказывать их защищенность? А сработками будет то, защищенность чего не удалось доказать. А SCA — полагаться на эту связку, анализируя ей все зависимости. А DAST и AF — на построенный с помощью неё же поведенческий профиль приложения, описывающий то, что для приложения РАЗРЕШЕНО, а не запрещено.
В результате, вместо показательного аппсека, мы получим доказательный, гарантирующий, что отсутствие сработок — есть отсутствие уязвимостей. Аппсек без false negatives. Вот такое — уже вполне себе претендует на качественно новый уровень, как мне кажется.
Но можно пойти ещё дальше. Нет, буквально: если отойти по этой колее назад на достаточное расстояние (вспоминаем предыдущий пост), то станет понятно, что классический аппсек сформировался таким потому, что тогда, в истоках, просто не было другого выбора.
Но сейчас он — похоже, есть.
Одним из главных принципов нынешнего аппсека является shift-left — вынос влево по жизненному циклу приложения максимального количества усилий на обеспечение его безопасности. Но что, если мы будем применять описанный выше neuro-SAST, вкупе с грамотно построенными им же под конкретный проект политиками безопасности, не к уже написанному коду, а к... ещё не написанному? Сложно себе представить SAST, воткнутый на правах дискриминатора кода между полушариями мозга разработчика-человека. А вот разработчика-агента, раз уж теперь они пишут код — вообще не вопрос.
Как вам такой, доказательный леворадикальный аппсек?
Вот, что лично я вижу, как будущее безопасной разработки Software 3.0.
#мысли