|
|
萧箫 发自 凹非寺2 E, w/ Z: Z7 p" y; I/ r" W- l
量子位 | 公众号 QbitAI7 o0 |$ P8 |/ [ g7 B/ t
3 ?) j- r) m/ o' _% |( n7 r
ChatGPT知道自己写的代码有漏洞,但它不说!8 Y( k0 c4 ^7 p% [
来自加拿大的一项最新研究发现,ChatGPT生成的代码中,有不少都存在安全漏洞。; M- X9 b+ P6 A3 N6 s, |2 c$ L
然而在被要求评估自己代码的安全性时,ChatGPT却很快发现了这些代码中的漏洞,并给出了一些解决方案和建议。
, Y/ T8 O1 z- _6 A6 H
) c9 G, J3 ~0 n7 p, S: j' y) T
5 d. K8 y, Y, N6 u' |
! n: _1 C" g% X" R3 a: D& y这意味着它并不知道自己生成了糟糕的代码,但却查得出它写的代码有漏洞,也有能力修复这些漏洞。
' \1 w* o" P$ `, P0 E7 [$ S- m而在另一篇来自斯坦福的论文中,研究人员测试了另一位著名AI程序员Copilot,也发现了类似的问题。
9 W# E( p P/ e. S% |4 r, {. W所以,用AI生成代码为啥会出现这种状况?+ K5 N: E# d% Z5 q3 M+ F
写的程序中76%有安全漏洞
6 `& U, t! z" P# Y& I( i# f R& s0 d研究人员试着让ChatGPT生成了21个程序。
+ R F# o+ [/ K& H整个测试过程如下,先提交需求给ChatGPT,生成相关代码,再对这些代码进行测试,并检查问题、潜在的缺陷和漏洞等。! s+ D1 ~; W' g1 _; X
3 ^/ F( q ^' E. ~/ g) _, o
* w3 w# K! |' i0 f8 s0 a) E( x1 k& \5 r6 r, |! q
研究人员给ChatGPT提了包括C++、C、Java和Python在内的21个写代码需求,这是评估的结果:# d+ y: N' D* _
' y2 {% P% u5 ~% t, D; B4 A$ ?* j! c" |1 b; U& `! v
& z: b% Y5 _0 \' ~* p
统计表明,ChatGPT生成的21个程序中,有17个能直接运行,但其中只有5个程序能勉强通过程序安全评估,不安全代码率达到76%以上。
5 [0 _/ y2 T! y+ m于是,研究人员先试着让ChatGPT“想想自己生成的代码有啥问题”。( ^8 m/ \) ]# N8 ~9 ?
ChatGPT的回应是“没啥问题”:只要用户每次的输入都是有效的,那么程序一定能运行!
6 B5 `. w9 i" ]显然ChatGPT并没有意识到,用户并不都是行业专家,很可能只需要一个无效输入,就能“引炸”它写的程序:
( H3 ?3 N+ w* Q2 ]5 _* B
. f: H# q0 Y! B' d! o' V9 q! d+ C% z8 d& q+ b
/ u% d2 D, H9 f. t6 A. z2 a8 F/ n发现ChatGPT不知道自己写的程序不安全后,研究人员尝试换了种思路——用更专业的语言提示ChatGPT,如告诉它这些程序具体存在什么漏洞。
- u$ o1 c* ]9 [( `) y5 P# P+ ]神奇的是,在听到这些针对安全漏洞的专业建议后,ChatGPT立刻知道自己的代码存在什么问题,并快速纠正了不少漏洞。3 t6 O$ ?( V a! s0 f6 z; U
经过一番改进后,ChatGPT终于将剩余的16个漏洞程序中的7个改得更安全了。1 M' G$ _8 Y: E4 y5 ?. S. o
研究人员得出结论认为,ChatGPT并不知道自己的代码中存在安全漏洞,但它却能在生成程序后识别其中的漏洞,并尝试提供解决方案。& a! l. f9 H. p: L& g' g
论文还指出,ChatGPT虽然能准确识别并拒绝“写个攻击代码”这种不道德的需求,然而它自己写的代码却有安全漏洞,这其实有着设计上的不合理之处。, A( S R- r: g' s$ B7 ]7 v8 G
我们试了试发现,ChatGPT确实会主动拒绝写攻击性代码的要求:! f0 u+ W3 n& y
1 V; F. ~) j7 `& b p
; h# W* U2 }5 _) s6 Q* x
1 ]5 l8 h }, w# |
大有一种“我不攻击别人,别人也不会攻击我写的代码”自信感。- p. V* I& L, ^+ h
程序员们在用它辅助写代码的时候,也需要考虑这些问题。
' v+ \- I" A0 _! [Copilot也存在类似问题
" @$ r, i! o$ V3 p( h+ W* U事实上,不止ChatGPT写的代码存在安全问题。
" V, T" [* Y- h- H此前,斯坦福大学的研究人员对Copilot也进行过类似调查,只不过他们探查的是用Copilot辅助生成的程序,而并非完全是Copilot自己写的代码。, t- _# }9 ^7 X" g+ y
研究发现,即便Copilot只是个“打辅助”的角色,经过它改写的代码中,仍然有40%出现了安全漏洞。$ N$ L g8 F- d1 S% M
. H: t3 R6 m/ P' R
# U! v# Z/ L' G( Z0 d% S: v: C* y+ g
k1 R* M4 C* N+ E% e9 k而且研究只调查了Copilot生成代码中的一部分,包括C、Python和Verilog三种编程语言写的程序,尚不知道用其他语言编写的程序中,是否还存在更多或更少的安全漏洞。9 q8 o) L; ?( B( ]& c) m3 s9 O+ M
基于此,研究人员得出了如下结论:! K+ N9 f& G7 D' ?% h3 X1 {6 |
: a( i, m0 W4 o3 x0 P- qChatGPT等AI生成的代码安全性并不稳定,用某些语言写的代码比较安全,而用其他语言写的代码却很容易遭受攻击。整体来看,它们就是一个黑盒子,生成的代码是有风险的。
. x7 ?3 f+ P/ x; t: g; O这并不意味着AI代码工具不能用,只是我们在使用时,必须考虑这些代码的安全性。) \# n2 _& G: b% K6 R
$ g" i- M. l+ B) C作者介绍
! f: n+ _3 G; C: A2 a四位作者均来自加拿大魁北克大学(Universite du Quebec en Outaouais)。
( F: o% x8 ^; j9 l0 ` _0 |2 J+ d+ l* F( O, ~
% w' L) q% y: d& M0 J2 T* U4 ^3 J
4 v3 K/ W; e3 x4 e
Raphaël Khoury,加拿大魁北克大学教授,曾经在拉瓦尔大学获得计算机学士、硕士和博士学位,研究兴趣集中在计算机安全方面。& X9 _. }: d7 n- l# J6 C, M
; p2 ? N. ~6 M E; ~$ F. H. F
* L- g* J/ h% n; ?: q( r
- M% W4 h( W! _0 c) C4 OAnderson R. Avila,魁北克大学国立科学研究院的助理教授,主要研究方向是数据隐私相关的联邦学习、网络安全和生物特征识别技术等,曾经在华为的加拿大研究院做过机器学习研究员。0 ^8 z' Y8 }! a( N4 l8 x- }
作者Jacob Brunelle和Baba Mamadou Camara也都来自加拿大魁北克大学。
( }& L8 E& r8 {9 }- T9 b, @你用ChatGPT写过代码吗?感觉它的“安全意识”如何?" X4 L& `) @# S; ?: V
论文地址:
3 T" }# ]" N# G$ a1 \https://arxiv.org/abs/2304.096555 v* m( _: m% t- B: B
生成代码数据集:2 e9 E R- K9 @" l' y. v5 T
https://github.com/RaphaelKhoury/ProgramsGeneratedByChatGPT |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|