「Talk is cheap,show me the code」你一行代碼有多少漏洞?

2020-12-07 騰訊網

受訪者 | 梁宇寧

記者 | 伍杏玲

出品 | CSDN(ID:CSDNnews)

平常程式設計師喜歡說「Talk is cheap, show me the code」這句話,可是你知道你敲下的一行代碼背後,有多少漏洞?據《代碼大全(第二版)》顯示,平均而言,軟體交付中每 1000 行代碼大約有 1-25 個錯誤。

如何高效化、自動化、準確定位代碼漏洞成為不少開發者和管理者頭疼的問題。關注軟體質量的鑑釋於 2018 年成立,推出的愛科識靜態代碼分析工具得到較好的反響,目前剛完成 A+ 輪融資的鑑釋發展勢頭強勁,他們對於靜態代碼分析有怎樣獨到的理解與經驗?未來還會放哪些「大招」,給我們帶來哪些驚喜?

對此,CSDN(ID:CSDNnews)專訪鑑釋聯合創始人兼 CEO 梁宇寧,聊聊軟體質量的那些事兒。

梁宇寧

20 年 IT 老兵,孜孜不倦只為軟體質量

在創立鑑釋前,梁宇寧作為一名 20 多年的 IT 老兵,基於多年軟體開發和管理經驗,幾年前梁宇寧洞悉到中國靜態代碼分析市場上的空白,「因為就軟體開發生命周期(SDLC)來說,國外已有一些成熟的工具,但中國市場尚未成熟,大家不重視檢查原始碼的質量」。因此在 2018 年初,梁宇寧創辦專注軟體質量的鑑釋。

據統計,相比在應用程式啟動後識別錯誤和修復,在編碼早期階段識別代碼錯誤並修復可節省15倍的成本。在開發生命周期早期做軟體測試可獲得更高效率的「左移」思想下,鑑釋研發的漏洞掃描工具愛科識,它可集成到開發過程中,完成代碼漏洞掃描,通過分析識別可能導致缺陷的原始碼,避免內存汙染、核心轉儲、緩衝區溢出、非法操作、以及空指針等問題的出現,自動化保障代碼質量和提高研發人員效率。

踩過技術人踩的創業「坑」:唯技術,不注重產品

儘管梁宇寧在 IT 界「摸爬滾打」 20 載,談到創業踩過的坑,梁宇寧坦言道:「由於我創業經驗不夠,創業難以達到『天時地利人和』六字,踩過的坑不少。

剛開始創業時,梁宇寧犯了技術人普通會犯的錯:太注重核心技術的驗證,忽略產品功能。他建議技術創業者可學習賈伯斯的思想:先要把產品做好,再討論用使用哪些技術來解決客戶問題,不是先從技術考慮產品方向。

所幸的是,團隊迅速發現並糾正此問題,保證團隊的順利運行。功夫不負有心人,團隊的收穫接連而至:先是核心技術算法在美國NIST軟體質量基準獲得較好的結果,緊接著鑑釋順利完成 A+輪融資。

梁宇寧表示,本次融資後,今年主打將技術產品化,完成下一輪的產品線規劃,對DAST、IAST 技術做原型驗證,爭取在下一輪融資前,可在原型技術基礎上推出更多新品,幫助開發者提高軟體開發的質量與提高效率。在團隊把技術產品打磨得更完美之時,同時擴大團隊規模,為更多客戶提供更好的服務,他十分歡迎對鑑釋感興趣的小夥伴前來加入團隊。

工具解析代碼,如何確認安全?

有開發者在使用代碼分析工具時,往往存在疑問是否會存在安全問題。對此,梁宇寧表示,從自己的第一份工作開始,國外已有代碼分析工具和產品。因為海外工程師的薪資較高,管理者非常注重效率和產品質量。

梁宇寧在華為工作時,他深刻認識到華為對於質量的要求非常高,那時候的梁宇寧和同事用國外的代碼分析產品較多。而當時國內產品使用的人較少,畢竟做這類產品的門檻很高。

