Второй пилот с искусственным интеллектом: запускаем инновационные ракеты, но остерегаемся темноты впереди

Father

Professional
Messages
2,604
Reputation
4
Reaction score
622
Points
113
Представьте себе мир, в котором программное обеспечение, обеспечивающее работу ваших любимых приложений, безопасность ваших онлайн-транзакций и сохранность вашей цифровой жизни, может быть перехитрено и захвачено хитро замаскированным фрагментом кода. Это не сюжет из новейшего кибертриллера; на самом деле это реальность уже много лет. То, как это изменится – в положительную или отрицательную сторону – по мере того, как искусственный интеллект (ИИ) будет играть все большую роль в разработке программного обеспечения, является одной из больших неопределенностей, связанных с этим дивным новым миром.

В эпоху, когда искусственный интеллект обещает революционизировать то, как мы живем и работаем, разговор о его последствиях для безопасности нельзя оставлять в стороне. Поскольку мы все больше полагаемся на ИИ в решении самых разных задач - от рутинных до критически важных, вопрос больше не сводится к простому: "Может ли ИИ повысить кибербезопасность?" (конечно!), Но также "Можно ли взломать ИИ?" (да!), "Можно ли использовать ИИ для взлома?" (конечно!), и "Будет ли ИИ создавать безопасное программное обеспечение?" (ну ...). Эта статья о лидерстве в области мышления посвящена последнему. Cydrill (компания по обучению безопасному кодированию) исследует сложный ландшафт уязвимостей, созданных искусственным интеллектом, уделяя особое внимание второму пилоту GitHub, чтобы подчеркнуть необходимость применения методов безопасного кодирования для защиты нашего цифрового будущего.

Вы можете проверить свои навыки безопасного программирования с помощью этой короткой самооценки.

Парадокс безопасности искусственного интеллекта
Скачок ИИ от академического любопытства к краеугольному камню современных инноваций произошел довольно внезапно. Его приложения охватывают захватывающий дух спектр областей, предлагая решения, которые когда-то были предметом научной фантастики. Однако это быстрое продвижение и внедрение опередило разработку соответствующих мер безопасности, сделав как системы искусственного интеллекта, так и системы, созданные искусственным интеллектом, уязвимыми для множества изощренных атак. Déjà vu? То же самое происходило, когда программное обеспечение – как таковое – захватывало многие сферы нашей жизни…

В основе многих систем ИИ лежит машинное обучение, технология, которая опирается на обширные наборы данных для "обучения" и принятия решений. По иронии судьбы, сила искусственного интеллекта – его способность обрабатывать и обобщать огромные объемы данных - также является его ахиллесовой пятой. Отправной точкой "всего, что мы найдем в Интернете" могут быть не идеальные учебные данные; к сожалению, мудрости масс в этом случае может быть недостаточно. Более того, хакеры, вооруженные нужными инструментами и знаниями, могут манипулировать этими данными, чтобы обманом заставить ИИ принимать ошибочные решения или предпринимать вредоносные действия.

Второй пилот с искусственным интеллектом


Второй пилот под прицелом
GitHub Copilot, работающий на базе Codex от OpenAI, является свидетельством потенциала искусственного интеллекта в программировании. Он был разработан для повышения производительности за счет предложения фрагментов кода и даже целых блоков кода. Однако многочисленные исследования выявили опасность полного использования этой технологии. Было продемонстрировано, что значительная часть кода, генерируемого вторым пилотом, может содержать недостатки безопасности, включая уязвимости к обычным атакам, таким как внедрение SQL и переполнение буфера.

Принцип "Мусор внутрь, мусор наружу" (GIGO) здесь особенно актуален. Модели с искусственным интеллектом, включая второго пилота, обучаются на существующих данных, и, как и любая другая крупная языковая модель, большая часть этого обучения проходит без присмотра. Если в этих обучающих данных есть недостатки (что вполне возможно, учитывая, что они получены из проектов с открытым исходным кодом или крупных сайтов вопросов и ответов, таких как Stack Overflow), выходные данные, включая предложения по коду, могут унаследовать и распространить эти недостатки. На заре существования Copilot исследование показало, что примерно 40% образцов кода, подготовленных вторым пилотом, когда его попросили доработать код на основе образцов из топ-25 CWE, были уязвимы, что подчеркивает принцип GIGO и необходимость повышения осведомленности о безопасности. Более масштабное исследование в 2023 году (Второй пилот GitHub так же плох, как люди, во внедрении уязвимостей в код?) показал несколько лучшие результаты, но все еще далек от хороших: удалив уязвимую строку кода из реальных примеров уязвимостей и попросив второго пилота завершить ее, он воссоздавал уязвимость примерно в 1/3 случаев и исправлял уязвимость только примерно в 1/4 случаев. Кроме того, он очень плохо справлялся с уязвимостями, связанными с отсутствием проверки входных данных, каждый раз создавая уязвимый код. Это подчеркивает, что генеративный ИИ плохо оснащен для обработки вредоносного ввода, если решения, подобные "серебряной пуле", для устранения уязвимости (например, подготовленные инструкции) недоступны.

