Даследаванне ўплыву AI-асістэнтаў, падобных GitHub Copilot, на бяспеку кода

Група даследнікаў са Стэнфардскага ўніверсітэта вывучыла ўплыў выкарыстання інтэлектуальных памагатых пры напісанні кода на з'яўленне ў кодзе ўразлівасцяў. Разглядаліся рашэнні на базе платформы машыннага навучання OpenAI Codex, такія як GitHub Copilot, якія дазваляюць фармаваць досыць складаныя блокі кода, аж да гатовых функцый. Асцярогі звязаныя з тым, што так як для трэніроўкі мадэлі машыннага навучання выкарыстаны рэальны код з публічных рэпазітараў GitHub, у тым ліку які змяшчае ўразлівасці, сінтэзаваны код можа паўтараць памылкі і прапаноўваць код, у якім прысутнічаюць уразлівасці, а таксама не ўлічваць неабходнасць выканання дадатковых праверак пры апрацоўцы вонкавых дадзеных.

Да правядзення даследавання былі прыцягнуты 47 добраахвотнікаў, якія маюць розны вопыт у праграмаванні – ад студэнтаў, да прафесіяналаў з дзесяцігадовым вопытам. Удзельнікі былі падзелены на дзве групы - эксперыментальная (33 чалавекі) і кантрольная (14 чалавек). Абедзве групы мелі доступ да любых бібліятэк і інтэрнэт-рэсурсаў, у тым ліку маглі выкарыстоўваць гатовыя прыклады са Stack Overflow. Эксперыментальнай групе была дадзена магчымасць выкарыстання AI-асістэнта.

Кожнаму ўдзельніку было дадзена 5 заданняў, звязаных з напісаннем кода, у якім патэнцыйна лёгка дапусціць памылкі, якія прыводзяць да ўразлівасцяў. Напрыклад, былі заданні па напісанні функцый шыфравання і расшыфроўкі, выкарыстанню лічбавых подпісаў, апрацоўцы дадзеных, якія ўдзельнічаюць у фармаванні файлавых шляхоў або SQL-запытаў, маніпуляцыі з вялікімі лікамі ў кодзе на мове Сі, апрацоўцы ўводу, які адлюстроўваецца ў web-старонках. Для разгляду ўплыву моў праграмавання на бяспеку кода, які атрымліваецца пры выкарыстанні AI-асістэнтаў, заданні ахоплівалі мовы Python, Сі і JavaScript.

У выніку было выяўлена, што ўдзельнікі, якія выкарыстоўвалі інтэлектуальны AI-асістэнт на базе мадэлі codex-davinci-002, падрыхтавалі значна менш бяспечны код, чым удзельнікі, якія не карысталіся AI-асістэнтам. У агульным выглядзе толькі 67% удзельнікаў групы, якая выкарыстоўвала AI-асістэнт, змаглі даць карэктны і бяспечны код, у той час як у іншай групе гэты паказчык склаў 79%.

Пры гэтым паказчыкі самаацэнкі былі зваротнымі - удзельнікі карысталіся AI-асістэнтам лічылі, што іх код будзе больш бяспечным, чым ва ўдзельнікаў з іншай групы. Акрамя таго, было адзначана, што ўдзельнікі, якія менш давяралі AI-асістэнту і больш марнавалі часу на разбор выдаваемых падказак і ўносілі ў іх змены, дапусцілі менш уразлівасцяў у кодзе.

Напрыклад, код скапіяваны з крыптаграфічных бібліятэк утрымоўваў больш бяспечныя значэнні параметраў па змаўчанні, чым код, прапанаваны AI-асістэнтам. Таксама пры выкарыстанні AI-асістэнта фіксаваўся выбар меней надзейных алгарытмаў шыфравання і адсутнасць праверак сапраўднасці якія вяртаюцца значэнняў. У заданні, звязаным з маніпуляцыяй лікамі на мове Сі, у кодзе, напісаным з выкарыстаннем AI-асістэнта, было дапушчана больш памылак, якія прыводзяць да цэлалікавага перапаўнення.

Дадаткова можна адзначыць падобнае даследаванне групы з Нью-Йоркскага ўніверсітэта, праведзенае ў лістападзе з прыцягненнем 58 студэнтаў, якім было прапанавана рэалізаваць на мове Сі структуру для апрацоўкі спісу пакупак. Атрыманыя вынікі паказалі нязначны ўплыў AI-асістэнта на бяспеку кода – карыстальнікі, якія ўжывалі AI-асістэнт, у сярэднім дапусцілі прыкладна на 10% больш памылак, звязаных з бяспекай.

Даследаванне ўплыву AI-асістэнтаў, падобных GitHub Copilot, на бяспеку кода


Крыніца: opennet.ru

Дадаць каментар