Stack Overflow上最常用的Java代碼段包含一個錯誤

Java的

一項研究發表於 2018年十月 在《經驗軟件工程》雜誌上 由學者塞巴斯蒂安·巴爾特斯和斯蒂芬·迪爾 揭示了其中提供的代碼段 回答問題 Andreas Lundblad在2010年XNUMX月的堆棧溢出,Palantir的Java開發人員, 它是社區平台上使用最廣泛的Ja​​va代碼段。

黃大仙禁運, 在上週的帖子中 Lundblad解釋說代碼有錯誤,並且錯誤地轉換了字節數 以人類可讀的格式。 有問題的代碼已經積累了超過一千條建議,並且已經被包含在許多項目中,並且在GitHub上的存儲庫中大約有七千次。

值得注意的是 用戶未找到該錯誤 在他們的項目中使用此代碼的人 但由筆尖的原始作者撰寫。

所考慮的代碼以可讀形式轉換了字節大小,例如將110592轉換為 “ 110.6 kB”或“ 108.0 KiB”。 該代碼是先前建議的建議的一種變體,使用對數進行了優化,其中,值是通過將循環中的初始值除以«來確定的。10 18,10 15,10 12,10 19,10 6,10 3和10 0'' ,即使除數大於原始值(以字節為單位)。

由於優化版本中的計算不正確 (長值溢出), 處理大量數據的結果 (艾字節)與現實不符。

Lundblad解釋說,該代碼包含一個瑣碎的轉換錯誤,只會導致文件大小估計稍有不准確。 話雖如此,估計情況會比這差得多。

該代碼可能包含一個安全漏洞, 例如。 如果真是這樣,修復所有易受攻擊的應用程序將花費數月或數年,使用戶遭受攻擊。

建議的作者還試圖提請注意該問題 使用示例而不參考源代碼,也沒有指定許可證。

“在涉及多個人類編碼員的協作會議中,我們根據CWE(通用弱點枚舉)說明手動評估了每段代碼的安全漏洞。

在至少一個GitHub託管項目中使用的72,483個掃描代碼段中,我們發現總共69個易受攻擊的代碼段,分為29種類型。 研究的許多代碼片段尚未確定,”研究人員在報告中說。

69個易受攻擊的代碼段 在堆棧溢出中找到 在2859個GitHub項目中重複使用。 為了提高Stack Overflow上共享代碼段的質量,他們開發了一個瀏覽器擴展,允許Stack Overflow用戶在將代碼段下載到平台時搜索其中的漏洞。

但是,儘管研究人員提出了警告,但是開發人員仍然在不執行分析的情況下將Stack Overflow代碼複製到其項目中。

IT副教授Ashkan Sami, 工程與信息技術 伊朗設拉子大學的學生說

“這項研究是嘗試檢查錯誤代碼如何從Stack Overflow遷移到GitHub。 基本上,我們一直試圖證明的是,不仔細檢查堆棧溢出代碼會導致應用程序漏洞,”薩米說。 該研究還引用了2017年的一篇學術文章。

根據這篇文章,在Stack Overflow上發布的1161個不安全的代碼段被用於Google Play上的1.3萬個Android應用程序中。

除了先前的研究之外,有46%的開發人員在未指定作者的情況下使用StackOverflow代碼,75%的開發人員不知道該代碼是根據CC BY-SA許可的,而67%的開發人員不知道這意味著需要歸因。

根據其他研究的數據,使用示例代碼不僅與代碼中的錯誤風險相關,而且與漏洞相關。

例如,在分析了StackOverflow上的72483個C ++代碼樣本後,研究人員發現了69個樣本中的嚴重漏洞(佔0.09%),這些漏洞已包含在最受歡迎的推薦列表中。

來源: https://programming.guide


本文內容遵循我們的原則 編輯倫理。 要報告錯誤,請單擊 這裡.

成為第一個發表評論

發表您的評論

您的電子郵件地址將不會被發表。

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。