サイト一覧NewsBridge 翻訳して読み比べるニュース
iThomeの一覧へ戻る

GitLab四項RCE漏洞源頭,指向Ruby正規表示式引擎缺陷

iThome文字
元の記事を開く

記事本文

6 段落 · 単語をタップ(クリック)または文章を選ぶと翻訳 · 単語をタップ/文章を選ぶと翻訳

程式語言Ruby官方發布新版本4.0.9、3.4.12及3.3.13,修補正規表示式引擎Onigmo的多項記憶體處理錯誤。問題是在GitLab調查4項可能導致遠端程式碼執行的漏洞時發現,攻擊者可利用特製的正規表示式破壞記憶體,進而在GitLab伺服器執行程式碼。GitLab先前已修補自家產品使用的Ruby,此次則由Ruby官方發布底層修正。

正規表示式是程式用來搜尋或比對文字的規則,例如檢查輸入內容是否符合指定格式,而Ruby在使用這些規則前,必須先將其轉換成程式能夠處理的形式。此次修正的錯誤就發生在轉換過程中,特製的正規表示式可能造成記憶體被重複釋放,或計算結果超出系統容許範圍,導致記憶體損壞。

GitLab自9月23日起陸續修補4項與正規表示式有關的遠端程式碼執行漏洞,其中10月21日修補的CVE-2026-110264,嚴重程度達CVSS滿分10分,攻擊者在特定條件下不需登入就可能執行任意程式碼。GitLab部分功能會將使用者提供的正規表示式交由Ruby編譯,特製的輸入可能在編譯期間造成記憶體損壞。GitLab已先修補產品內使用的Ruby,並與Ruby開發團隊協調修正相關的底層錯誤。

經Ruby團隊確認,這4項GitLab漏洞對應其正規表示式引擎的3組修正,分別涉及記憶體重複釋放、編譯結果大小計算錯誤,以及正規表示式包含大量重複規則,造成內部編號溢位。其中部分修正已包含在Ruby 4.0.0及4.0.8,4.0.9則補齊最後一項,3.4.12與3.3.13也已包含全部修正。

Ruby官方解釋,只有應用程式將攻擊者可控制的字串當成正規表示式進行編譯時,才可能觸發相關錯誤,例如透過Regexp.new、Regexp.union、Regexp.compile等方法,或直接將外部輸入插入正規表示式。若程式僅使用開發者自行撰寫的正規表示式,便不受影響。

官方提醒,設定Regexp.timeout逾時限制無法防止這批錯誤,限制正規表示式長度也不可靠,因為部分問題只需短字串就能觸發。官方建議升級至已修補版本,無法升級的應用程式則應避免編譯不可信任的輸入。

段落ごとの訳がずれるときに

単語をタップ(クリック)すると単語を、文章を選ぶとその範囲をすぐに翻訳します。