CN117546164A - 对软件应用的供应链相关安全威胁的检测 - Google Patents
对软件应用的供应链相关安全威胁的检测 Download PDFInfo
- Publication number
- CN117546164A CN117546164A CN202280044502.7A CN202280044502A CN117546164A CN 117546164 A CN117546164 A CN 117546164A CN 202280044502 A CN202280044502 A CN 202280044502A CN 117546164 A CN117546164 A CN 117546164A
- Authority
- CN
- China
- Prior art keywords
- application
- updated
- source code
- version
- risk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title abstract description 24
- 238000010801 machine learning Methods 0.000 claims abstract description 120
- 238000000034 method Methods 0.000 claims abstract description 79
- 230000003068 static effect Effects 0.000 claims description 134
- 230000006870 function Effects 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 23
- 238000012549 training Methods 0.000 claims description 22
- 238000013145 classification model Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 description 33
- 238000012502 risk assessment Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 18
- 238000012795 verification Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 244000035744 Hura crepitans Species 0.000 description 7
- 238000013459 approach Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 230000001960 triggered effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 239000010979 ruby Substances 0.000 description 3
- 229910001750 ruby Inorganic materials 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 240000004759 Inga spectabilis Species 0.000 description 1
- 241000124008 Mammalia Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 210000005171 mammalian brain Anatomy 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Computer Networks & Wireless Communication (AREA)
- Medical Informatics (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Bioethics (AREA)
- Power Engineering (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及软件应用的供应链相关的安全威胁的检测。一种方法包括标识经更新的源代码和先前源代码之间的差异。该经更新的源代码与应用的经更新的版本相对应。该先前源代码与应用的先前版本相对应。针对经更新的版本确定风险得分。该风险得分基于机器学习(ML)风险模型。该ML风险模型分析经更新的源代码和先前源代码之间的差异。该风险得分的值与和与经更新的版本相关联的潜在的安全威胁相对应。该潜在的安全威胁不与应用的先前版本相关联。该风险得分被提供向有关各方。
Description
背景技术
软件包(例如,软件产品或应用)在几乎所有人类活动(例如,商业、娱乐、慈善、学术或其他类似的人类活动)的众多领域中普遍利用。在生活中,基于软件的工具之所以被广泛接受,其特点就是软件包的更新相对容易,而且可以被广泛采用。随着新功能被添加到应用中,软件包内的“错误”被检测并修复时,软件发布方可以向其用户分发应用更新。例如,许多应用(或“app”)根据需要定期更新,通过采用应用的新(或经更新的)版本。这些经更新的版本可以自动“推送”向执行应用的一个或多个(物理或虚拟)机器。在许多情况下,除非终端用户主动监视当前正在执行的应用版本,否则终端用户甚至可能根本不会意识到这些更新。然而,每一次更新应用和采用新版本时,都会出现有意或无意地在应用中***安全威胁的机会。因此,除非终端用户勤奋地监视其软件的维护,否则终端用户可能不会意识到被***到其基于软件的工具中的潜在的安全威胁。
鉴于现代软件开发的性质,这种经***的安全威胁的可能性增加了。应用可以包括或至少基于许多组件、功能、子例程、模块、库、数据和计算对象/模型、数据库、代码库、子应用、分包等(统称为软件组件或简称组件)被开发。这样,应用现在经由供应商的“供应链”被例程地开发和维护,该供应商向应用的发布方提供各种组件的至少一部分。例如,软件发布方可以通过从供应链采购各种组件来开发应用。应用开发中经利用的每一个组件可以提供针对包含安全威胁的机会。因此,应用的安全性受其供应链中“最薄弱环节”(组件或为组件做出贡献的供应商)的影响。因此,每一个组件的每一次更新为将安全威胁***到应用提供了机会。此外,供应链的组件(或组件供应商)之间的依赖关系可能是复杂和/或层级的。随着应用的架构细节不断趋于复杂,供应链内的漏洞的相互依赖关系和内部依赖关系也趋向于复杂。供应链的复杂和/或层级性质使得通过手动检查来检测和缓解此类安全漏洞变得困难。
传统上,通过“沙盒”或其他类似的受约束的测试环境,可以解决通过版本更新向应用中潜在***安全威胁。然而,受约束的测试环境不能暴露许多潜在的安全威胁或漏洞。有些安全威胁只有在特定条件下才会显现,而任何特定沙盒都不太可能触发这些威胁。没有软件(手动或自动)测试人员能预测(从而模拟)终端用户在利用应用时会出现的每一种情况。因此恶意行为者(可以访问供应链的至少一部分)可能会故意设计安全威胁,这些威胁不太可能在测试沙盒中显现,但一旦应用被广泛采用,就很可能会显现。例如,时间-延迟可以被利用,使得安全威胁只有在安装后足够长的时间段过期后才会被触发。恶意行为者可能会调用其他隐蔽机制,故意从传统应用测试环境中隐藏将安全威胁***到应用的供应链中。
发明内容
本公开所描述技术的各个方面通常涉及***、方法和计算机存储介质,除其他外,用于对软件应用的供应链相关安全威胁的检测。一个示例性但非限制性的方法实施例可以是用于标识可疑应用更新方法。该方法可以包括标识经更新的源代码和先前源代码之间的至少一个差异。所述经更新的源代码与应用的经更新的版本相对应。所述先前源代码与所述应用的先前版本相对应。针对所述应用的所述经更新的版本确定风险得分。该风险得分可以基于机器学习(ML)风险模型。该ML风险模型可以分析经更新的源代码和先前源代码之间的一个或多个差异。该风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可能不被包含在应用的先前版本中和/或与之相关联。该风险得分可以被提供向一个或多个有关各方。
其他实施例涉及一种***。该***可以包含一个或多个硬件处理器,以及一个或多个其上承载有可执行指令的计算机可读介质。当可执行指令被一个或多个处理器执行时,该一个或多个硬件处理器可以执行用于标识可疑应用更新的动作、操作或步骤。该动作可以包含或包括标识经更新的源代码和先前源代码之间的至少一个差异。所述经更新的源代码与应用的经更新的版本相对应。所述先前源代码与所述应用的先前版本相对应。针对所述应用的所述经更新的版本确定风险得分。该风险得分可以基于机器学习(ML)风险模型。该ML风险模型可以分析经更新的源代码和先前源代码之间的一个或多个差异。该风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可能不被包含在应用的先前版本中和/或与之相关联。该风险得分可以被提供向一个或多个有关各方。
又一些实施例涉及非瞬态计算机可读存储介质。所述介质可以存储计算机可用指令,当被一个或多个计算设备使用时使所述一个或多个计算设备执行用于标识可疑应用更新的动作、操作和/或步骤。所述动作可以包括和/或包括标识经更新的源代码和先前源代码之间的至少一个差异。所述经更新的源代码与应用的经更新的版本相对应。所述先前源代码与所述应用的先前版本相对应。针对所述应用的所述经更新的版本确定风险得分。该风险得分可以基于机器学习(ML)风险模型。该ML风险模型可以分析经更新的源代码和先前源代码之间的一个或多个差异。该风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可能不被包含在应用的先前版本中和/或与之相关联。该风险得分可以被提供向一个或多个有关各方。
本发明内容旨在以简化的形式介绍一些概念,这些概念将在下文的具体实施方式中被进一步描述。本发明内容无意标识权利要求主题的关键特征或基本特征,也无意用作确定权利要求主题范围的辅助工具。
附图说明
本公开将参照附图对所述技术进行详细描述,其中:
图1示出了一个在其中可以利用本公开的一些实施例的示例操作环境的框图;
图2示出了一个在其中可以利用本公开的一些实施例的示例安全威胁检测***的框图;
图3示出了与各种实施例一致的示例应用安全服务的框图;
图4A示出了一个示例性应用安全工作流,当应用被第一次获取时,图3的应用安全服务会实现该工作流;
图4B示出了另一个示例性应用安全工作流,当应用的经更新的版本被获取时,该工作流由图3的应用安全服务实现;
图5提供了一个流程图,其示出了与各实施例一致的一种对软件应用的供应链相关安全威胁的检测的方法;以及
图6是适用于实现本公开所述技术的各方面的示例性计算环境的框图。
具体实施方式
技术问题、技术方案、技术改进的概述
如本公开所用,术语“集合”可用于指代对象(或元素)的有序(即顺序)或无序(即非顺序)集族,例如但不限于机器(例如,计算机设备)、物理和/或逻辑地址、图节点、图边等。集合可以包含N个元素,其中N是任何非负整数。也就是说,集合可以包含0,1,2,3,…N个对象和/或元素,其中N是没有上限的正整数。因此,如本公开所用,集合可以是零集(即,空集),其不包含任何元素(例如,对于零集,N=0)。集合可以仅包含单个元素。在其他实施例中,集合可以包含显著大于一个、两个、三个或数十亿个元素的元素数目。集合可以是无限集合或有限集合。一些集合中包含的对象可以是离散对象(例如,自然数集合)。其他集合中包含的对象可以是连续对象(例如,实数集合/>)。在一些实施例中,不是对象的零集的“对象的集合”可以被互换地指代为“一个或多个对象”或“至少一个对象",其中术语“对象”可以代表可包含在集合中的任何对象或元素。因此,短语“一个或多个对象”和“至少一个对象”可以互换地用于指代不是对象的非零或空集的对象集合。包含至少两个对象的对象的集合可以被指代为“多个对象”。
如本公开所用,术语“子集”是包含在另一个集合中的集合。子集可以是,但不一定是该子集所包含的另一个集合的真子集或严格子集。也就是说,如果集合B是集合A的子集,则在一些实施例中,集合B是集合A的真子集或严格子集。在其他实施例中,集合B是集合A的子集,但不是集合A的真子集或严格子集。例如,集合A和集合B可以是相等的集合,集合B可以被指代为集合A的子集。在这种实施例中,集合A也可以被指代为集合B的子集。如果两个集合之间的交集是零集,则两个集合可以是不相交的集合。
如本公开所使用的,术语“应用”或“app”可以互换使用,以指代可经由一个或多个(物理或虚拟)计算机器或设备执行的任何基于软件的程序、软件包或产品。应用可以是在执行时向终端用户提供一个或多个计算和/或数据服务的任何软件产品集合。在一些实施例中,应用可以指代可一起被执行以提供所述一个或多个计算和/或数据服务的应用集合。包含在应用集合中的应用可以被串行、并行或任何组合执行。多个应用(包括单个应用)的执行可以交错进行。例如,应用可以包含第一应用和第二应用。应用的执行可以包括第一和第二应用的串行执行或第一和第二应用的并行执行。在其他实施例中,第一和第二应用的执行可以是交错的。
如本公开所用,术语“源代码”和“代码”可以互换使用,以指代至少部分地使得应用能够执行的人类可读指令。源代码可以被一个或多个编程语言编码,例如Fortran、C、C++、Python、Ruby、Julia、R、Octave、Java、JavaScript等。在一些实施例中,在使得应用能够执行之前,源代码可以经受编译和/或链接过程。如本公开所用,术语“可执行文件”可以指代任何机器指令集合,这些指令实例化应用的副本,并使一台或多台计算机器(例如物理机或虚拟机)能够执行、运行或以其他方式实现实例化的应用。应用可以包含可执行文件集合。可执行文件可以是二进制可执行文件,例如,经由(编程语言中的)人类可读的源代码的编译以及经由编译生成的二进制对象的链接而生成的可执行机器指令集合。也就是说,可以经由编译针对应用的源代码来生成针对应用的可执行文件。尽管实施例不作如此限制,应用可以包含人类可读的源代码,例如,经由解释性编程语言生成的应用。例如,针对应用的可执行文件可以包含针对应用的源代码。可执行文件可以包含一个或多个二进制可执行文件、一个或多个基于源代码的可执行文件或其任何组合。可执行文件可以包含并依赖于一个或多个函数、对象或类似库。可执行文件可以被编码在单个文件中,或者编码可以被分布在多个文件中。也就是说,可执行文件的编码可以被分布在多个文件中。编码可以包含一个或多个数据文件,其中应用的执行可以依赖于对一个或多个数据文件的读取和/或写入。
诸如“反编译过程”、“反编译函数”、“反编译方法”或“反编译”之类的术语可以互换使用,以指代接收可执行文件作为输入的任何过程,其中可执行文件的至少一部分是人类不可读的(例如,二进制可执行文件),并且以一个或多个编程语言生成人类可读的源代码作为输出。也就是说,反编译可以是编译和/或编译过程生成的反函数或映射。
术语“静态分析”和“静态代码分析”可以互换使用,以指代在不执行源代码的情况下分析源代码的过程。静态代码分析可以在不执行代码(或相应的可执行文件)的情况下,生成对执行代码(经由执行应用的可执行文件)结果的预测。在各种实施例中,静态代码分析可以检测源代码应用的潜在的安全威胁。例如,静态代码分析可以检测和/或标识源代码的部分,如果执行,该部分将对至少部分地使应用能够执行的平台、***、网络和/或机器构成潜在的安全威胁。因为应用不是经由静态代码执行来执行的,所以对嵌入源代码中的潜在安全威胁的检测和/或识别不会使平台、***、网络和/或机器处于危险之中。静态代码分析可以是自动分析、手动分析或两者的组合。
本公开的实施例旨在检测和/或标识应用的经更新的(或当前)版本中的潜在的安全威胁。实施例利用一个或多个风险模型来自动分析应用的经更新的版本和先前版本之间的一个或多个差异(在源代码级别)。一个或多个风险模型中的至少一个风险模型可以是在源代码结构中具有“学习”模式的机器学习(ML)风险模型,该模型可以指示应用的新版本中的潜在的安全威胁。例如,与用户凭证核实相关的源代码部分的差异可能比与使用户能够定制用户交互界面(UI)的“外观和感觉”相关的源代码其他部分的差异更有可能指示潜在的安全威胁。基于对一个或多个源代码差异的分析,该一个或多个风险模型可以向经更新的版本分配风险得分。如果该风险得分未通过一个或多个风险得分阈值(例如,该风险得分高于风险得分阈值或临界值),则该经更新的版本可被分类为潜在的安全威胁。在这种情况下,一个或多个干预措施可以被调用。例如,该经更新的版本可以不被发布、释放、利用、上传、下载、安装、启动、实现和/或执行。在至少一个实施例中,这种干预措施可以包含提供该经更新的版本可以包含一个或多个潜在的安全威胁的警报和/或警告。该警报和/或警告可以在风险报告中被提供。在至少一些实施例中,无论该经更新的版本是否被归类为潜在的安全威胁,可以提供针对经更新的版本的应用安全报告,该安全报告可以提供一个或多个差异的文档、一个或多个差异的风险分析、风险得分、可能的干预措施以及其它此类信息。
更具体地说,当应用的经更新的版本被释放(或准备释放)时,应用的可执行文件被应用安全服务接收和/或访问。该可执行文件可以从应用的供应商、开发方、发布方、应用商店等处被接收。提供应用的可执行文件的这种实体在本公开中可以统称为应用的提供方(即应用的提供方)和/或应用的源(即应用的源)。可执行文件可以被指代为经更新的可执行文件,因为可执行文件与应用的经更新的版本相对应。如果经更新的可执行文件是二进制可执行文件,那么可执行文件可以被指代为经更新的二进制可执行文件。在可执行文件是经更新的二进制可执行文件的实施例中,可利用反编译过程来生成与应用的经更新的版本相对应的源代码。也就是说,反编译过程可以接收经更新的二进制可执行文件作为输入,并且生成针对应用的经更新的版本的经更新的源代码作为输出。在可执行文件包含机器可解释的源代码(例如,用Ruby编写的应用)的实施例中,可能不需要反编译过程,因为源代码容易获得。与应用的先前版本(例如,先前源代码)相对应的源代码可以被访问。先前源代码和经更新的源代码之间的一个或多个差异可以被确定。ML风险模型可以分析经更新的源代码之间的一个或多个差异,并且可以分析先前源代码以确定针对应用的经更新的版本的风险得分。该风险得分可以指示与应用的经更新的版本相关联的安全风险(或威胁)的级别。应用安全服务可以向一个或多个有关各方提供针对应用的经更新的版本的风险得分。该一个或多个有关各方可以包含应用的开发方、应用的发布方、应用的终端用户、应用的购买方、管理可执行应用的一个或多个机器的***管理员等。在一些实施例中,有关各方可以包含应用的供应链中包含的一个或多个实体。
如下文所述,ML风险模型可以被训练以检测一个或多个差异中的模式,这些差异指示与源代码中的差异相关联的潜在的安全威胁的可能性。例如,应用的源代码中与网络功能和/或操作相关的组件的差异可能比与数据记录操作相关的组件的差异更能指示安全威胁。在一些实施例中,ML风险模型可以经由一个或多个经监督的方法被训练,例如,利用指示已知安全威胁示例和源代码中更安全差异示例的经过标记的训练数据。在其他实施例中,可以经由未经监督的方法(例如,源代码组件的矢量表示的未经监督的聚类)来训练ML风险模型。在其他一些实施例中,ML风险模型可以是基于规则的ML(RBML)风险模型。在一些实施例中,当可用的经标记的训练数据量不足时,ML风险模型最初可以是RBML风险模型。随着源代码中的安全威胁示例的累积(例如,随着应用安全服务分析具有安全威胁的附加应用),可以生成经标记的训练数据集。随着经标记的训练数据的累积,经监督的ML风险模型可以被训练(并重新训练)。在训练期间,可以利用RBML风险模型和半训练经监督的ML风险模型的组合。一旦经监督的ML风险模型的性能开始优于RBML风险模型,RBML风险模型的组件可以从ML风险模型中撤出。在实施例中,ML风险模型可以包含经监督的ML风险模型、未经监督的ML风险模型和/或RBML风险模型的各种组合。ML风险模型可以是动态的,经监督的ML风险模型、未经监督的ML风险模型和/或RBML风险模型的组合可以随时间变化,因为ML风险模型的训练随时间变化。
因为实施例检测和分析应用版本之间(在整个源代码中)的差异,所以实施例能够检测整个应用供应链内的任何潜在的安全威胁。因此,可以说实施例是针对基于软件的应用的每一个迭代版本中供应链相关安全威胁的检测(和报告)。如上所述,检测应用供应链中的安全问题的传统方法往往集中在将应用的经更新的版本的执行置于测试台上,例如容纳的软件沙盒(例如,软件测试台)。这种测试环境可以被启用来检测微不足道的和/或朴素的安全威胁,但是在检测更复杂的安全威胁方面可能明显不那么有效。这种可能无法通过传统测试台检测到的安全威胁包含通过在测试台内不可能遇到的一个或多个条件被触发的任何安全威胁。由于测试台被给予有限的时间来暴露安全威胁,任何安全威胁的触发如果超过了有限的测试时间,就无法经由测试台被检测到。另外,恶意行为者可能会设计一些安全威胁触发来故意避开测试台。例如,可以设计安全威胁以检测测试台的约束(例如,有限的网络连接或其他此类约束)。只有当应用在测试台或沙盒等受约束环境之外执行时,此类安全威胁才可能被触发。
此外,这种传统方法主要依赖于应用的实际执行(在受约束的测试环境中)。对比之下,各种实施例不执行应用的经更新的版本。相反,实施例旨在分析针对应用的各种版本的源代码中的差异(而不执行源代码中编码的指令)。通常,传统方法不分析针对应用的经更新的源代码。除了对源代码中的差异的ML分析之外,各种实施例可以利用对经更新的源代码的静态代码分析。分析源代码,而不是试图在测试台内触发安全威胁,提供了对执行被测试应用的传统方法的各种改进。如前所述,传统测试台不太可能触发许多复杂的威胁。
针对检测供应链相关威胁的传统方法可能不利用现代ML技术,如经监督的学***台或人类个体可能不能够检测到这些模式。此外,由于明确利用ML,ML风险模型的性能达到了正反馈循环。也就是说,随着更多的安全威胁被ML风险模型检测到,模型可以经由经监督的学***台方法可能缺乏这种正反馈循环,从而导致风险模型性能的迭代改进。
在与针对检测经更新的应用中安全威胁的传统方法相比,这种传统方法还有进一步的改进,即其依赖于对经触发的安全威胁的实际检测。因此,传统测试台在本质上是二进制的要么安全威胁被触发并检测,要么没有。与此相反,各种实施例提供的风险得分可能具有概率解释。因此,由各种实施例提供的风险评估可以具有模拟组件(例如,与潜在安全威胁的概率或可能性相对应的风险得分),并且因此实施例可以提供更细致入微的风险评估。
此外,这些传统方法倾向于孤立地测试经更新的版本,而不考虑经更新的版本和应用的先前版本之间的差异。如通篇所述,各种实施例旨在在源代码级别检测和分析应用版本之间的差异。传统方法可能不比较应用的连续版本,并且只测试应用的经更新的版本,而不考虑应用的其他版本。通过迭代地建立知识库(通过ML)了解特定应用内的潜在安全威胁(随着应用的迭代更新),各种实施例的性能可能随着时间和应用生命周期的推移而提高。
在一些实施例中,除了接收经更新的可执行文件之外,还可以从应用的提供方处接收数字签名。该数字签名可以与经更新的可执行文件相对应。例如,应用的提供方可以提供与应用经更新的可执行文件相对应的数字签名。作为针对核实经更新的可执行文件来源的保障措施,应用安全服务可以认证与经更新的可执行文件相对应的数字签名。此类数字签名和数字签名核实可经由一个或多个非对称加密方法被启用,例如但不限于公钥/私钥加密。在接收应用之前(例如,第一次从应用的提供方处接收应用的早期版本时),应用提供方可以向应用安全服务提供相关联的公钥的副本。应用提供方可以利用相应的私钥和加密算法对数字签名进行签署。应用安全服务可以经由公钥和加密算法认证数字签名。如果无法认证数字签名,则应用安全服务可以将应用的经更新的版本分类为潜在的安全威胁和/或调用一个或多个与安全相关的干预措施。
除了数字签名之外,或者作为数字签名的替代,经更新的可执行文件的加密哈希值可以被接收,例如,应用的提供方可能已经l利用了质量足够高的哈希函数来生成针对经更新的可执行文件的哈希值。在至少一个实施例中,加密哈希值可以被包含在与经更新的可执行文件相对应的数字签名中。应用安全服务可以利用经更新的可执行文件和哈希函数来独立生成哈希值。如果经独立生成的哈希值与经提供的哈希值不匹配(例如,因为恶意行为者故意改变了经更新的可执行文件,使其与应用的提供方的预期不符),那么经更新的可执行文件可能被归类为潜在的安全威胁。再次,应用安全服务可以针对潜在的安全威胁调用一个或多个安全相关干预措施。
在一些实施例中,除了基于ML的差异分析之外,还可以对经更新的源代码进行静态代码分析(例如,在不执行源代码的情况下对其执行的自动分析)。静态分析可以标识经更新的源代码中的各种安全威胁。在一些实施例中,静态分析可以集中于经更新的源代码和先前源代码之间的一个或多个差异。在其他实施例中,静态代码分析可以逐行分析经更新的源代码,而不参考源代码的一个或多个先前版本。静态代码分析可以确定针对应用的经更新的版本的一个或多个静态风险得分。
针对经更新的应用的风险得分可以基于差异风险得分(例如,经由一个或多个ML风险模型确定的风险得分)和静态风险得分(经由一个或多个静态风险模型确定的)。也就是说,总体风险得分可以基于对经更新的源代码和先前源代码之间的一个或多个差异,以及静态风险得分的基于ML的风险分析。由ML风险模型确定的风险得分可以被指代为差异风险得分。请注意,即使在静态代码分析基于一个或多个源代码差异的那些实施例中,由静态代码分析生成的风险得分也可以被指代为静态风险得分。在一些实施例中,针对应用的经更新的版本的风险得分可以基于差异风险得分(由基于ML的风险分析生成)和静态风险得分(由静态风险分析生成)的组。在一些实施例中,差异风险得分和静态风险得分的组合可以是线性组合(例如,线性实施例)。在其他实施例中(例如,非线性实施例),该组合可以是两个风险得分的非线性组合,例如,多项式组合、指数组合或任何其他非线性组合。
针对经更新的应用中检测安全威胁的环境概述
技术方案的各个方面可通过示例并参考图1和下文的附图进行描述。图1示出了一个在其中可以利用本公开的一些实施例的示例操作环境100的框图。应当理解,此处描述的这种布置和其他布置仅作为示例。其他布置和元件(例如,机器、接口、功能、顺序和功能分组)可以作为所示的布置和元件的补充或替代使用,并且为了清楚起见可以完全省略一些元件。此外,这里描述的许多元件是功能实体,可以作为离散或分布式组件,或与其他组件一起,以任何合适的组合和位置来实现。本公开中描述的由实体执行的各种功能可由硬件、固件和/或软件执行。例如,一些功能可以由执行存储在存储器中的指令的处理器执行。
在未示出的其他组件中,示例操作环境100包含许多用户设备,例如用户设备102a和102b至102n;许多数据源,例如数据源104a和104b至104n;服务器106;传感器103a和107;以及通信网络110。应当理解,图1中示出的环境100是一个合适的操作环境的示例。图1中示出的每一个组件可以经由任何类型的计算设备来实现,例如,结合图6描述的计算设备600。这些组件可以经由网络110相互通信,网络110可以包含但不限于局域网(LAN)和/或广域网(WAN)。在示例性实现方式中,网络110包括因特网和/或蜂窝网络,以及各种可能的公共和/或专用网络。
应当理解,在本公开的范围内的操作环境100内可以利用任何数量的用户设备、服务器和数据源。每一个设备可以包括在分布式环境中协作的单个设备或多个设备。例如,可服务器106可以经由布置在分布式环境中的多个设备被提供,这些设备共同提供本公开描述的功能。此外,分布式环境中还可以包含未示出的其他组件。
用户设备102a和102b至102n可以是操作环境100的客户端上的客户端设备,而服务器106可以是操作环境100服务器端上的客户端设备。服务器106可以包括被设计成与用户设备102a和102b至102n上的客户端软件一起工作的服务器端软件,以便实现本公开中讨论的特征和功能的任何组合。操作环境100的这种划分被提供来说明合适环境的一个示例,并不要求每个实施方案都将服务器106和用户设备102a和102b至102n的任何组合保持为单独的实体。
用户设备102a和102b至102n可以包括能够由用户使用的任何类型的计算设备,例如,在一个实施例中,用户设备102a至102n可以是本公开关于图8描述的计算设备的类型。作为示例而非限制,用户设备可以体现为个人计算机(PC)、膝上型计算机、移动或移动设备、智能手机、平板电脑、智能手表、可穿戴计算机、个人数字助理(PDA)、音乐播放器或MP3播放器、全球定位***(GPS)或设备、视频播放器、手持通信设备、游戏设备或***、娱乐***、车辆计算机***、嵌入式***控制器、相机、遥控器、条形码扫描仪、计算机化测量设备、电器、消费电子设备、工作站、或这些设备的任何组合,或任何其他适当的计算机设备。
数据源104a和104b至104n可以包括数据源和/或数据***,其被配置为使数据可用于操作环境100的各种组成部分中的任何一个;结合图描述的***200描述的数据结构120、140和160。2.数据源104a和104b至104n可以与用户设备102a和102b102n以及服务器106分立,或者可以结合和/或集成到这些组件中的至少一个组件中。在一个实施例中,数据源104a至104n包括传感器103a、107,传感器103a、107可以集成到用户设备102a、102b或102n或服务器106中或与之相关联。由数据源104a至104n提供的感测用户数据的示例可以包括事件。
操作环境100可以被使用于实现图2中描述的应用安全服务220和/或图3的应用安全服务320的组件,包含用于自动检测和标识与软件应用程序的供应链相关安全威胁有关的事件或问题的组件。操作环境100可以被使用于实现图4A-4B的工作流400和440和/或图5的方法500的各个方面。
示例安全威胁检测***概述
图2示出了在其中可以利用本公开的一些实施例的示例安全威胁检测***200的框图。***200可以经由图1的环境100的一个或多个组件来实现。安全威胁检测***200可以包含应用提供方202、应用安全服务220和客户端计算设备214。一个或多个物理或虚拟计算机器,例如但不限于服务器计算设备212,可以实现应用安全服务220。应用提供方202、服务器计算设备212和客户端计算设备21可经由通信网络110交换地耦合。应用终端用户208可使用客户端计算设备214来使用应用,该应用可以被安装在客户端计算设备214上和/或由客户端计算设备214实现。***200还可以包含有助于应用的开发的应用供应链204。
如通篇所述,应用安全服务220针对应用的更新提供安全服务。经提供的安全服务可以包含确定应用的经更新的版本是否构成一个或多个重大的安全风险或威胁。应用安全服务200提供端到端全自动流水线和/或工作流,可量化应用的经更新的版本相对于应用的一个或多个先前版本所构成的安全风险或威胁级别。安全风险级别的量化经由一个或多个安全风险得分来量化。
更具体地,应用安全服务220分析经更新的应用来确定经更新的应用的一个或多个风险得分。风险得分可以是一个标量值或一个多值对象(例如,一个n元组或值数组)。确定应用的经更新的版本是否构成重大安全风险可以基于应用于风险得分的一个或多个风险阈值测试,其中安全威胁的“重大”程度经由风险得分和风险得分阈值量化。例如,如果风险得分的一个或多个值中的至少一个大于一个或多个风险得分阈值,则应用安全服务220可以将应用的经更新的版本分类为构成重大安全威胁。如果应用的经更新的版本通过了一个或多个风险得分阈值测试,那么应用安全服务220可以将应用的经更新的版本分类为不构成重大安全威胁。如果应用安全服务220将应用的经更新的版本分类为不构成重大安全威胁,那么可以说应用的经更新的版本已经被验证和/或核实。如果应用的经更新的版本已经被验证和/或核实,那么应用安全服务220可以发布应用的经更新的版本。在一些实施例中,发布应用的经更新的版本可以包含使应用的经更新的版本的一个或多个副本可供一个或多个利益相关方和/或计算机器或设备使用。应用安全服务220可以针对应用的经更新的版本生成一个或多个应用安全报告。
更具体地说,当应用被更新并准备释放和/或发布时,应用提供方202可以经由通信网络110向***200提供针对该应用的经更新的可执行文件206。如图2所示,经更新的可执行文件206是经更新的二进制可执行文件。然而,实施例不受如此约束,并且经更新的可执行文件206可以包含人类可读的源代码。应用安全服务220可以经由通信网络110和一个或多个计算设备(例如,实现应用安全服务220的服务器计算设备212)接收和/或访问经更新的可执行文件206的副本。在一些实施例中,应用提供方202可以直接向应用安全服务220提供经更新的可执行文件206。在其他实施例中,应用提供方202可以将经更新的可执行文件206提供向另一方和/或设备(例如,应用终端用户208、客户端计算设备214、正在管理应用程序终端用户208所用***的***管理员、将应用作为软件即服务(SAAS)提供给应用终端用户208的基于云的服务或类似服务等)。在这种实施例中,在下载和/或安装经更新的可执行文件206之前,另一方可以将经更新的可执行文件206提供向应用安全服务220。在至少一个实施例中,在向另一方传输期间,应用安全服务220可以经由一个或多个代理服务自动拦截经更新的可执行文件206。应用安全服务200接收经更新的可执行文件206,使得在应用安全服务220确定经更新的可执行文件206不构成重大安全威胁之前,另一方不接收经更新的可执行文件206的副本。如果应用安全服务220确定经更新的可执行文件206构成重大安全风险,则应用安全服务220可以调用一个或多个干预措施。
通过其全自动流水线,应用安全服务220分析经更新的可执行文件206,以确定经更新的可执行文件206的一个或多个风险得分。基于一个或多个风险得分和一个或多个风险得分阈值测试,应用安全服务可以将经更新的可执行文件206分类为不构成重大安全威胁或构成重大安全威胁。如果经更新的可执行文件206不构成重大安全威胁,则应用安全服务220,则应用安全服务220可以验证/核实并发布经更新的可执行文件206。注意,确定经更新的可执行文件206是否构成重大安全风险可以基于一个或多个风险得分阈值的具体值。这种风险得分阈值可以在不同的实施例中有所不同,例如,风险得分的值可以由应用安全服务220的操作方和/或用户选择。发布经更新的可执行文件206可以包含通过通信网络110转发、推送或以其他方式向一个或多个相关方和/或设备提供经更新的可执行文件206的副本。例如,图2示出了将经更新的可执行文件206的副本转发或推送到客户端计算设备214。
至少结合图3讨论了应用安全服务220及其自动化流水线和/或工作流的各种实施例。然而,在此简要说明,应用安全服务220可以包含应用安全验证器240,该应用安全验证器240通常负责验证和/或核实经更新的可执行文件206的安全性,此外,应用安全服务240可以包含应用发布方260,该应用发布方260通常负责发布和/或释放已验证的经更新的可执行文件206。
示例应用安全服务概述
图3示出了与各种实施例一致的示例应用安全服务320的框图。应用安全服务320可以类似于图2的应用安全服务220。因此,应用安全服务320可以包含应用安全验证器340和应用发布方360。应用安全验证器340可以类似于应用安全服务220的应用安全验证器240,并且应用发布方360可以类似于应用安全服务220的应用发布方260。
应用安全服务320能够检测和/或标识应用的经更新的(或当前)版本中的一个或多个潜在的安全威胁。应用安全服务320利用一个或多个风险模型来自动分析应用的经更新的版本和先前版本之间的一个或多个差异(在源代码级别)。一个或多个风险模型中的至少一个包含一个或多个静态风险模型。一个或多个静态风险模型能够标识或检测被编码在源代码中的潜在安全风险。可以基于对一个或多个静态风险模型的分析将一个或多个静态风险得分分配给应用的经更新的(或当前)版本。
一个或多个风险模型中的至少另一个包含一个或多个机器学习(ML)风险模型,这些模型在源代码的结构中“学习”模式(例如,经由ML方法训练ML模型),这些模式可以指示应用的经更新的版本中的一个或多个潜在的安全威胁。例如,与用户凭证核实相关的源代码部分的差异可能比与使用户能够定制用户交互界面(UI)的“外观和感觉”相关的源代码其他部分的差异更可能指示潜在的安全威胁。基于对一个或多个源代码差异的差异分析,一个或多个ML风险模型可以将一个或多个差异风险得分分配给经更新的版本。该一个或多个静态风险得分可以与所述一个或多个差异风险得分组合,以生成用于所述应用的经更新的版本的一个或多个风险得分。
如果一个或多个风险得分未能通过一个或多个风险得分阈值(例如,风险得分高于风险得分阈值或临界值),则应用安全验证器340未能验证、核实和/或认证应用的新版本。也就是说,应用安全验证器340可以将经更新的版本分类为包含一个或多个重大安全威胁。在这种情况下,应用发布方360可以调用一个或多个干预措施。例如,应用发布方360可以不向其他方发布、释放、部署和/或上传应用的经更新的版本。也就是说,当应用安全服务320未能验证、核实和/或认证应用的新版本时,应用安全服务320可以隔离应用的经更新的版本。在至少一个实施例中,这种干预措施可以包含提供警报和/或警告,所述经更新的版本可以包含一个或多个潜在的安全威胁。该警报和/或警告可以在风险报告中被提供。在至少一些实施例中,无论该经更新的版本是否被验证、核实和/或认证,应用发布方360都可以生成并提供针对所述可提供的经更新的版本的应用安全报告。该安全报告可以提供所述一个或多个差异的文档、对一个或多个差异的风险分析、风险得分、可能的干预措施以及其它此类信息。
应用安全服务320可以接收针对应用的经更新的(或当前)版本的经更新的(或当前)可执行文件(例如,经更新的二进制可执行文件306)。除了经更新的(或当前)可执行文件306之外,应用安全服务320还可以接收针对经更新的(或当前)可执行文件306的数字签名304。提供经更新的(或当前)可执行文件306的一方(例如,图2的应用提供方202)可能已经由数字签名304签署经更新的(或当前)可执行文件306。相应地,数字签名304可以被指代为应用提供方签名304。在一些实施例中,应用提供方还可以向应用安全服务320提供经更新的可执行文件306的哈希值。哈希函数可能已经由合适的哈希函数生成。应用安全服务320还可以访问哈希函数,并且能够通过哈希函数独立地计算经更新的(或当前)可执行文件306的哈希值。在至少一个实施例中,经更新的(或当前)可执行文件的哈希值被嵌入到应用提供方签名304中。在其他实施例中,哈希值是经由其他方式被提供的。应用安全验证器340一般负责验证和/或核实经更新的(或当前)可执行文件306的安全性。当应用安全服务320确定经更新的(或当前)可执行文件没有重大安全威胁时,应用发布方360一般负责发布和/或释放经过验证的经更新的(或当前)可执行文件306。如果应用安全服务320确定经更新的(或当前)可执行文件306可能包含一个或多个重大安全威胁,则应用发布方360可以执行一个或多个干预措施,例如但不限于隔离经更新的(或当前)可执行文件306。应用发布方360可以另外生成应用安全报告316和/或使应用安全报告316可用。在至少一个实施例中,这种干预措施可以包含提供警报和/或警告,即经更新的版本可能包含一个或多个潜在的安全威胁。该警报和/或警告可以在应用安全报告316中被提供。应用安全报告316可以详细说明对应用的经更新的(或当前)版本执行的风险分析,以及记录经由风险分析检测到的每一个潜在安全威胁或风险。
如图3所示,应用安全服务320可以另外包含加密密钥存储322和源代码库324。加密密钥存储322通常负责存储与每一个应用提供方相关联的加密密钥(例如,向应用安全提供方320提供可执行文件的每一方的公钥)。源代码库324作为存储由应用安全服务320验证的每一个应用的每一个版本的源代码的数据库。
应用安全验证器340可以包含签名验证器342、反编译器344和代码差异生成器346。应用安全服务320可另外包括静态代码分析器348、供应链分析器350和应用风险版本分析器352。签名验证器342一般负责验证、核实和/或认证应用提供方签名304。验证、核实和/或认证数字签名所需的加密密钥可从加密密钥存储322中检索。在一些实施例中,签名验证器342还负责验证、核实和/或认证提供给应用安全验证器340的经更新的可执行文件306的哈希值。当经更新的可执行文件306是二进制可执行文件时,反编译器344通常负责经由应用于二进制可执行文件的反编译过程,针对应用的经更新的版本生成经更新的源代码。代码差异生成器346通常负责访问和/或检索对应于应用的先前版本的先前源代码。在一些实施例中,代码差异生成器346从源代码库324检索和/或访问先前源代码。代码差异生成器346可以确定经更新的源代码和先前源代码之间的一个或多个差异。
静态代码分析器348通常负责对经更新的源代码执行静态代码分析。静态代码分析可以基于静态风险模型。在一些实施例中,静态代码分析为经更新的源代码生成静态风险得分。在一些实施例中,经由静态风险模型,与对应于应用的任何先前版本的先前源代码隔离地分析经更新的源代码。在其他实施例中,静态风险分析针对经更新的源代码和先前源代码之间的一个或多个差异。基于静态代码分析,静态代码分析器348可以确定针对应用的经更新的版本的静态风险得分。
供应链分析器350通常负责利用一个或多个ML风险模型来分析经更新的源代码和先前源代码之间的一个或多个差异。供应链分析器350可以基于一个或多个ML风险模型分析经更新的源代码和先前源代码之间的一个或多个差异来确定应用的经更新的版本的一个或多个差异风险得分。应用版本风险分析器352通常负责确定应用的经更新的版本的风险得分。在一些实施例中,风险得分基于一个或多个静态风险得分和一个或多个差异风险得分的组合。在其他实施例中,风险得分仅基于静态风险得分或差异风险得分中的一个。
当应用的经更新的版本被释放(或准备释放)时,应用安全服务320接收和/或访问经更新的应用的可执行文件(例如,经更新的可执行文件306)。可以从应用的供应商、开发方、发布方、应用商店等处(例如,图2的应用提供方202)接收经更新的可执行文件306。签名验证器342可以验证、核实和/或认证与应用提供方相关联的数字签名(例如,应用提供方签名304)和/或与经更新的可执行文件306相关联的哈希值。当经更新的可执行文件306是经更新的二进制可执行文件时,那么反编译器344可以利用反编译过程来生成与经更新的可执行文件306相对应的源代码。也就是说,反编译过程可以接收经更新的二进制可执行文件306作为输入,并针对应用的经更新的版本生成经更新的源代码作为输出。在可执行文件包含机器可解释的源代码(例如,用Ruby编写的应用)的实施例中,可能不需要反编译器344的功能。代码差异生成器346可以访问和/或重试与应用的先前版本相对应的源代码(例如,先前源代码)。可以从源代码库324检索先前源代码。代码差异生成器346可以确定、检测和/或标识先前源代码和可以确定的经更新的源代码之间的一个或多个差异。
供应链分析器350可以利用一个或多个ML风险模型来分析经更新的源代码和先前源代码之间的一个或多个差异。基于至少该差异分析,应用版本风险分析器352可以确定应用的经更新的版本的一个或多个风险得分。该一个或多个风险得分可以指示与应用的经更新的版本相关联的安全风险(或威胁)的级别。应用发布方360可以向一个或多个相关方提供应用的经更新的版本的风险得分。一个或多个相关方可以包含应用的开发方、应用的发布方、应用的终端用户、应用的购买方、管理可以执行应用程序的一台或多台机器的***管理员等。在一些实施例中,有关各方可以包含应用程序供应链中的一个或多个实体。
如通篇所述,一个或多个ML风险模型可以被训练以检测一个或多个差异中的模式,该模式指示针对与源代码中的差异相关联的潜在的安全威胁的可能性。例如,与网络功能和/或操作相关的应用源代码组件的差异可能比与数据记录操作相关的组件的差异更能指示安全威胁。在一些实施例中,可以经由一个或多个经监督的方法来训练一个或多个ML风险模型,例如,利用指示已知安全威胁示例和源代码中更安全差异示例的经标记的训练数据。在其他实施例中,可以经由未经监督的方法(例如,源代码组件的矢量表示的未经监督的聚类)。在又一些实施例中,一个或多个ML风险模型可以包含一个或多个基于规则的ML(RBML)风险模型。在一些实施例中,当可用的经标记的训练数据量不足时,一个或多个ML风险模型中的至少一个ML风险模型最初可以是RBML风险模型。随着源代码中的安全威胁的示例被累积(例如,随着具有安全威胁的附加应用被应用安全服务分析),经标记的ML风险模型训练集合可以被生成。随着经标记的训练数据被累积,经监督的ML风险模型可以被训练(并重新训练)。在训练期间,可以利用RBML风险模型和半训练经监督的ML风险模型的组合。一旦经监督的ML风险模型的性能开始优于RBML风险模型,则可以从ML风险模型中撤出RBML风险模型的组件。在一些实施例中,ML风险模型可以包含经监督的ML风险模型、未经监督的ML风险模型和/或RBML风险模型的各种组合。ML风险模型可以是动态的,并且随着ML风险模型的训练随时间变化,经监督的ML风险模型、未经监督的ML风险模型和/或RBML模型的组合可以随时间变化。
在一些实施例中,除了接收经更新的可执行文件306之外,应用安全服务320还可以从应用的提供方接收数字签名(例如,应用提供方签名304)。数字签名304可以与经更新的可执行文件306和/或应用提供方相对应。作为核实经更新的可执行文件306的来源的保障,签名验证器342可以认证数字签名应用提供方签名304。签名验证器342可以利用一个或多个非对称加密方法,例如但不限于公钥/私钥加密,以验证、核实和/或核实应用提供方签名304。在接收经更新的可执行文件306之前(例如,第一次从应用提供方处接收应用的早期版本时),应用提供方可以向应用安全服务320提供相关联的公钥的副本。应用安全服务可以将提供方的公钥存储在加密密钥存储322中。应用提供方可以使用相对应的私钥和加密算法签署数字签名。当接收到经更新的可执行文件306时,签名验证器342可以从加密密钥存储322中检索和/或访问提供方的公钥。签名验证器342然后可以利用提供方的公钥来验证、核实和/或认证应用提供方签名304。如果数字签名不能被认证,则应用安全服务可以将经更新的可执行文件306分类为包含一个或多个重大安全威胁和/或调用一个或多个安全相关干预措施。
除了数字签名304之外,或作为数字签名304的替代,应用提供方可以向应用安全服务320提供经更新的可执行文件306的加密哈希值。在一些实施例中,应用的提供方可能已经利用了足够质量的哈希函数以针对经更新的可执行文件306生成哈希值。在至少一个实施例中,加密哈希值可以被包含在与经更新的可执行文件306相对应的数字签名304中。签名验证器342可以利用经更新的可执行文件306和哈希函数(例如,与提供者计算哈希值所利用的哈希函数相同)来独立生成哈希值。如果独立生成的哈希值与提供的哈希值不匹配,然后经更新的可执行文件306可被分类为包含重大安全威胁。同样,应用安全服务320可针对重大安全威胁调用一个或多个安全相关干预措施。
在一些实施例中,除了基于ML的差异分析之外,还可以对经更新的源代码进行静态代码分析(例如,在不执行源代码的情况下对其执行的自动分析)。静态代码分析器348可以利用一个或多个静态代码风险模型来对经更新的源代码执行静态代码分析。经由静态风险模型,静态代码分析器348可以标识经更新的源代码中的各种安全威胁。在一些实施例中,静态代码分析可以集中于经更新的源代码和先前源代码之间的一个或多个差异。在其他实施例中,静态代码分析器38可以逐行分析经更新的源代码,而不参考源代码的一个或多个先前版本。静态代码分析器348可以确定针对经更新的可执行文件306的一个或多个静态风险得分。
在一些实施例中,针对经更新的可执行文件的风险得分可以基于差异风险得分(由基于ML的风险分析生成)和静态风险得分(由静态风险分析生成)的组合。应用版本风险分析器352可以基于差异和静态风险得分的组合来确定风险得分。差异和静态风险得分的组合可以是线性组合(例如,线性实施例)。在其他实施例(例如,非线性实施例)中,组合可以是两个风险得分的非线性组合,例如,多项式组合、指数组合或任何其他非线性组合。
结合图4A和图4B讨论由应用安全服务320实现的分析流水线或工作流的细节。图4A示出了示例性应用安全工作流400,该工作流400由图3中的应用安全服务320在应用被第一次获取时实现。图4B示出了另一个示例性应用安全工作流440,当要获取应用的经更新的版本时,由图3的应用安全服务320实现。当应用安全服务320第一次尝试验证特定应用的任何版本时,应用安全服务320可以实现图4A的工作流400。在第一次经由工作流400验证特定应用的版本之后,应用安全服务320可以实现工作流440,以尝试验证特定应用的后续版本。因此,在讨论图4B的工作流440之前,将先讨论图4A的工作流400。此外,应用安全服务320可以实现工作流400和440中的每一个,工作流400和440将至少结合图3进行讨论。
在开始框之后,工作流400开始于判定框402。如果工作流400的该实例化是响应于特定应用提供方(例如,图2的应用提供方202)第一次提供了针对验证的应用,那么工作流400流向框404。如果特定应用提供方已经提供了该新应用之外的其他应用,那么工作流400流向框406。在框404,可以在应用提供方和应用安全服务320之间交换加密密钥。在至少一个实施例中,应用提供方可以已经经由非对称加密方法签署了应用提供方签名304。在这种实施例中,应用提供方可以在框404向应用安全服务320提供其公钥的副本。应用服务提供方320可以将提供方的公钥的副本存储在加密密钥存储322中。应用提供方还可以向应用安全服务320提供哈希函数的指示,该哈希函数由该提供方用于生成针对应用的可执行文件的哈希值。然后工作流400可以进行到框406。
在框406,应用安全服务320可以接收针对应用的当前版本的当前可执行文件的副本。同样在框406,应用安全服务320可以接收应用提供方签名304和/或针对当前可执行文件的哈希值。哈希值可能已经经由框404中指示的哈希函数生成。注意,并非所有实施例都可以包含在框406接收应用提供方签名304和/或针对当前可执行文件的哈希值。针对在框406没有接收应用提供方签名304和针对当前可执行文件的哈希值中的每一个的实施例,工作流400可以直接进行到框416。否则,对于在框406接收应用提供方签名304和/或针对当前可执行文件的哈希值中的至少一个的实施例,工作流400可以进行到框408。在一些实施例中,应用安全服务320可以要求应用提供方签名304和/或当前可执行文件的哈希值中的至少一个。在这种实施例中,如果应用安全服务在框406没有接收到所需的应用提供方签名304和/或当前可执行文件的哈希值中的至少一个,则应用安全服务320可以将当前可执行文件分类为包含一个或多个重大安全威胁。在这种场景中,工作流400可以直接进行到框412。
针对确实接收到应用提供方签名304的实施例,在框408,签名验证器342可以通过利用提供方的公钥来验证、核实和/或认证应用提供方签名304。在一些实施例中,签名验证器342可以访问加密密钥存储322以检索或访问提供方的公钥。在经由框406接收针对当前可执行文件的哈希值的实施例中,签名验证器342可以验证、核实和/或认证针对当前可执行文件的哈希值。例如,签名验证器342可以利用框404中经指示的哈希函数来计算针对当前可执行文件的哈希值。如果经计算的哈希值与框406中提供的哈希值匹配,则验证、核实和/或认证哈希值。如果两个哈希值不匹配,则当前可执行文件的哈希值未被验证、核实和/或认证。如果应用提供方签名304和/或当前可执行文件的哈希值未通过框408的验证过程,则应用安全服务320可以将可执行文件的当前版本分类为包含重大安全威胁。
在判定框410,工作流400可以基于提供方签名304和/或当前可执行文件的哈希值中的至少一个的验证(或缺乏验证)来分叉。如果提供方签名304或当前可执行文件的哈希值中的至少一个未通过框408的验证过程,则工作流400可以进行到框412。也就是说,如果应用提供方签名304和/或当前可执行文件的哈希值中的任何一个未通过框408的验证过程,则应用安全服务320可以将可执行文件的当前版本分类为包含重大安全威胁。如果确定应用的当前版本包含一个或多个潜在的安全威胁,则工作流400可以进行到框412。否则,如果提供方的数字签名304和/或当前可执行文件的哈希值被成功验证,则工作流400可以进行到框416。
在框412,应用发布方360可以生成应用安全报告316,该报告316指示在应用安全服务的320安全威胁分析中已发现重大安全威胁(例如,提供方的签名304和/或当前可执行文件的哈希值未能被验证)。应用安全报告316可以被提供向一个或多个有关各方。在框414,当前可执行文件可以被隔离,或以其他方式不被应用发布方360发布。在隔离应用的当前版本的当前可执行文件(或执行另一个干预措施)之后,工作流400然后可以终止。
如果提供方的数字签名304和/或当前可执行文件的哈希值中的至少一个被验证,则工作流400进行到框416,而不是框412。在当前可执行文件包含针对应用当前版本的当前源代码的实施例中,工作流400可以直接从框410(或框406)进行到框418。对于当前可执行文件是二进制可执行文件的实施例,工作流400可以进行到框416。在框416,反编译器344可以执行当前可执行文件的反编译过程,以生成针对应用当前版本的当前源代码。在框418,静态代码分析器348可以对当前源代码执行静态代码分析。静态代码分析可以标识和/或检测被嵌入在源代码中的一个或多个潜在的安全威胁。静态代码分析器348可以基于经由静态代码分析检测到和/或标识的一个或多个潜在的安全威胁(或其缺乏)来确定针对应用的当前版本的一个或多个静态风险得分。在判定框420,确定静态代码分析是否已经检测到和/或标识出当前源代码中的任何重大安全威胁。可以基于应用于一个或多个静态风险得分的一个或多个静态代码阈值测试来确定任何已发现安全威胁的重要性。例如,可以对一个或多个静态风险得分中的每一个静态风险得分应用单独的静态风险阈值。如果在当前源代码中已经发现了重大安全威胁,则通过静态分析,工作流400可以进行到如上所述的框412。在框412,应用安全报告312可以详细说明通过静态代码分析已发现重大安全威胁。如果通过静态代码分析在当前源代码中没有发现重大安全威胁,则工作流400可以进行到框422。
在框422,当前源代码可以被存储以供以后利用。例如,可以将当前源代码存储在源代码库324中。在框424,应用发布方360可以生成应用安全报告316,其指示应用程序安全服务的320安全威胁分析中未发现重大安全威胁。在一些实施例中,应用安全报告316可以指示经由静态代码风险分析检测和/或标识的当前源代码中的任何非重大的潜在的安全威胁(例如,导致低于静态风险阈值的非零静态风险得分的潜在的安全威胁)。应用安全报告316可以被提供向一个或多个有关各方。在框426,应用发布方360可以发布当前可执行文件。发布当前可执行文件可以包含将当前可执行文件提供向一个或多个相关方。在发布应用当前版本的当前可执行文件之后,工作流400可以终止。
将注意力转向图4B,在框446,工作流440在开始框之后开始。在框406,应用安全服务320可以接收针对应用的经更新的版本的经更新的可执行文件306的副本。同样在框446,应用安全服务320可以接收应用提供方签名304和/或针对经更新的可执行文件的哈希值。请注意,并非所有实施例都可以包含在框446接收应用提供方签名304和/或针对经更新的可执行文件306的哈希值。针对在框446没有接收应用提供方签名304和经更新的可执行文件306的哈希值中的每一个的实施例,工作流440可以直接进行到框472。否则,在框446针对接收应用提供方签名304和/或经更新的可执行文件306的哈希值中的至少一个的实施例,工作流440可以进行到框448。在一些实施例中,应用安全服务320可以要求应用提供方签名304和/或经更新的可执行文件306的哈希值中的至少一个。在这种实施例中,如果应用安全服务在框446没有接收到所要求的应用提供方签名304和/或经更新的可执行文件306的哈希值中的至少一个,则应用安全服务320可以将经更新的可执行文件分类为包含一个或多个重大安全威胁。在这种场景中,工作流440可以直接进行到框472。
对于确实接收到应用提供方签名304的实施例,在框448,签名验证器342可以通过利用提供方的公钥来验证、核实和/或认证应用提供方签名304。在一些实施例中,签名验证器342可以访问加密密钥存储322以检索或访问提供方的公钥。在经由框446接收针对经更新的可执行文件306的哈希值的实施例中,类似于工作流400的框408,签名验证器342可以验证、核实和/或认证针对经更新的可执行文件306的哈希值。如果应用提供方签名304和/或经更新的可执行文件306的哈希值未通过框448的验证过程,然后应用安全服务320可以将可执行文件的经更新的版本分类为包含重大安全威胁。
在判定框450,工作流440可基于提供方签名304和/或经更新的可执行文件306哈希值中的至少一个的验证(或缺乏验证)而分叉。如果提供方签名304或经更新的可执行文件306哈希值中的至少一个未通过框448的验证过程,则工作流440可进行到框472。也就是说,如果应用提供方签名304和/或经更新的可执行文件306哈希值中的任一个未通过框448的验证过程,则应用安全服务320可将可执行文件的经更新的版本分类为包含重大安全威胁。如果确定应用的经更新的版本包含一个或多个潜在的安全威胁,则工作流440可进行到框472。否则,如果提供方的数字签名304和/或经更新的可执行文件的306哈希值被成功验证,则工作流440可以进行到框472。
在框472,应用发布方360可以生成应用安全报告316,该应用安全报告316指示在应用安全服务320的安全威胁分析中已发现的重大安全威胁(例如,提供方的签名304和/或经更新的可执行文件的306哈希值未能被验证)。应用安全报告316可以被提供向一个或多个有关各方。在框474,经更新的可执行文件可以被隔离,或以其他方式不被应用发布方360发布。在隔离应用的经更新的版本的经更新的可执行文件(或执行另一个干预措施)之后,工作流440然后可以终止。
如果验证了提供方的数字签名304和/或经更新的可执行文件306的哈希值中的至少一个,则工作流440进行到框452,而不是框472。在经更新的可执行文件306包含用于应用的经更新的版本的经更新的源代码的实施例中,工作流440可以直接从框450(或框446)进行到框454。针对经更新的可执行文件306是二进制可执行文件的实施例,工作流440可以进行到框452。在框452,反编译器344可以执行经更新的可执行文件306的反编译过程,以生成用于应用的经更新的版本的经更新的源代码。
在框454,访问和/或检索针对应用的先前版本的先前源代码。先前版本可以是应用的最近的先前版本。在其他实施例中,先前版本可以不是最近的先前版本。代码差异生成器346可以经由源代码库324检索和/或访问先前源代码。先前源代码可以是存储在工作流400的框422中的当前源代码。在框456,代码差异生成器346可以确定或生成经更新的源代码306和先前源代码之间的一个或多个差异。
在框458,静态代码分析器348可对经更新的源代码306执行静态代码分析。与在工作流400的框418一样,静态代码分析器348可执行静态代码分析。在一些实施例中,静态代码分析可基于经更新的源代码306和在框454处检索的先前源代码中的每一个先前源代码。例如,静态代码分析可针对在框456处确定的源代码中的一个或多个差异。在其他实施例中,静态代码分析仅基于经更新的源代码306。例如,静态代码分析器348可以分析经更新的源代码306的整体。静态代码分析可标识和/或检测被嵌入在源代码中的一个或多个潜在的安全威胁。静态代码分析器348可以基于经由静态代码分析检测到和/或标识的一个或多个潜在的安全威胁(或其缺乏)来确定针对应用的经更新的版本的一个或多个静态风险得分。在判定框460,确定静态代码分析是否已经检测到和/或标识出经更新的源代码中的任何重大安全威胁。可以基于应用于一个或多个静态风险得分的一个或多个静态代码阈值测试来确定任何已发现安全威胁的重要性。例如,可以对一个或多个静态风险得分中的每一个应用单独的静态风险阈值。如果在经更新的源代码中发现了重大安全威胁,则经由静态分析,工作流440可以进行到上述的框472。在框472,应用安全报告312可以详细说明通经由静态代码分析已发现的重大安全威胁。如果经由静态代码分析在经更新的源代码中没有发现重大安全威胁,则工作流440可以进行到框462。
在框462,供应链分析器350可以利用一个或多个ML风险模型来分析经更新的源代码和先前源代码之间的一个或多个差异。如通篇所述,一个或多个ML风险模型可以被训练以检测一个或多个差异中的模式,这些模式指示与源代码中的差异相关联的潜在的安全威胁的可能性。例如,与网络功能和/或操作相关的应用源代码组件中的差异可能比与数据记录操作相关的组件中的差异更能指示安全威胁。供应链分析器350可以基于分析经更新的源代码和先前源代码之间的一个或多个差异的一个或多个ML风险模型来确定针对应用的经更新的版本的一个或多个差异风险得分。
同样在框462,应用版本风险分析器352可以确定应用的经更新的版本的一个或多个风险得分。该一个或多个风险得分可以指示与应用的经更新的版本相关联的安全风险(或威胁)的级别。应用版本风险分析器352可基于差值风险得分和静态风险得分的组合来确定风险得分。差值风险得分和静态风险得分的组合可以是线性组合(例如,线性实施例)。在其他实施例(例如,非线性实施例)中,该组合可以是两个风险得分的非线性组合,例如,多项式组合、指数组合或任何其他非线性组合。在一些实施例中,应用版本风险分析器352可以基于一个或多个静态风险得分和一个或多个差异风险得分的一个或多个组合来确定多个风险得分。
在判定框464,确定基于ML的分析是否已经检测到和/或标识出在经更新的源代码和先前源代码之间的一个或多个差异中的任何重大安全威胁。可以基于应用于一个或多个差异风险得分的一个或多个风险阈值测试来确定任何已发现安全威胁的重要性。例如,可以将单独的差异风险阈值应用于一个或多个差异风险得分中的每一个差异风险得分。在一些实施例中,可以将一个或多个阈值测试应用于基于一个或多个差异风险得分和一个或多个静态风险得分的一个或多个组合来确定的一个或多个风险得分。如果在经更新的源代码和先前源代码之间的差异中发现了重大安全威胁,经由基于ML的分析,工作流440可以继续执行框472,如上所述。在框472,应用安全报告312可以详细说明经由基于ML的分析已发现重大安全威胁。如果经由基于ML的分析在经更新的源代码中没有发现重大安全威胁,则工作流440可以进行到框482。
在框482,当前源代码可以被存储以供以后利用。例如,当前源代码可以被存储在源代码库324中。在框484,应用发布方360可以生成应用安全报告316,其指示在应用程序安全服务的320安全威胁分析中没有发现重大安全威胁。在一些实施例中,应用安全报告316可以指示经由静态代码风险分析和/或基于ML的风险分析检测和/或标识的当前源代码中的任何非重大的潜在的安全威胁(例如,导致低于静态风险阈值的非零静态风险得分和/或低于差异风险阈值的非零差异风险得分的潜在的安全威胁)。可以将应用安全报告316提供向一个或多个有关各方。在框486,应用发布方360可以发布当前可执行文件。发布当前可执行文件可以包含将当前可执行文件提供向一个或多个有关各方。在发布应用的当前版本的当前可执行文件之后,工作流440可以终止。
针对应用供应链相关的安全威胁检测的示例方法
参考图5,提供了一个流程图,其示出了与各实施例一致的一种对软件应用的供应链相关安全威胁的检测的方法。该方法可以使用本公开所述的应用安全服务的任何实施例来执行。在实施例中,一个或多个计算机存储介质具有体现在其上的计算机可执行指令,当被一个或多个处理器执行时使该一个或多个处理器执行存储***中的方法。
转向图5,提供了一个流程图,其示出了与各实施例一致的一种对软件应用的供应链相关安全威胁的检测的方法500。通常,图5的流程图可以使用以上至少结合图1-3描述的架构来实现。例如,方法500的部分的任何合适组合可以由图2的应用安全服务220和/或图3的应用安全服务320实现。计算机设备,例如但不限于图2的服务器计算设备212和/或图6的计算设备600,可以实现方法500的至少一部分。
最初,方法500开始于接收加密密钥的框502。加密密钥可以是与应用的一个或多个版本(例如,应用的当前版本和/或应用的经更新的版本)相关联的实体的公钥和/或从该实体接收的公钥。该实体可以是应用提供方。同样在框502,哈希函数的指示可以被接收。哈希函数可以是消息摘要类型哈希函数,例如但不限于MD5哈希函数。哈希函数可以是安全哈希函数,例如但不限于SHA-0、SHA-1、SHA-2、SHA-3、SHA-4和/或SHA-5哈希函数。在框504,加密密钥可以被存储并且哈希函数的计算可以被启用。
在框506,与应用的经更新的版本相对应的经更新的可执行文件被接收。在各种实施例中,经更新的可执行文件可以是经更新的二进制可执行文件。可以从诸如应用提供方的实体接收经更新的可执行文件。同样在框506,与经更新的可执行文件相对应的数字签名可以被接收。数字签名可以从提供应用的实体处被接收。在至少一个实施例中,与经更新的可执行文件相对应的第一哈希值还可以被接收。第一哈希值可以是经更新的可执行文件的哈希值。哈希值可以通过利用经更新的可执行文件的内容作为框502中指示的哈希函数的输入被计算。
在框508,加密密钥被利用以验证、核实和/或认证数字签名。也就是说,加密密钥被利用以确认和/或核实数字签名是由提供应用的实体签署的。在框504,加密密钥可以从其存储中被检索。如果数字签名无法被验证,则可以向一个或多个用户提供通知,即应用的经更新的版本可能包含一个或多个潜在的安全威胁,因为无法通过其数字签名验证应用的经更新的版本的来源。
在框510,经更新的可执行文件和哈希函数被利用以验证、核实和/或认证可执行文件的内容。也就是说,第一哈希值被验证。可以通过利用经更新的可执行文件作为哈希函数的输入来计算第二哈希值。如果第二哈希值等同于第一哈希值,则经更新的可执行文件的内容可以被验证。如果第二哈希值与第一哈希值不匹配,则经更新的可执行文件的内容未被验证。如果经更新的可执行文件的内容未被验证,则可以向一个或多个用户提供通知,即应用的经更新的版本可能包含一个或多个潜在的安全威胁,因为无法经由预期的哈希值验证经更新的可执行文件的内容。
在框512,可以生成与应用的经更新的版本相对应的经更新的源代码。例如,在经更新的可执行文件是二进制可执行文件的实施例中,可以对经更新的二进制可执行文件应用反编译过程。在经更新的可执行文件包括针对应用的经更新的版本的经更新的源代码的实施例中,实现方法500可以包含不执行框512。在框514,访问和/或检索与应用的先前版本相对应的先前源代码。在框516,可以标识、检测和/或确定经更新的源代码与先前源代码之间的一个或多个差异。
在框518,针对应用的经更新的版本确定一个或多个静态风险得分。可以基于利用静态风险模型来分析经更新的源代码以确定一个或多个静态风险得分。在一些实施例中,静态风险模型可以分析经更新的源代码和先前源代码之间的一个或多个差异。因此,一个或多个静态风险得分可以基于先前源代码、经更新的源代码和/或经更新的源代码和先前源代码之间的一个或多个差异。一个或多个静态风险得分的值可以与一个或多个潜在安全威胁的可能性或概率相关和/或相对应,这些潜在安全威胁包含在应用的经更新的版本中和/或与经更新的版本相关。例如,经更新的源代码的静态风险分析可能已经检测到和/或标识出一个或多个潜在的安全威胁。一个或多个静态风险得分的值可能与经更新的源代码包含一个或多个安全威胁的分类概率相关和/或相对应。静态风险分析检测到和/或标识出的一个或多个潜在的安全威胁可能不会在应用的先前版本中发现和/或相关联。
在框520,可以为应用的经更新的版本确定一个或多个差异风险得分。一个或多个差异风险得分可以基于机器学习(ML)风险模型,该模型分析经更新的源代码和先前源代码之间的一个或多个差异。一个或多个差异风险得分的值可以与一个或多个潜在安全威胁的可能性或概率相关和/或相对应,这些潜在安全威胁包含在应用的经更新的版本中和/或与经更新的版本相关。例如,对经更新的源代码和先前源代码之间的一个或多个差异的基于ML(或源代码差异)的风险分析可以已经检测和/或标识出一个或多个潜在的安全威胁。一个或多个差异风险得分的值可以与经更新的源代码包含一个或多个安全威胁的分类概率相关联和/或与经更新的源代码包含一个或多个安全威胁的分类概率相对应。由基于ML的风险分析检测和/或标识的一个或多个潜在的安全威胁可能不会在应用的先前版本中发现和/或相关联。一个或多个差异风险得分的值可以基于与经更新的源代码和先前源代码之间的一个或多个差异相关联的经更新的源代码的一个或多个部分。例如,经更新的源代码的网络相关部分或用户凭证相关部分中源代码的差异可能会导致差异风险得分大于经更新的源代码中与用户界面(UI)相关部分中源代码的差异。
在一些实施例中,ML风险模型是基于经标记的训练数据训练的源代码分类模型。经标记的训练数据可以包含与一个或多个其他应用的多个高风险更新相对应的经标记的高风险源代码段。经标记的训练数据可以另外包含与一个或多个其他应用的多个低风险更新相对应的经标记的低风险源代码段。在其他实施例中,可以是基于规则的机器学习(RBML)风险模型。
在框522,确定应用的经更新的版本的一个或多个(总体)风险得分。应用的经更新的版本的一个或多个(总体)风险得分可以基于一个或多个静态风险得分、一个或多个差异风险得分和/或一个或多个差异风险得分和一个或多个静态风险得分的一个或多个组合中的至少一个。在判定框524,一个或多个阈值测试被应用于在框522确定的一个或多个(总体)风险得分。如果一个或多个阈值测试的阈值测试未通过,则方法500可以流向框524。否则,方法500可以流向框528。
在框526,可以针对应用的经更新的版本执行一个或多个干预措施。例如,可以不发布、释放、部署、上传、下载、安装、启动、实现和/或执行经更新的版本。在至少一个实施例中,干预措施可以包含隔离经更新的可执行文件。在至少一个实施例中,这种干预措施可以包含提供警报和/或警告经更新的版本可能包含一个或多个潜在的安全威胁。该警报和/或警告可以在风险报告中提供。方法500可以流向框532。
在框528,经更新的源代码可以被存储以供后续检索和/或访问。在框530,经更新的可执行文件可以被发布和/或提供向一个或多个有关各方。在框532,针对应用的经更新的版本的风险报告可以被生成。风险报告可以包含针对应用的经更新的版本的一个或多个静态风险得分、一个或多个差异风险得分和/或一个或多个(总体)风险得分。在框534,可以将针对应用的经更新的版本的风险报告提供向一个或多个有关各方。提供风险报告可以包含向一个或多个有关各方提供针对应用的经更新的版本的一个或多个静态风险得分、一个或多个差异风险得分和/或一个或多个(总体)风险得分。
其他实施例
本实施例可以针对一个或多个方法、***和/或非瞬态计算机可读存储介质。一个示例性但非限制性的方法实施例可以是针对标识可疑应用更新的方法。该方法可以包含标识经更新的源代码和先前源代码之间的一个或多个差异。经更新的源代码与应用的经更新的版本相对应。先前源代码与应用的先前版本相对应。针对应用的经更新的版本的风险得分可以被确定。该风险得分可以基于机器学习(ML)风险模型。ML风险模型被利用来分析经更新的源代码和先前源代码之间的一个或多个差异。风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可以不包含在应用的先前版本中和/或与之相关联。风险得分可以被提供向一个或多个相关方。在至少一个实施例中,基于风险得分大于风险得分阈值,可以提供应用的经更新的版本可能包含潜在的安全威胁的指示。有利的是,通过以这种方式使用ML风险模型检测和确定应用版本之间的差异,更有可能检测到应用供应链中的潜在的安全威胁,其中可能包含能够避免沙盒检测的安全威胁,从而实现计算机安全性的提高。此外,由于来自ML风险模型的正反馈循环,针对威胁检测的机器性能变得更加高效。
在一些实施例中,该方法可以包含接收经更新的二进制可执行文件。该二进制可执行文件可以与应用的经更新的版本相对应。与应用的经更新的版本的经更新的源代码可以经由对经更新的二进制可执行文件进行反编译过程来生成。与应用的先前版本相对应的先前源代码可以被访问和/或检索。经更新的源代码可以被存储以供后续访问。
在至少一个实施例中,该方法可以包含从与应用的经更新的版本相关联的实体接收加密密钥。可以接收与应用的经更新的版本相对应的经更新的可执行文件。可以从与应用的经更新的版本相关联的实体接收与经更新的可执行文件相对应的数字签名。可以另外接收与经更新的可执行文件相对应的数字签名。可以使用加密密钥来核实数字签名是由与应用相关联的实体签署的。
在一些实施例中,该方法还包含确定针对应用的经更新的版本的静态风险得分。确定静态风险得分可以基于用于分析经更新的源代码的静态风险模型。确定应用的经更新的版本的风险得分可以进一步基于静态风险得分。
在其他实施例中,该方法还可以包括确定针对应用的经更新的版本的静态风险得分,在这些实施例中,可以基于经更新的源代码和先前源代码之间的一个或多个差异来确定静态风险得分,静态风险得分可以被提供向一个或多个相关方。
在至少一个实施例中,该方法还包括基于经更新的源代码确定针对应用的经更新的版本的静态风险得分。可以确定针对应用的经更新的版本的差异风险得分。确定差异风险得分可以基于利用ML风险模型来分析经更新的源代码和先前源代码之间的一个或多个差异。针对应用的经更新的版本的风险得分可以进一步基于静态风险得分和差异风险得分的组合。
在各种实施例中,ML风险模型可以是源代码分类模型。ML风险模型可以经由经监督的学习被训练。ML风险模型的训练可以基于经标记的训练数据。经标记的训练数据可以包含经标记的高风险源代码。该高风险源代码可以与一个或多个其他应用的多个高风险更新相对应。经标记的训练数据还可以包含经标记的低风险源代码。该低风险源代码可以与一个或多个其他应用的多个低风险更新相对应。在其他实施例中,ML风险模型可以是基于规则的ML(RBML)模型。在至少一个其他实施例中,风险得分可以进一步基于与经更新的源代码和先前源代码之间的一个或多个差异相关联的经更新的源代码内的一个或多个部分。
在至少一个实施例中,该方法还包含接收哈希函数的指示。可以接收经更新的可执行文件。经更新的可执行文件可以与应用的经更新的版本相对应。还可以接收第一哈希值。第一哈希值可以与经更新的可执行文件的内容相对应。可以通过使用经更新的可执行文件的内容作为哈希函数的输入来计算第二哈希值。该方法还可以包含核实经计算的第二哈希值是否等同于接收到的第一哈希值。
其他实施例涉及一种***。该***可以包含一个或多个硬件处理器,以及一个或多个其上承载有可执行指令的计算机可读介质。当可执行指令被一个或多个处理器执行时,该一个或多个硬件处理器可以执行用于标识可疑应用更新的动作、操作或步骤。该动作可以包含或包括包含标识经更新的源代码和先前源代码之间的一个或多个差异。经更新的源代码与应用的经更新的版本相对应。先前源代码与应用的先前版本相对应。针对应用的经更新的版本的风险得分可以被确定。该风险得分可以基于机器学习(ML)风险模型。ML风险模型被利用来分析经更新的源代码和先前源代码之间的一个或多个差异。风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可以不包含在应用的先前版本中和/或与之相关联。风险得分可以被提供向一个或多个相关方。有利的是,通过以这种方式使用ML风险模型检测和确定应用版本之间的差异,更有可能检测到应用供应链中的潜在的安全威胁,其中可能包含能够避免沙盒检测的安全威胁,从而实现计算机安全性的提高。此外,由于来自ML风险模型的正反馈循环,针对威胁检测的机器性能变得更加高效。
又一些实施例涉及非瞬态计算机可读存储介质。该介质可以存储计算机可用指令,当被一个或多个计算设备使用时使该一个或多个计算设备执行用于标识可疑应用更新的动作、操作和/或步骤。该动作可以包括和/或包括标识经更新的源代码和先前源代码之间的至少一个差异。经更新的源代码与应用的经更新的版本相对应。先前源代码与应用的先前版本相对应。针对应用的经更新的版本的风险得分可以被确定。该风险得分可以基于机器学习(ML)风险模型。ML风险模型被利用来分析经更新的源代码和先前源代码之间的一个或多个差异。风险得分的值可以与应用的经更新的版本中包含和/或与之相关联的一个或多个潜在的安全威胁相对应。一个或多个潜在的安全威胁可以不包含在应用的先前版本中和/或与之相关联。风险得分可以被提供向一个或多个相关方。有利的是,通过以这种方式使用ML风险模型检测和确定应用版本之间的差异,更有可能检测到应用供应链中的潜在的安全威胁,其中可能包含能够避免沙盒检测的安全威胁,从而实现计算机安全性的提高。此外,由于来自ML风险模型的正反馈循环,针对威胁检测的机器性能变得更加高效。
通用计算设备
参考图6,计算设备600包含总线610,总线610直接或间接地耦合以下设备:存储器612、一个或多个处理器614、一个或多个展示组件616、一个或多个输入/输出(I/O)端口618、一个或多个I/O组件620和说明性电源供应622。总线610表示一个或多个总线(如地址总线、数据总线或其组合)。虽然为了清晰起见,图6中的各个框用线条表示,但实际上,这些框表示的是逻辑组件,而不一定是实际组件。例如,可以将显示设备等展示组件视为I/O组件。此外,处理器具有存储器。本发明的发明人认识到这是本领域的本质,并重申图6的示意图仅仅是示例性的计算设备,该设备可用于本公开的一个或多个实施例。诸如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等类别之间没有做出区分,因为所有类别都包含在图6的范围内并且参考“计算设备”。
计算设备600通常包含各种计算机可读介质。计算机可读介质可以是计算设备600可以访问的任何可用介质,包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包含易失性和非易失性、可移动和不可移动介质,以任何方法或技术实现,用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息。计算机存储介质包含但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备,或可用于存储所需信息并可由计算设备600访问的任何其他介质。计算机存储介质本身不包括信号。通信介质通常将计算机可读指令、数据结构、程序模块或其他数据体现在诸如载波或其他传输机制的调制数据信号中,并包含任何信息传输介质。术语“调制数据信号”是指一种信号,其一个或多个特征被设置或改变,以便在信号中编码信息。作为示例而非限制,通信介质包含有线介质,如有线网络或直接有线连接,以及无线介质,如声波、RF、红外线和其他无线介质。上述任一介质的组合也应包含在计算机可读介质的范围内。
存储器612包含易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的、不可移动的或两者的组合。示例性硬件设备包含固态存储器、硬盘驱动器、光盘驱动器等。计算设备600包含一个或多个处理器614,可从存储器612或I/O组件620等各种实体读取数据。展示组件616向用户或其他设备展示数据指示。展示组件的其他示例可包含显示设备、扬声器、打印组件、振动组件等。
I/O端口618允许计算设备600逻辑地耦合到其他设备,包含I/O组件620,其中一些组件可能是内置的。说明性组件包含麦克风、操纵杆、游戏板、卫星天线、扫描仪、打印机、无线设备等。I/O组件620可以提供自然用户界面(NUI),该界面处理用户生成的空中手势、语音或其他生理输入。在某些情况下,输入可被传输到适当的网络元件进行进一步处理。NUI可以实现语音识别、触摸和触控笔识别、面部识别、生物特征识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪以及与计算设备600上的显示器相关联的触摸识别的任何组合。计算设备600可以配备深度相机,例如立体摄像***、红外摄像***、RGB摄像***以及这些***的组合,用于手势检测和识别。另外,计算设备600可以配备加速计或陀螺仪,以实现运动检测。加速度计或陀螺仪的输出可以提供给计算设备600的显示器,以呈现沉浸式增强现实或虚拟现实。
计算设备600的一些实施例可以包含一个或多个无线电624(或类似的无线通信组件)。无线电624传输和接收无线电或无线通信。计算设备600可以是适于通过各种无线网络接收通信和媒体的无线终端。计算设备600可以经由码分多址(CDMA)、全球移动通信***(GSM)或时分多址(TDMA)等无线协议与其他设备进行通信。无线电通信可以是短程连接、远程连接或短程和远程无线通信连接的组合。当提到“短”和“长”类型的连接时,并不是指两个设备之间的空间关系。相反,通常将短距离和长距离称为不同类别或类型的连接(即主连接和辅连接)。短程连接可以包含(举例说明,但不限于)与提供无线通信网络访问的设备(如移动热点)的连接,如使用802.11协议的WLAN连接;与另一台计算设备的蓝牙连接是短程连接的第二个示例,或近场通信连接。远程连接可包含使用CDMA、GPRS、GSM、TDMA和802.16协议中的一个或多个协议的连接(举例说明,但不限于此。
在不偏离以下权利要求范围的情况下,可以对所描述的各种组件以及未显示的组件进行许多不同的布置。描述本公开的实施例的目的是为了说明而不是限制。本公开内容的读者在阅读本公开内容之后或由于阅读本公开内容,其他实施方式将变得显而易见。在不偏离以下权利要求范围的情况下,也可以完成上述内容的替代实施方式。某些特征和子组合具有实用性,可以在不参考其他特征和子组合的情况下使用,并在权利要求书的范围内考虑。
参考本公开所述的技术方案环境,本公开所述的实施例支持本公开所述的技术方案。技术方案环境的组件可以是包含硬件架构和软件框架的集成组件,该软件框架支持技术方案***内的约束计算和/或约束查询功能。该硬件架构指物理组件及其相互关系,该软件框架指提供可以用体现在设备上的硬件实现的功能的软件。
基于端到端软件的***可以在***组件内操作,以操作计算机硬件以提供***功能。在底层,硬件处理器执行从给定处理器的机器语言(也称为机器代码或本机)指令集中选择的指令。处理器识别本机指令并执行与例如逻辑、控制和存储器操作相关的相对应的底层功能。以机器代码编写的底层软件可以向更高级别的软件提供更复杂的功能。如本公开所用,计算机可执行指令包含任何软件,包括以机器代码编写的底层软件、诸如应用软件的更高级别软件以及它们的任何组合。在这方面,***组件可以管理资源并为***功能提供服务。在本公开的实施例中,还考虑了任何其他变化及其组合。
举例来说,技术解决方案***可以包含应用编程接口(API)库,该库包含的例程、数据结构、对象类和变量的规范可以支持设备的硬件架构与技术解决方案***的软件框架之间的交互。这些API包含技术解决方案***的配置规范,从而使其中的不同组件可以在技术解决方案***中相互通信,如本公开所述。
在标识了本文所使用的各种组件之后,应该理解的是,在本公开的范围内,可以利用任何数量的组件和布置来实现所需的功能。例如,为了概念上的清晰起见,在图中描绘的实施例中的组件用线条示出。还可以实现这些和其他组件的其他布置。例如,虽然一些组件被描绘为单个组件,但本公开描述的许多元件可以被实现为离散或分布式组件或与其他组件结合,并以任何合适的组合和位置。一些元件可以被完全省略。此外,在此描述的由一个或多个实体执行的各种功能可以由硬件、固件和/或软件来执行,如下所述。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。因此,可以使用其他布置和元件(例如,机器、接口、功能、顺序和功能分组)来补充或替代所示的布置和元件。
在以下段落中描述的实施例可以与一个或多个具体描述的替代方案相结合。特别地,所要求保护的实施例可以在替代方案中包含对一个以上其他实施例的参考。权利要求的实施例可以具体说明权利要求主题的进一步限制。
本公开的实施例的主题在本公开中以特定的方式描述以满足法定要求。然而,描述本身并不旨在限制本专利的范围。相反,发明人已经考虑到,权利要求的主题也可能以其他方式体现,以包含与本公开所述类似的不同步骤或步骤组合,与其他现在或未来的技术相结合。此外,尽管术语“步骤”和/或“框”可以在本公开中用于表示所采用的方法的不同元件,但这些术语不应被解释为暗示本公开公开的各种步骤之间或之间的任何特定顺序,除非明确描述了各个步骤的顺序。
就本公开而言,单词“包含”与单词“包括”具有相同的广泛含义,单词“访问”包括“接收”、“参考”或“检索”。此外,单词“通信”与使用本公开所述通信介质的基于软件或硬件的总线、接收器或发射器促进的单词“接收”或“传输”具有相同的广泛含义。此外,除非另有说明,否则诸如“a”和“an”之类的单词包含复数和单数。因此,例如,当存在一个或多个特征时,满足“特征”的约束。此外,术语“或”包括连词、分离词和两方(a或b因此包含a或b,以及a和b)。
为了上面详细讨论的目的,参考分布式计算环境描述了本公开的实施例;然而本公开描绘的分布式计算环境仅仅是示例性的。组件可以被配置于执行实施例的新颖方面,其中术语"被配置于"可以指"被编程于"执行特定任务或使用代码实现特定抽象数据类型。此外,虽然本公开的实施例通常指本公开所述的技术解决方案环境和示意图,但可以理解的是,所述技术可扩展到其他实现方式上下文。
本公开的实施例已经相对于特定实施例进行了描述,这些实施例在所有方面都旨在说明而非限制。对于本领域的普通技术人员来说,在不偏离本公开的范围的情况下,其他实施例也是显而易见的。
从上述内容中可以看出,本公开的内容非常适合于实现上述所有目的和目标,同时还具有其他显而易见的优点以及本结构所固有的优点。
可以理解的是,某些特征和子组合是有用的,可以在不参考其他特征或子组合的情况下使用。这也是权利要求书所考虑的,并且在权利要求书的范围之内。
Claims (15)
1.一种用于标识可疑应用更新的计算机可实现的方法,所述方法包括:
标识经更新的源代码和先前源代码之间的至少一个差异,所述经更新的源代码与应用的经更新的版本相对应,并且所述先前源代码与所述应用的先前版本相对应;
基于机器学习(ML)风险模型,确定针对所述应用的所述经更新的版本的风险得分,所述机器学习风险模型被利用来分析所述经更新的源代码和所述先前源代码之间的所述至少一个差异,所述风险得分具有与至少一个潜在的安全威胁相对应的值,所述至少一个潜在的安全威胁与所述应用的所述经更新的版本相关联、而不与所述应用的所述先前版本相关联;以及
基于所述风险得分大于风险得分阈值,提供所述应用的所述经更新的版本包括潜在的安全威胁的指示。
2.根据权利要求1所述的方法,还包括:
接收与所述应用的所述经更新的版本相对应的经更新的二进制可执行文件;
通过对所述经更新的二进制可执行文件应用反编译过程,生成与所述应用的所述经更新的版本相对应的所述经更新的源代码;
访问与所述应用的先前版本相对应的所述先前源代码;以及
存储所述经更新的源代码以用于后续访问。
3.根据权利要求1或2所述的方法,还包括:
从与所述应用的所述经更新的版本相关联的实体接收加密密钥;
从与所述应用的所述经更新的版本相关联的所述实体接收经更新的可执行文件,所述经更新的可执行文件与所述应用的所述经更新的版本相对应;
接收与所述经更新的可执行文件相对应的数字签名;以及
利用所述加密密钥以核实所述数字签名是由与所述应用相关联的所述实体签署的。
4.根据权利要求1至3中任一项所述的方法,还包括:
基于被利用来分析所述经更新的源代码的静态风险模型,确定针对所述应用的所述经更新的版本的静态风险得分;以及
进一步基于所述静态风险得分,确定针对所述应用的所述经更新的版本的所述风险得分。
5.根据权利要求1至4中任一项所述的方法,还包括:
基于所述经更新的源代码和所述先前源代码之间的所述至少一个差异,确定针对所述应用的所述经更新的版本的静态风险得分;以及
提供所述静态风险得分。
6.根据权利要求1至5中任一项所述的方法,还包括:
基于所述经更新的源代码,确定针对所述应用的所述经更新的版本的静态风险得分;
基于所述ML风险模型,确定针对所述应用的所述经更新的版本的差异风险得分,所述ML风险模型被利用来分析所述经更新的源代码和所述先前源代码之间的所述至少一个差异;以及
进一步基于所述静态风险得分和所述差异风险得分的组合,确定针对所述应用的所述经更新的版本的所述风险得分。
7.根据权利要求1至6中任一项所述的方法,其中所述ML风险模型是基于经标记的训练数据训练得到的源代码分类模型,所述经标记的训练数据包括与针对至少一个其他应用的多个高风险更新相对应的经标记的高风险源代码和与针对所述至少一个其他应用的多个低风险更新相对应的经标记的低风险源代码。
8.根据权利要求1至7中任一项所述的方法,其中所述ML风险模型是基于规则的ML(RBML)模型。
9.根据权利要求1至8中任一项所述的方法,其中所述风险得分进一步基于所述经更新的源代码内的至少一个部分,所述至少一个部分与所述经更新的源代码和所述先前源代码之间的所述至少一个差异相关联。
10.根据权利要求1至9中任一项所述的方法,还包括:
接收哈希函数的指示;
接收与所述应用的所述经更新的版本相对应的经更新的可执行文件;
接收与所述经更新的可执行文件的内容相对应的第一哈希值;
通过将所述经更新的可执行文件的所述内容作为所述哈希函数的输入,计算第二哈希值;以及
核实经计算的所述第二哈希值等同于接收到的所述第一哈希值。
11.一种***,包括:
至少一个硬件处理器;以及
至少一个计算机可读介质,其上承载有可执行指令,所述可执行指令被所述至少一个硬件处理器执行时使所述至少一个硬件处理器执行操作,所述操作包括:
标识经更新的源代码和先前源代码之间的至少一个差异,所述经更新的源代码与应用的经更新的版本相对应,并且所述先前源代码与所述应用的先前版本相对应;
基于机器学习(ML)风险模型,确定针对所述应用的所述经更新的版本的风险得分,所述机器学习风险模型被利用来分析所述经更新的源代码和所述先前源代码之间的所述至少一个差异,所述风险得分具有与至少一个潜在的安全威胁相对应的值,所述至少一个潜在的安全威胁与所述应用的所述经更新的版本相关联、而不与所述应用的所述先前版本相关联;以及
提供针对所述应用的所述经更新的版本的所述风险得分。
12.根据权利要求11所述的***,其中所述操作还包括:
标识经更新的源代码和先前源代码之间的至少一个差异,所述经更新的源代码与应用的经更新的版本相对应,并且所述先前源代码与所述应用的先前版本相对应;
基于机器学习(ML)风险模型,确定针对所述应用的所述经更新的版本的风险得分,所述机器学习风险模型被利用来分析所述经更新的源代码和所述先前源代码之间的所述至少一个差异,所述风险得分具有与至少一个潜在的安全威胁相对应的值,所述至少一个潜在的安全威胁与所述应用的所述经更新的版本相关联、而不与所述应用的所述先前版本相关联;以及
提供针对所述应用的所述经更新的版本的所述风险得分。
13.根据权利要求11或12所述的***,其中所述操作还包括:
从与所述应用的所述经更新的版本相关联的实体接收加密密钥;
从与所述应用的所述经更新的版本相关联的所述实体接收经更新的可执行文件,所述经更新的可执行文件与所述应用的所述经更新的版本相对应;
接收与所述经更新的可执行文件相对应的数字签名;以及
利用所述加密密钥以核实所述数字签名是由与所述应用相关联的所述实体签署的。
14.根据权利要求11至13中任一项所述的***,其中所述操作还包括:
基于被利用来分析所述经更新的源代码的静态风险模型,确定针对所述应用的所述经更新的版本的静态风险得分;以及
进一步基于所述静态风险得分,确定针对所述应用的所述经更新的版本的所述风险得分。
15.根据权利要求11至14中任一项所述的***,其中所述操作还包括:
基于所述经更新的源代码和所述先前源代码之间的所述至少一个差异,确定针对所述应用的所述经更新的版本的静态风险得分;以及提供所述静态风险得分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/354,794 | 2021-06-22 | ||
US17/354,794 US11934533B2 (en) | 2021-06-22 | 2021-06-22 | Detection of supply chain-related security threats to software applications |
PCT/US2022/029669 WO2022271339A1 (en) | 2021-06-22 | 2022-05-17 | Detection of supply chain-related security threats to software applications |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117546164A true CN117546164A (zh) | 2024-02-09 |
Family
ID=82156369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280044502.7A Pending CN117546164A (zh) | 2021-06-22 | 2022-05-17 | 对软件应用的供应链相关安全威胁的检测 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11934533B2 (zh) |
EP (1) | EP4359978A1 (zh) |
CN (1) | CN117546164A (zh) |
WO (1) | WO2022271339A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11785018B2 (en) * | 2021-07-29 | 2023-10-10 | Bank Of America Corporation | Mobile device management system for securely managing device communication |
US20230297688A1 (en) * | 2022-03-15 | 2023-09-21 | Blackberry Limited | Determining security risks in binary software code using a software relationship model |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6249866B1 (en) | 1997-09-16 | 2001-06-19 | Microsoft Corporation | Encrypting file system and method |
US8087006B2 (en) | 2007-05-31 | 2011-12-27 | Microsoft Corporation | Static performance analysis of software |
US20100031353A1 (en) | 2008-02-04 | 2010-02-04 | Microsoft Corporation | Malware Detection Using Code Analysis and Behavior Monitoring |
US9274930B2 (en) | 2008-12-22 | 2016-03-01 | Microsoft Technology Licensing, Llc | Debugging system using static analysis |
US8989383B2 (en) * | 2009-01-05 | 2015-03-24 | Imation Corp. | Data authentication using plural electronic keys |
US9158919B2 (en) | 2011-06-13 | 2015-10-13 | Microsoft Technology Licensing, Llc | Threat level assessment of applications |
US9201642B2 (en) * | 2013-03-15 | 2015-12-01 | International Business Machines Corporation | Extending platform trust during program updates |
US9917859B2 (en) * | 2015-10-20 | 2018-03-13 | Sophos Limited | Mitigation of anti-sandbox malware techniques |
JP6675227B2 (ja) * | 2016-02-26 | 2020-04-01 | キヤノン株式会社 | 情報処理装置、情報処理システム、情報処理方法、及びプログラム |
US10289847B2 (en) | 2016-07-29 | 2019-05-14 | Qualcomm Incorporated | Updating virtual memory addresses of target application functionalities for an updated version of application binary code |
US11714905B2 (en) * | 2019-05-10 | 2023-08-01 | Sophos Limited | Attribute relevance tagging in malware recognition |
US11977637B2 (en) * | 2019-07-18 | 2024-05-07 | Texas Instruments Incorporated | Technique for authentication and prerequisite checks for software updates |
US11455400B2 (en) * | 2019-08-22 | 2022-09-27 | Sonatype, Inc. | Method, system, and storage medium for security of software components |
US11783049B2 (en) | 2020-08-31 | 2023-10-10 | Microsoft Technology Licensing, Llc | Automated code analysis tool |
-
2021
- 2021-06-22 US US17/354,794 patent/US11934533B2/en active Active
-
2022
- 2022-05-17 EP EP22732723.6A patent/EP4359978A1/en active Pending
- 2022-05-17 CN CN202280044502.7A patent/CN117546164A/zh active Pending
- 2022-05-17 WO PCT/US2022/029669 patent/WO2022271339A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20220405397A1 (en) | 2022-12-22 |
US11934533B2 (en) | 2024-03-19 |
WO2022271339A1 (en) | 2022-12-29 |
EP4359978A1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11734433B2 (en) | Open source vulnerability remediation tool | |
JP6014286B2 (ja) | 機器にセキュリティを提供する方法および装置 | |
US11151024B2 (en) | Dynamic automation of DevOps pipeline vulnerability detecting and testing | |
US9465942B1 (en) | Dictionary generation for identifying coded credentials | |
US11888855B2 (en) | Website verification platform | |
US11790237B2 (en) | Methods and apparatus to defend against adversarial machine learning | |
CN117546164A (zh) | 对软件应用的供应链相关安全威胁的检测 | |
CN104683409A (zh) | 终端间应用共享的方法和终端 | |
JP2014112892A5 (zh) | ||
BR102015017215A2 (pt) | método implementado em computador para classificação de aplicativos móveis, e, programa de computador codificado em um meio de armazenamento não-trasitório | |
KR102073068B1 (ko) | 어플리케이션 클러스터링 방법 및 그 장치 | |
Kim et al. | Risk assessment of mobile applications based on machine learned malware dataset | |
CN116868193A (zh) | 固件组件标识和漏洞评估 | |
CN110858247A (zh) | 安卓恶意应用检测方法、***、设备及存储介质 | |
US11044096B2 (en) | Blockchain based digital identity generation and verification | |
KR20200096766A (ko) | 오픈소스 소프트웨어의 라이선스를 검증하는 방법 및 시스템 | |
KR101410255B1 (ko) | 애플리케이션 파일의 잠재적인 위험성 판별 시스템, 장치, 방법 및 컴퓨터 판독 가능한 기록 매체 | |
US11522898B1 (en) | Autonomous configuration modeling and management | |
US11500985B1 (en) | Static and dynamic correlation of software development pipeline events | |
US20230259620A1 (en) | Automated detection of malicious packages in a software repository | |
Allix | Challenges and Outlook in Machine Learning-based Malware Detection for Android | |
KR102622866B1 (ko) | 매크로봇 탐지 서비스 제공 방법 및 시스템 | |
US11693651B1 (en) | Static and dynamic correlation of software development pipeline events | |
Riom | A Software Vulnerabilities Odysseus: Analysis, Detection, and Mitigation | |
FAHIM | A Critique of Android Malware Classification Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |