Меня зовут Илья Кашлаков, я руковожу департаментом разработки в ЮMoney. Сегодня расскажу о том, какие задачи финтех может доверить большим языковым моделям (LLM) и как мы в компании следим за безопасностью, чтобы не допускать утечку данных. Также вспомним три самых распространённых уязвимости LLM из топа OWASP и почему выводу обученной модели нельзя доверять без факт-чекинга.
Статья будет полезна тем, кто планирует работать с LLM и пока не знает, какие в них бывают проблемы и риски.
В ЮMoney потенциально много задач для больших языковых моделей. Например, можно использовать LLM для распознавания видео и голоса, быстрой генерации текстов и изображений для запуска разных маркетинговых акций, создания личных ассистентов в отделах техподдержки, разработки или сопровождения клиентов и партнёров ЮKassa. Кстати, о помощниках для отдела саппорта — чат-ботах, которых мы внедрили — рассказали в отдельной статье.
Ещё один интересный пример, где можно было бы использовать LLM в ЮMoney — для быстрого поиска нужной информации в базе знаний. Мы храним большое количество обучающих материалов на Wiki, и иногда нужные вещи там сложно оперативно найти. Было бы здорово, если бы какой-то сервис делал это за нас.
Также у нас очень много задач в бизнес-аналитике, для которых можно задействовать искусственный интеллект.
При этом всём нельзя забывать о безопасности: финтех обрабатывает огромный пласт пользовательских данных, и ни в коем случае нельзя допустить их утечку.
Как мы следим за безопасностью
Все наши сотрудники регулярно проходят базовый курс по безопасности.
Для разработчиков есть отдельные курсы, специфичные для каждого направления: от OWASP TOP 10 до курсов по безопасной работе с данными.
Запускаем автоматические проверки безопасности, используем различные SAST и DAST системы, регулярно проводим пентесты (испытания на проникновение): еженедельно нас пытаются взломать и проверяют таким образом нашу систему на уязвимости.
А в декабре прошлого года мы запустили программу по поиску багов — Bug Bounty.
С приходом больших языковых моделей мы стали ещё пристальнее следить за безопасностью, потому что там много открытых вопросов — их и предлагаю разобрать на примере трёх самых распространённых уязвимостей из списка OWASP TOP 10 LLM.
Что такое OWASP
OWASP (Open Web Application Security Project) — это некоммерческая организация по безопасности веб-приложений, где исследователи уязвимостей публикуют то, что нашли. Время от времени OWASP также занимается классификацией этих уязвимостей и готовит список самых частых из них — OWASP TOP 10, OWASP TOP 10 API Security risks и так далее.
Итак, рассмотрим наиболее значимые для пользователя LLM уязвимости из списка LLM TOP 10.
Уязвимость 1. Prompt-инъекции
Prompt — это инструкция для языковой модели, и, что бы мы у неё не запрашивали, она нам всегда что-то выдаёт в ответ. Если мы изменим текст запроса, то пользователь получит нерелевантный результат. Например, можем сказать модели, чтобы она выдавала пользователю по запросу информацию, которую нельзя было выдавать.
С помощью prompt-инъекции можно попросить модель вывести чувствительные данные: пароли и другие секреты. А еще — заняться фишингом, чтобы она выдавала ссылку на фишинговый сайт, если пользователь просит провести какой-то анализ.
Например, когда запускали ChatGPT, в интернете гуляло много новостей об утечке данных. Второй яркий пример — американский браузер TUSK Browser. Его авторы сделали инъекцию сами себе: браузер отвечал на все запросы пользователей в определённом политическом контексте, а они не понимали, что происходит и почему он так отвечает. Потом с помощью ещё одной уязвимости выяснилось, что, оказывается, там была сделана инъекция для того, чтобы изменять пользовательский запрос. Подробнее об этом и других случаях можно почитать в этой статье.
Уязвимость 2. Небезопасные плагины
Сейчас для моделей существует большое количество разных плагинов. Это сторонние полезные фичи, которые можно добавить в свою модель, и ею станет гораздо удобнее пользоваться. Например, если мы захотим, чтобы наша модель умела авторизоваться в Jira и заводить задачи в таск-трекере.
Так как плагины по большей части — это какой-то внешний OSS (Open Source Software), они могут содержать в себе классические уязвимости, которые тоже есть в TOP-10 OWASP. Например, prompt-инъекции. Яркий тому пример — поисковик Bing, в который когда-то интегрировали Chat GPT. В плагине была возможность поменять систему запросов. В итоге, когда люди спрашивали у поисковика, как лечить ковид, он отвечал: «Алкоголем». Казалось бы, невинная шутка, а к каким серьёзным последствиям она могла привести.
Уязвимость 3. Обучение модели
Процесс обучения модели очень сложный — требует времени и большого объёма данных. Иногда, чтобы сэкономить время, дата-инженеры используют внешние источники данных для обучения — их можно купить или взять в Open Source.
Данные для обучения следует брать только из проверенных источников!
Внутренние данные тоже нужно подготовить — например, вычистить оттуда пароли, убрать всё лишнее, что не должно попасть в обучение, потому что там может содержаться информация, которую мы не хотим, чтобы модель знала, ведь это чревато утечкой данных. Нужно понимать: злоумышленников много, и все они хотят что-то куда-то внедрить. Если данные будут заражены, потеряется качество модели и её придется заново обучать.
Пример плохого обучения модели
В разработке популярен Copilot. Это ассистент для разработчиков, обученный на открытых данных Github. Сгенерированный с его помощью код может содержать общеизвестные уязвимости. По данным исследования, с каждым годом количество плохого легаси-кода растёт как раз у тех разработчиков, которые используют этого помощника. Так происходит потому, что его обучили на открытых данных, на том коде, который лежит в интернете, а он разный. Поэтому Copilot, делая подсказки к коду для разработчика, может привнести как уязвимости, так и плохие практики разработки. Со временем их приходится рефакторить. Поэтому важно понимать: использование модели, обученной на данных плохого качества, может привести как к финансовым, так к имиджевым потерям для организации.
Что с этим делать?
Не доверять выводам модели. Всегда нужно проводить факт-чекинг. Слышали про случай в США? Юрист применял ChatGPT при подготовке судебного иска, а все данные, которые выдала модель, оказались фиктивными. Нет гарантии, что модель не выдаёт неверную информацию — она может быть плохо обучена.
Не стоит делегировать модели задачи полностью. Конечное решение всегда должен принимать человек. Все модели ещё сырые, доверять им на 100% мы не можем.
Использовать централизованные хранилища моделей в компании и принятые инструменты для работы с моделями. Если в компании развёрнуты разные модели с плагинами, то мы не сможем их контролировать и вовремя закрывать известные уязвимости. Да и вообще, никогда не узнаем, что они есть, чтобы как-то отреагировать. В департаменте аналитических решений ЮMoney уже есть централизованные решения для хранения таких моделей.
Внимательно подходить к вопросу обучения модели. Мы уже обучаем свои модели, например, в департаменте аналитических решений мы внимательно следим за теми данными, которые отдаём в модель, а также за тем, какие она ответы выдаёт, чтобы понимать, хорошо ли мы её обучаем.
Делитесь в комментариях, что думаете об LLM в финтехе? Были ли у вас случаи с утечкой данных? А может, вы используете Copilot и не считаете его злодеем?
Готов ответить на ваши вопросы. ?
Комментарии (2)
iosuslov
27.04.2024 11:59Так и не понял, вы используете проприетарные модели в своем корпоративном контуре? Или развернули опенсорсные? Если развернули опенсорс - какие выбрали и почему?
dsv180
А разве вы что-то про финтех написали?