博客專欄

        EEPW首頁(yè) > 博客 > GitHub 的 AI 編程工具漏洞高達(dá) 40% ,再次陷入爭(zhēng)議……

        GitHub 的 AI 編程工具漏洞高達(dá) 40% ,再次陷入爭(zhēng)議……

        發(fā)布人:AI科技大本營(yíng) 時(shí)間:2021-09-19 來(lái)源:工程師 發(fā)布文章

        在近日發(fā)表的一篇論文中,研究人員對(duì) GitHub Copilot 人工智能編程輔助工具進(jìn)行了深入調(diào)查。結(jié)果發(fā)現(xiàn),仍處于測(cè)試預(yù)覽階段的 Copilot 具有高達(dá) 40% 的錯(cuò)誤代碼率,意味著開(kāi)發(fā)者必須在使用時(shí)對(duì)其保持清醒的認(rèn)知。此外在多場(chǎng)景測(cè)試項(xiàng)目中,約 40% 都被發(fā)現(xiàn)包含了安全漏洞。

        AI 編程神器 GitHub Copilot

        此前,GitHub 和 OpenAI 推出一種新人工智能自動(dòng)編程工具 Copilot ,能自動(dòng)生成代碼,供開(kāi)發(fā)者參考使用。

        官方宣傳語(yǔ)為“你的 AI 結(jié)對(duì)編程助手”。

        什么是結(jié)對(duì)編程呢?

        結(jié)對(duì)編程(英語(yǔ):Pair programming)是一種敏捷軟件開(kāi)發(fā)的方法,兩個(gè)程序員在一個(gè)計(jì)算機(jī)上共同工作。一個(gè)人輸入代碼,而另一個(gè)人審查他輸入的每一行代碼。輸入代碼的人稱作駕駛員,審查代碼的人稱作觀察員(或?qū)Ш絾T)。兩個(gè)程序員經(jīng)常互換角色。

        在結(jié)對(duì)編程中,觀察員同時(shí)考慮工作的戰(zhàn)略性方向,提出改進(jìn)的意見(jiàn),或?qū)?lái)可能出現(xiàn)的問(wèn)題以便處理。這樣使得駕駛者可以集中全部注意力在完成當(dāng)前任務(wù)的“戰(zhàn)術(shù)”方面。觀察員當(dāng)作安全網(wǎng)和指南。結(jié)對(duì)編程對(duì)開(kāi)發(fā)程序有很多好處。比如增加紀(jì)律性,寫出更好的代碼等。

        那么AI結(jié)對(duì)編程就是人機(jī)結(jié)對(duì)編程的升級(jí)版,具體來(lái)說(shuō) GitHub Copilot 由 OpenAI Codex 提供支持,可以從開(kāi)發(fā)者已經(jīng)編寫的代碼和注釋中提取上下文,試圖理解開(kāi)發(fā)者意圖,生成需要添加的一行、多行代碼或整個(gè)函數(shù),當(dāng)程序員接受或拒絕建議時(shí),模型就會(huì)學(xué)習(xí)越來(lái)越適應(yīng)和匹配開(kāi)發(fā)者的編程風(fēng)格。

        這使得程序員無(wú)需在寫代碼時(shí)去查閱大量文檔或搜索相關(guān)示例,更加聚焦于開(kāi)發(fā)工作本身。

        正如 OpenAI 員工 Harri Edwards 所言:“用一種不熟悉的語(yǔ)言編寫代碼,用谷歌搜索所有東西,就像用一本短語(yǔ)手冊(cè)去瀏覽一個(gè)外國(guó)國(guó)家。而使用 GitHub Copilot ,好比雇傭一名翻譯。”

        GitHub 首席執(zhí)行官在 6 月 29 日的一篇博客文章中稱:

        OpenAI Codex 對(duì)人們?nèi)绾问褂么a有著廣泛的了解,且在代碼生成方面較 GPT-3 強(qiáng)大得多,部分原因是其在包含大量公共源碼的數(shù)據(jù)集上展開(kāi)了訓(xùn)練。

        GitHub Copilot 適用于多種語(yǔ)言框架,但現(xiàn)階段的技術(shù)預(yù)覽版本更側(cè)重于 Python、JavaScript、TypeScript、Ruby 和 Go 語(yǔ)言。

        然而 Copilot 很快引發(fā)了多方爭(zhēng)議,尤其涉及代碼質(zhì)量、法律與道德考量、替換人類開(kāi)發(fā)者的可能性、以及引入安全漏洞的可能性。


        GitHub Copilot 的代碼質(zhì)量如何呢?

        近日,康奈爾大學(xué)的研究人員公布了一項(xiàng)數(shù)據(jù),為了對(duì) Copilot 的實(shí)際價(jià)值做出量化,他們?yōu)?GitHubCopilot 生成了 89 個(gè)不同的場(chǎng)景,生成了 1692 個(gè)程序。其中,大約 40% 的程序存在安全漏洞。

        具體說(shuō)來(lái)是,這項(xiàng)研究從三個(gè)維度展開(kāi)了考量,分別是缺陷的多樣性、prompt 的多樣性、以及領(lǐng)域的多樣性。

        總體而言,頭部 39.33% 和總體 40.48% 的項(xiàng)目易受攻擊。從安全角度來(lái)看,Copilot 在測(cè)試場(chǎng)景中的表現(xiàn)也有好有壞。

        對(duì)于新手來(lái)說(shuō),Copilot 借鑒的高質(zhì)量代碼還是相當(dāng)值得推薦的。但若開(kāi)源存儲(chǔ)庫(kù)中的某些錯(cuò)誤相當(dāng)明顯,Copilot 也會(huì)更加頻繁地重現(xiàn)。

        研究人員表示,由于 Copilot 是利用 GitHub 上提供的開(kāi)源代碼進(jìn)行訓(xùn)練的,因此可以推斷,代碼安全質(zhì)量取決于 GitHub 社區(qū)的開(kāi)源代碼質(zhì)量。

        在 GitHub Copilot 推出后,有關(guān)于它的負(fù)面消息這并不是第一次。

        就在其發(fā)布不到一周的時(shí)間里,GitHub Copilot 就被推上了侵權(quán)的風(fēng)口浪尖,引發(fā)了前所未有的爭(zhēng)議。

        原因是有位程序員嘗試了一下平方根倒數(shù)速算法(Fast Inverse Square Root),結(jié)果只是打出來(lái)這四個(gè)關(guān)鍵詞。

        floatQ_rsqrt( float number )
        {
        long i;
        float x2, y;
        constfloat threehalfs = 1.5F;
            x2 = number * 0.5F;
            y  = number;
            i  = * ( long * ) &y;                       // evil floating point bit level hacking
            i  = 0x5f3759df - ( i >> 1 );               // what the fuck? 
            y  = * ( float * ) &i;
            y  = y * ( threehalfs - ( x2 * y * y ) );   // 1st iteration
        //    y  = y * ( threehalfs - ( x2 * y * y ) );   // 2nd iteration, this can be removed
        return y;
        }

        GitHub Copilot 就逐行“完美復(fù)刻”了當(dāng)年那段神奇的算法,甚至連當(dāng)時(shí)的原版注釋都被保留下來(lái)。

        1.gif

        甚至GitHub Copilot連當(dāng)年那句“what the fuck”的注釋也用上了。

        這種現(xiàn)象引起了大量開(kāi)發(fā)者的不滿,這不禁讓人細(xì)思極恐:難道這不侵犯版權(quán)嗎?

        結(jié) 語(yǔ)

        關(guān)于 GitHub Copilot 代碼的事情,在 Hacker News 論壇上引起熱議。

        一家科技公司的產(chǎn)品安全負(fù)責(zé)人明確表示:禁止員工使用GitHub Copilot。

        不過(guò),也有程序員表示,我用 AI 寫的程序關(guān)我什么事,有責(zé)任那也是 GitHub 母公司微軟的。

        盡管 AI 編程有很多爭(zhēng)議,但腳步從未停止。今年八月,OpenAI 宣布開(kāi)發(fā)一種將自然語(yǔ)言轉(zhuǎn)換為編程代碼的人工智能系統(tǒng) —— Codex。

        Codex 是建立在 Copilot 之上,Codex 通過(guò)接收用英語(yǔ)編寫的句子并將它們翻譯成可運(yùn)行的代碼,換句話說(shuō),它是可以將自然語(yǔ)言轉(zhuǎn)換為代碼的 AI 系統(tǒng),這意味著 AI 編程的概念又往前進(jìn)了一步。

        對(duì)此,OpenAI 稱 Codex 讓計(jì)算機(jī)能夠更好地理解人們的意圖,從而讓每個(gè)人都可利用計(jì)算機(jī)來(lái)實(shí)現(xiàn)更多目的。

        那么,AI 寫代碼究竟可行不可行呢?

        參考鏈接:

        https://news.ycombinator.com/item?id=27710287

        https://github.com/id-Software/Quake

        https://arxiv.org/abs/2108.09293

        https://www.techradar.com/news/github-autopilot-highly-likely-to-introduce-bugs-and-vulnerabilities-report-claims

        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。

        塵埃粒子計(jì)數(shù)器相關(guān)文章:塵埃粒子計(jì)數(shù)器原理


        關(guān)鍵詞: AI

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 伊春市| 丹东市| 太仆寺旗| 勃利县| 东乌珠穆沁旗| 建湖县| 焉耆| 墨竹工卡县| 庐江县| 彩票| 肃南| 灌云县| 木兰县| 巴东县| 新干县| 海城市| 汉川市| 溆浦县| 成武县| 弋阳县| 泰来县| 永寿县| 鹤庆县| 莲花县| 邯郸县| 远安县| 汾西县| 合水县| 太康县| 三江| 广水市| 莎车县| 青阳县| 淮滨县| 榆中县| 兰州市| 北京市| 巨鹿县| 二手房| 扎鲁特旗| 东丰县|