Путь к безопасной разработке программного обеспечения на базе искусственного интеллекта
Решение проблем безопасности, создаваемых искусственным интеллектом и такими инструментами, как второй пилот, требует многогранного подхода:
  1. Понимание уязвимостей: Важно понимать, что код, созданный искусственным интеллектом, может быть восприимчив к тем же типам атак, что и „традиционно" разработанное программное обеспечение.
  2. Совершенствование методов безопасного кодирования: Разработчики должны быть обучены методам безопасного кодирования с учетом нюансов кода, генерируемого искусственным интеллектом. Это включает в себя не только выявление потенциальных уязвимостей, но и понимание механизмов, с помощью которых ИИ предлагает определенные фрагменты кода, чтобы эффективно предвидеть риски и снижать их.
  3. Адаптация SDLC: это не только технология. Процессы также должны учитывать тонкие изменения, которые внесет искусственный интеллект. Когда дело доходит до второго пилота, обычно в центре внимания оказывается разработка кода. Но требования, дизайн, обслуживание, тестирование и эксплуатация также могут выиграть от больших языковых моделей.
  4. Постоянная бдительность и совершенствование: Системы искусственного интеллекта – так же, как и инструменты, которыми они управляют, - постоянно развиваются. Идти в ногу с этой эволюцией означает быть в курсе последних исследований в области безопасности, понимать возникающие уязвимости и соответствующим образом обновлять существующие методы обеспечения безопасности.

Второй пилот с искусственным интеллектом


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

Внедряйте строгую проверку входных данных!
Практическая реализация: Защитное программирование всегда лежит в основе безопасного кодирования. Принимая предложения второго пилота по коду, особенно для функций, обрабатывающих ввод данных пользователем, применяйте строгие меры проверки ввода данных. Определите правила для пользовательского ввода, создайте список разрешенных символов и форматов данных и убедитесь, что входные данные проверяются перед обработкой. Вы также можете попросить второго пилота сделать это за вас; иногда это действительно хорошо работает!

Надежно управляйте зависимостями!
Практическая реализация: Второй пилот может предложить добавить зависимости к вашему проекту, и злоумышленники могут использовать это для реализации атак по цепочке поставок с помощью "галлюцинации пакетов". Перед включением любых предлагаемых библиотек вручную проверьте их состояние безопасности, проверив наличие известных уязвимостей в базах данных, таких как Национальная база данных уязвимостей (NVD), или выполните анализ состава программного обеспечения (SCA) с помощью таких инструментов, как проверка зависимостей OWASP или аудит npm для Node.js проекты. Эти инструменты могут автоматически отслеживать безопасность зависимостей и управлять ими.

Проводите регулярные оценки безопасности!
Практическая реализация: Независимо от источника кода, будь то созданный искусственным интеллектом или созданный вручную, проводите регулярные проверки кода и тесты, уделяя особое внимание безопасности. Комбинируйте подходы. Тестируйте статически (SAST) и динамически (DAST), проводите анализ состава программного обеспечения (SCA). Проводите ручное тестирование и дополняйте его автоматизацией. Но не забывайте ставить людей выше инструментов: ни инструмент, ни искусственный интеллект не могут заменить естественный (человеческий) интеллект.

Действуйте постепенно!
Практическая реализация: Сначала позвольте второму пилоту записать ваши комментарии или журналы отладки – в них и так все хорошо. Любая ошибка в них все равно не повлияет на безопасность вашего кода. Затем, когда вы познакомитесь с тем, как это работает, вы сможете постепенно позволять ему генерировать все больше и больше фрагментов кода для реальной функциональности.

Всегда проверяйте, что предлагает второй пилот!
Практическая реализация: никогда просто слепо не принимайте то, что предлагает второй пилот. Помните, вы пилот, это "всего лишь" второй пилот! Вы и второй пилот вместе можете быть очень эффективной командой, но отвечаете по-прежнему вы, поэтому вы должны знать, каков ожидаемый код и как должен выглядеть результат.

Экспериментируйте!
Практическая реализация: попробуйте разные вещи и подсказки (в режиме чата). Попробуйте попросить второго пилота доработать код, если вас не устраивает то, что вы получили. Постарайтесь понять, как второй пилот "думает" в определенных ситуациях, и осознайте его сильные и слабые стороны. Более того, со временем второй пилот становится лучше – так что экспериментируйте постоянно!

Будьте в курсе событий и образованны!
Практическое внедрение: Постоянно обучайте себя и свою команду последним угрозам безопасности и передовым практикам. Следите за блогами по безопасности, посещайте вебинары и семинары и участвуйте в форумах, посвященных безопасному кодированию. Знания - мощный инструмент для выявления и смягчения потенциальных уязвимостей в коде, созданном искусственным интеллектом или нет.

Заключение
Важность безопасных методов кодирования никогда не была более важной, поскольку мы ориентируемся в неизведанных водах кода, сгенерированного искусственным интеллектом. Такие инструменты, как GitHub Copilot, предоставляют значительные возможности для роста и совершенствования, но также и особые проблемы, когда речь заходит о безопасности вашего кода. Только понимая эти риски, можно успешно сочетать эффективность с безопасностью и обеспечивать защиту нашей инфраструктуры и данных. На этом пути Cydrill по-прежнему стремится предоставить разработчикам знания и инструменты, необходимые для построения более безопасного цифрового будущего.

Программа смешанного обучения Cydrill обеспечивает обучение проактивному и эффективному безопасному кодированию для разработчиков из компаний из списка Fortune 500 по всему миру. Сочетая обучение под руководством инструктора, электронное обучение, практические лабораторные работы и геймификацию, Cydrill предлагает новый и эффективный подход к обучению безопасному программированию.

Ознакомьтесь с курсами безопасного программирования Cydrill.
 
Top