由於鑑釋創始團隊(如鑑釋首席架構師劉新銘、首席技術官陳新中等)均是資深編譯器專家出身,而編譯器是對於理解代碼的程度要求最深的技術,於是在打造愛科識時就應用相關技術來分析哪些代碼好,哪些代碼不好,哪些可能存在漏洞。相比競品而言,技術上是革命性的改變,即愛科識應用編譯器技術來解決代碼分析的核心問題。

代碼分析工具的難點

在不同行業不同系統運行一款代碼分析工具時,將會遇到一些難題。梁宇寧介紹道:

一、在 AIoT 上,由於其本身碎片化的特性,每家AIoT企業的系統構建方式不盡相同,對代碼安全和質量的認識還有改進空間。

對此,鑑釋和 AIoT 廠商進行深入的合作,增加培訓交流,引導其對於物聯網軟體跟質量的認知與了解。

二、如今構建軟體應用的複雜度很高,例如一個安卓應用不僅使用Java、C語言,還有系統調用代碼。如果沒有一個實現跨語言或者跨模塊的技術的全程分析工具,很難提供高準確率、漏報率的。

對此,愛科識提供跨語言、跨模塊,跨平臺服務,涵蓋從用戶態到內核態技術。愛科識通過解析企業系統的構建環境,給「配置」一個特別的編譯器用於構建工程,如此一來,可分析不同企業系統的代碼問題並上報給企業。

梁宇寧關注中國開源技術的發展,曾在 CSDN 撰寫一些開源文章。目前愛科識面向 ToB 和本地部署,未來梁宇寧將計劃和 GitHub、GitLab、Jenkins 等開源夥伴合作,愛科識助力開原始碼提高質量。

談及愛科識未來是否會開源?梁宇寧表示,將在未來時機成熟時考慮。發展生態,在代碼合規和規則制定上,為更多行業做更多貢獻更多的規則和更多語言支持。

無需擔心無代碼浪潮

談及無代碼/低代碼浪潮下,不少開發者會有一些擔憂,TA 是否對應用程式開發、代碼分析工具有所影響?

梁宇寧說:「不用太擔心。無代碼/低代碼已流行了幾十年,TA 像是樂高玩具,但很多產品不是用『樂高』就做出來。因為一些軟體業務不可能太模塊化,或者太自動化地生產,最終需要開發者自己來完成業務邏輯代碼。」

早在梁宇寧在諾基亞工作期間,已有自動化工具做業務代碼,對於邏輯簡單、標準的業務,可以拿著 Plato 畫的流程圖通過工具便可完成簡單功能機的應用。但是對於邏輯非常複雜的業務,開發者不可能不寫代碼,不可能沒有寫代碼的人,不可能沒有代碼錯誤。所以它對於這種代碼自動化趨勢,梁宇寧是「不樂觀,不悲觀」。

梁宇寧進一步說道,低代碼可能會減少一些寫業務代碼的職位,但是對於核心科技,特別是當前局面下,開發者有較大的發展空間的,畢竟像作業系統等技術很複雜,依賴的核心技術庫就超過1000個,所以在基礎軟體上,中國開發者還是大有可為的。

對 CSDN 寄語:自由、開放、追求

談及和 CSDN 的緣分,時間還得回到 20 年前,還在讀大學的梁宇寧通過同學閱讀到 CSDN 主辦的《程式設計師》雜誌。不知不覺,今年已是《程式設計師》雜誌的20 周年了,他希望 CSDN 和打造軟體、程序藝術一樣,需要一定自由的環境和非公益性的環境發展。正如「在軟體核心技術上要坐冷板凳至少十年,才會到有大回報的機會。」最後梁宇寧給 CSDN 送上「自由、開放、追求」的寄語來結束本次訪談。

