我們藉由一系列的部落格文章,從多個面向探討 Codex 的功能在資安上可能影響一般開發人員和駭客的特點,本文是該系列文章的第二篇。
2020 年 6 月,非營利人工智慧研究機構 OpenAI 推出了第三版的 Generative Pre-trained Transformer (GPT-3) (生成式預先訓練轉換器) 自然語言轉換器,在科技界掀起了一番波瀾,因為它具備神奇的能力,可產生足以讓人誤認為是真人撰寫的文字內容。不過,GPT-3 也曾針對電腦程式碼來做訓練,因此最近 OpenAI 釋出了一套專為協助程式設計師 (或者可能取代程式設計師) 的特殊引擎版本叫作「 Codex」。.
我們藉由一系列的部落格文章,從多個面向探討 Codex 的功能在資安上可能影響一般開發人員和駭客的特點,本文是該系列文章的第二篇。(第一篇。)
由於 Codex 是以 GPT-3 為基礎,因此已先經過網際網路上的大量程式碼訓練完成,且涵蓋了幾乎每一種目前可取得的程式設計語言。不過,自然語言和程式設計語言在特性上並不相同。一般來說,自然語言在傳達人類想法時的彈性較大,而程式設計語言則結構較為固定、規則較為嚴謹,且完全視程式語言的解譯器和組譯器而定。
在高階程式設計語言方面,我們很自然地會認為針對自然語言處理而設計的 GPT-3 統計模型應該也可以用來產生高階程式設計語言的程式碼。然而 Codex 缺乏真正「理解」程式語言的必要元素,例如有關語法的結構或是電腦的架構。
那麼,這樣的程式碼產生功能到底能發揮到多少實用性呢?
模仿遊戲:Codex 理解低階程式碼的能力
為了評量 Codex 對其所產生的程式碼到底有多深的理解,我們測試了它對組合語言的理解能力。我們刻意挑選與自然語言最不像、但卻最貼近機器的組合語言。我們試著提供一段組合語言程式碼範例給 Codex,然後看看它能不能用一般語言來解釋這段程式碼。
繼續閱讀