鉴释人物丨专访首席技术官陈新中:三十年磨一“鉴”, 打造静态代码分析行业标杆
陈新中,鉴释联合创始人兼首席技术官
作为鉴释联合创始人兼首席技术官,陈新中领导鉴释在中国的核心研发团队,并负责静态代码分析工具的开发。这些工具都被开发人员、测试人员、质量保证专家和高级 IT 管理层用于深度源代码缺陷和漏洞的检测。
01 作为鉴释强大技术背后的推动力,您能简单介绍一下自己吗?
陈新中:作为一名编译器开发者,我从业已 30 多年。说到我在编译器方面的经历,就需要在这里先解释一下:在计算机中有两种中央处理器设计模式,一种是精简指令集,另一种是复杂指令集。精简指令集是上世纪 80 年代初由两位教授提出的,他们在几年前获得了计算机界的诺贝尔奖——图灵奖。美国计算机科学家 John Hennessy 是其中一位教授,他创立了第一个精简指令集的计算机架构。要想设计出拥有更快运行速度的计算机架构,需要很强大对编译器技术支撑。
我与鉴释的另一位联合创始人刘新铭先生,均是 John Hennessey 教授最初的高级开发团队的元老成员。在加入鉴释之前,我曾在英特尔清华大学联合实验室担任主管,主要研究前沿移动计算技术; 之后在担任英特尔实验室负责人期间,我则专注于嵌入式系统方向的研究; 再后来,我带领我的团队为很多五百强企业从零开发多个迭代版本的成熟软件工具。
02 鉴释的旗舰解决方案爱科识是静态应用程序安全测试(SAST)工具,那么您认为 SAST 和编译器技术之间的关系是什么?
陈新中:我们的工具分析处于静态状态下的源代码。换句话说,我们在软件编译和运行之前检查软件的错误。要做到这点,我们超越了编程语言的语法。它不仅是要检查源代码的"语法和拼写",而要检查系统之间的数据流。通过将编译器技术应用于我们的工具,我们模拟数据在软件中的流动方式,并检测运行时期间可能出现的问题,而不是在运行时去检测它。从本质上讲,在二进制代码之前,我们进一步向下执行从抽象语法树 (AST) 到中间表示 (IR) 级别的编译器步骤,因此我们可以看到仅在编程语言代码中看不到的流和操作。
03 鉴释将努力进一步提高其技术竞争力,并将扩展到 DAST(动态应用程序安全测试)和 IAST(交互式应用程序安全测试)领域。 主要的技术升级和挑战是什么?
陈新中:IAST 代表交互式应用程序安全测试。另一种测试技术是动态应用程序安全测试 (DAST),它是目前使用最广泛的安全测试技术之一,用于在编译代码后再运行时检查软件。IAST 结合了 SAST 和 DAST 的元素,并在应用程序内部进行分析。它可以在执行应用程序功能测试时完成安全测试,具有精度高、误报率低的优点。
现有的编程语言可被分为两种,一种是我们可以在其运行时就非常快速地对其进行分析并生成结果的 C 语言,C++,Java,Python 等,另一种则是 JavaScript 等动态语言,它们具有无法在运行时进行分析的语言特征。
一旦我们想要支持 JavaScript 这样的动态语言,我们首先要扩大研究范围,增加对程序进行分析的时间,但总会有一些直到运行时才能进行分析的代码。这也是 IAST 和 DAST 被使用的原因。对于我们没有在运行时分析的静态信息,我们可以在运行时确定输入的内容实际上可能来自外部,或者在运行时可能会生成一些数据,从而改变了程序流。 因此,我们必须进行注释,从状态时间到动态时间的协作分析实际上是最好的方法。如果我们只在运行时使用 IAST 或 DAST 进行分析,我们最终会在程序运行时花费大量时间进行分析,很多时候会改变程序本身。
04 作为一个非常有经验的编译器和技术专家,您在研发过程中遇到过瓶颈吗?
陈新中:总会有未解决的问题的。10 多年来有一个问题一直在我脑海里,那就是跨文件分析问题。这是一个真正的挑战,但幸运的是,我们能够用爱科识解决这个问题。利用我们的新算法,我们可以跨程序甚至跨文件分析程序。即使软件这时处于静态,我们也能够大致分析它在运行状态下的行为。例如,爱科识可以静态分析那些通常在运行时需要输入的程序流。
另一个主要问题就是我们如何应用业务逻辑验证。这不是编译器或语言问题。我们面临的挑战是,我们如何满足公司业务重点所需的特定业务逻辑。例如,访问者在电子商务网站上结账时必须遵守的事件序列。这就是精确和自定义规则基础的用法。我们可以通过符号框架对副作用进行建模和分析用户定义的规则。
05 鉴释未来一年主要关注的行业是哪些?
陈新中:现在,我们正专注于嵌入式市场。现在在中国乃至整个世界,人工智能芯片设计正变得非常流行,有很多初创企业如雨后春笋般涌现。我们发现他们在程序分析、编译和性能优化方面正面临着许多挑战。我们希望能够为他们提供帮助,这就是我们创立鉴释的初衷。
除了人工智能,另一个我们感兴趣的是领域是物联网。现在有很多智能设备问世,比如智能音箱与智能笔。这些小型智能设备问世,使得企业信息安全面临着新的挑战。一旦使用了来路不明的智能设备,企业信息就面临被泄露的巨大风险,企业动向也可能被不法分子在暗中监视。
06 您觉得一个优秀的程序员需要具备哪些特质?
陈新中:能让事情变得简单实际上是一种非常厉害的能力。优秀的程序员能把复杂事情简化进而达成目标,把事情做得又快又好。那些能让事情变得简单的人,是愿意花时间来解决困难的问题。这样也能帮助企业更好的发现真正面临的核心问题。我认为分析和推理能力对于任何程序员或工程师来说都是非常好的特质。我们欢迎有这种思维模式的人加入鉴释团队,一起成长。
评论