嘉賓簡介:梁宇寧,鑑釋執行長。在創立鑑釋前,梁宇寧先生在世界 500 強企業(包括三星、諾基亞、華為)和初創科技公司領導軟體開發工作,他擁有超過二十年的軟體開發和管理經驗。在他的職業生涯中,他曾在中國、韓國和歐洲多個國家的國際性企業就職,對全球的科技和軟體安全行業有深刻的行業洞見。梁宇寧先生畢業於南洋理工大學,並獲得工程碩士學位。

相關焦點

  • 每日一句英譯英:stand-up comedian or talk show
    每日一句英譯英:stand-up comedian or talk show今天「遇到」了一個英語詞彙:He is a stand-up comedian,一看中文:脫口秀。不對呀!A talk show才是習慣了的中文「脫口秀」,怎麼又來個a stand-up comedian?
  • Python趣味打怪:60秒學會一個例子,147段代碼助你從入門到大師
    不要害怕學習的過程枯燥無味,這裡有程式設計師jackzhenguo打造的一份中文Python「糖果包」:147個代碼小樣,60秒一口,營養又好玩,從Python基礎到機器學習盡皆囊括。其中,有常用知識的總結,隨查隨用:從正則化起手式到簡單爬蟲的實現,也都一步步用代碼鋪開:△urllib為內置模塊,推薦第三方庫requests當然啦,學習Python,怎麼能忽略三大利器:迭代器
  • 簡單shellcode學習
    引言之前遇到沒開啟NX保護的時候,都是直接用pwtools庫裡的shellcode一把梭,也不太懂shellcode代碼具體做了些什麼,遇到了幾道不能一把梭的題目,簡單學習一下shellcode的編寫。
  • Python代碼轉Latex公式,這個開源庫用一行代碼幫你搞定
    機器之心報導編輯:小舟你的代碼中有數學公式嗎?數學是數據科學和機器學習的重要基礎,數學運算的結果對於機器學習項目而言是至關重要的。在編寫代碼時,我們常常需要定義數學公式的計算形式。像 S=r^2 這樣簡單的數學公式,大概不會出現拼寫錯誤。但如果是下面這樣的公式呢?
  • 一行Python代碼寫階乘函數
    背景我以前用Dart寫過一行的階乘函數:fact(double n) => n < 0 ? throw ('n must be bigger than 0') : n == 0 ?要求使用一行代碼編寫函數。調用方式為fact(x),其中x為要求階乘的數。不得使用分號以變相湊成一行。
  • 影響數千萬APP的安卓APP「寄生獸」漏洞技術分析
    參考:https://www.nowsecure.com/blog/2015/06/16/remote-code-execution-as-system-user-on-samsung-phones/三星輸入法是擁有系統最高級別的system權限,可以直接替換任意app的緩存文件。那安卓app插件的緩存代碼是否和APP主程序直接產生的緩存代碼一樣能被任意替換?
  • QQ飛車VE修改器T車代碼是多少
    ,下面小編就給大家說說QQ飛車VE修改器T車代碼是多少這個問題。 VE修改器   提問:QQ飛車VE修改器T車代碼是多少?爵士,為板車代碼] S車: /<itemshow=24924>[時空戰艦] /<itemshow=24410>[風之使者] /<itemshow=23980>[猛獸] /<itemshow=24146>[幽浮] /<itemshow=23378>[十字先鋒] /<itemshow
  • 論文繪圖神器:一行代碼繪製不同期刊格式圖表,哈佛博士後開源
    安裝這款補充包可以通過pip用一行代碼完成:pip install git+https://github.com/garrettj403/SciencePlots.git你也可以選擇手動安裝工具包,把Github上的項目克隆到本地以後,直接將*.mplstyle的所有文件放到Matplotlib的風格(style)路徑下。
  • 2020HW期間公布漏洞總結(附部分漏洞Poc、Exp)
    28.CVE-2020-16875-Exchange遠程代碼執行漏洞29.深信服EDR遠程代碼 執行漏洞30.CVE-2020-24616-Jackson 多個反序列化安全漏洞31.寶塔面板888埠pma未授權訪問32.深信服 EDR 任意用戶登錄漏洞33.泛微e-cology某版本存在RCE漏洞34.CVE-2020-13933-Apache
  • PapersWithCode發布代碼完整性自查清單:想獲更多星,注意這五項
    清單項目地址:https://github.com/paperswithcode/releasing-research-code機器學習代碼完整性自查清單為鼓勵復現性,幫助社區成員基於已發表工作更輕鬆地構建新的項目,Papers with Code 團隊發布了機器學習完整性自查清單。
  • C/C++免殺CS shellcode實踐
    概述什麼是shellcode百度百科這樣解釋道:shellcode是一段用於利用軟體漏洞而執行的代碼,shellcode為16進位的機器碼,因為經常讓攻擊者獲得shell而得名。翻譯成人話就是:shellcode是一段執行某些動作的機器碼。
  • talk 相關的短語動詞
    你正對她大發議論,她沒有注意。 Talk to me, not at me. I want to communicate with you. 跟我說話,不要議論我。我想和你交流。
  • variety show
    請看外電報導:In his debut as a TV talk show host, Diego Maradona headed a ball with fellow former soccer star Pele and hobnobbed with movie stars and entertainers.
  • 開車門舞Kiki do you love me是什麼歌(歌名+歌詞含義介紹)
    最近網上一個Kiki do you love me的歌真的是太火了,調子太有律動感了,那麼這個歌的名字叫什麼呢?一起來試聽一下吧!never ever leave  你有新男友了嗎?in the wraith  我們兩個壞女孩在勞斯萊斯幻影裡親吻  Kiss-kissing in the wraith  在勞斯萊斯幻影裡親吻  I need that black card and a code to the safe, code to the safe  我需要黑卡和保險箱的密碼  code-code
  • 聽高手談telnet安全漏洞
    那麼今天我們就來討論一下telnet安全漏洞的內容。那麼來了解一下telnet安全漏洞的基本情況。早期Solaris 2.6、7 和 8 的 telnetd存在一個漏洞, 可以通過/bin/login的環境變數 TTYPROMPT 繞過驗證,導致無需身份認證即可登錄。最近,Solaris 10的telnet又被發現出現了漏洞,Sun也及時推出了補丁。我們先來看問題的症狀。
  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    @數據分析師攻略 公眾號關注、學習更多數據分析的知識與資訊------Python代碼具有簡潔易懂的特點,說明它有許多有趣且簡潔的代碼編寫方法,這也讓很多零基礎入門學習編程的同學偏愛從其中,一行代碼編寫與lambda表達式是最具代表性的方法,下面分別來介紹一行代碼編寫和lambda表達式的代碼之美。一行代碼我們都知道,創建列表的方式有多種,比如直接定義、使用list()函數轉換、使用for循環迭代輸出等等。
  • 周鴻禕調侃潘石屹學Python:估計100行代碼有10個漏洞
    導語:在近日由B站舉辦的Rebuild2020的對話中,360董事長周鴻禕談到代碼漏洞不可避免的原因時表示,代碼出現漏洞主要有兩個因素:一是人寫代碼的技術漏洞,二是違背安全規則的人性漏洞。
  • 一行代碼的大用處!看到最後一個我終於忍不住了...
    傳智播客博學谷微信號:boxuegu-get最新最全的IT技能免費領取各種視頻資料俗話說得好:兩個黃鸝鳴翠柳,一行代碼上青天!就一行你想讓我幹啥?一行代碼畫個愛心print('\n'.join([''.join([('Love'[(x-y) %len('Love')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3一行代碼輸出Mandelbrot圖像print('\n'.join([''.join
  • 用哪種語言寫的應用漏洞最嚴重?六大主流語言代碼漏洞分析報告出爐
    如果你是一位靠 .NET、C++、Java、JavaScript、PHP 或 Python 吃飯的開發者,那要注意了:一項新研究揭示了這些程式語言的主要安全漏洞。 靜態代碼分析安全公司 Veracode 近期發布了這些語言的漏洞類型數據,這是該公司掃描了 13 萬應用程式的安全問題後得到的報告。