CN116438533A - 用于软件调用栈的安全策略 - Google Patents

用于软件调用栈的安全策略 Download PDF

Info

Publication number
CN116438533A
CN116438533A CN202180076353.8A CN202180076353A CN116438533A CN 116438533 A CN116438533 A CN 116438533A CN 202180076353 A CN202180076353 A CN 202180076353A CN 116438533 A CN116438533 A CN 116438533A
Authority
CN
China
Prior art keywords
call stack
application
classification
authorized
software
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
Application number
CN202180076353.8A
Other languages
English (en)
Inventor
阿修讬许·库拉什斯特哈
安迪·斯隆
希拉尔·沙希坎特·帕特尔
乌代·克里希纳斯瓦米·切蒂亚尔
奥利弗·肯佩
巴拉斯韦杰·桑卡拉·维斯瓦纳坦
纳温德拉·亚达夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Publication of CN116438533A publication Critical patent/CN116438533A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供了用于在软件调用栈层面实现安全策略的系统、方法和计算机可读介质。在一个示例中,一种方法包括:生成调用栈分类方案;在部署应用期间检测调用栈;在应用的运行时期间使用调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及基于分类应用安全策略。

Description

用于软件调用栈的安全策略
相关申请的交叉引用
本申请要求于2020年9月16日提交的第17/023,035号美国非临时专利申请的权益和优先权,其全部公开通过引用以其整体明确地并入本文。
技术领域
本公开的主题总体上涉及应用安全领域,并且更具体地,涉及在应用的运行时(runtime)期间将安全措施应用于应用的内部软件调用栈以增强其安全性。
背景技术
应用的零信任安全策略要求对试图访问应用的个人和设备进行严格的身份验证。目前,应用的零信任安全策略在应用层面上应用白名单概念。这种零信任安全策略通过允许包括在白名单中的预先确定的网络路径访问应用来保护应用。零信任策略可以通过防止潜在恶意源访问应用来显著地减少潜在的攻击来源或安全威胁的数量。
附图说明
为了描述可以获得本公开的上述和其他优点和特征的方式,将通过参考在附图中示出的具体实施例来呈现对上文简要描述的原理的更具体的描述。应当理解,这些附图仅描绘了本公开的实施例,因此不应被认为是对其范围的限制,通过使用附图更具体和详细地描述和解释了本文的原理,在附图中:
图1A至图1B示出了根据本公开的一个方面的网络环境的方面;
图2示出了根据本公开的一个方面的软件调用栈安全系统的示例;
图3示出了根据本公开的一个方面的用于在软件调用栈层面应用零信任安全策略的示例方法;
图4示出了根据本公开的一个方面的示例神经架构;
图5A至图5C示出了根据本公开的一个方面的软件调用栈的示例图;以及
图6A至图6B示出了根据本公开的一个方面的系统的示例。
具体实施方式
下面详细讨论本公开的各种实施例。尽管讨论了具体的实施方式,但是,应当理解,仅出于示例性目的而这样做。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下可以使用其他组件和配置。因此,以下描述和附图是说明性的而不应被理解为是限制性的。为了提供对本公开的全面理解,描述了许多具体细节。然而,在某些情况下,为了避免混淆描述,没有描述众所周知的或常规的细节。本公开中对一个实施例或一实施例的引用,可以是对同一实施例或任一实施例的引用;并且,这样的引用是指至少一个实施例。
引用“一个实施例”或“实施例”是指与该实施例相关的所描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。在说明书中的各处出现的短语“在一个实施例中”不一定都指同一实施例,单独的或替代的实施例也不与其他实施例相互排斥。此外,所描述的各种特征可能由一些实施例展现,而不由其他实施例展现。
本说明书中使用的术语通常在本领域、本公开的上下文以及在使用每个术语的具体上下文中具有其通常的含义。替代语言和同义词可以用于本文讨论的任何一个或多个术语,并且不应对术语是否在本文中详细阐述或讨论赋予特殊意义。在一些情况下,提供了某些术语的同义词。对一个或多个同义词的叙述不排除对其他同义词的使用。本说明书中任何地方的示例的使用,包括本文讨论的任何术语的示例,仅是说明性的,并不旨在进一步限制本公开或任何示例术语的范围和含义。同样,本公开不限于本说明书中给出的各种实施例。
在无意限制本公开的范围的情况下,下面给出了根据本公开实施例的手段、装置、方法及其相关结果的示例。注意,为了方便读者,示例中可以使用标题或副标题,这绝不应限制本公开的范围。除非另有定义,否则本文使用的技术和科学术语具有本公开所属领域的普通技术人员通常理解的含义。在发生冲突的情况下,以本文件(包括定义)为准。
本公开的附加特征和优点将在随后的描述中阐述,并且部分地将从描述中显而易见,或者可以通过实践本文公开的原理而获知。本公开的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获得。本公开的这些和其他特征将通过以下描述和所附权利要求而变得更加明显,或者可以通过实践本文阐述的原理而获知。
概览
在独立权利要求中阐述了本发明的各方面,并且在从属权利要求中阐述了优选特征。一个方面的特征可以单独地或与其他方面结合地应用于每个方面。
本主题技术的各方面涉及在应用中基于软件调用栈分类的软件调用栈层面应用安全策略。使用手动过程和/或自动过程(例如,使用机器学习(ML)技术)来确定与应用相关联的调用栈的授权列表。在应用部署的各个阶段期间,这些列表用于确定调用栈是否可以被应用访问。
在一个方面,一种方法包括:针对应用生成调用栈分类方案;在部署应用期间检测调用栈;在应用的运行时期间使用调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及基于分类应用安全策略。
在另一方面,调用栈分类方案包括:可以由应用访问的经授权的调用栈的白名单。
在另一方面,调用栈分类方案包括:使用机器学习技术训练的分类器,用于将检测到的调用栈标识为经授权的调用栈或未经授权的调用栈中的一者。
在另一方面,训练分类器包括:使用先前已知的经授权的调用栈列表和先前已知的未经授权的调用栈列表来训练分类器。
在另一方面,分类器被训练成在应用的运行时期间为检测到的调用栈输出分数。
在另一方面,对检测到的调用栈进行分类还包括:将分数与阈值进行比较;以及如果分数大于阈值,则将调用栈分类为经授权的调用栈。
在另一方面,分类器被训练成将在运行时期间检测到的调用栈的分类输出为经授权的调用栈或未经授权的调用栈中的一者。
在一个方面,一种系统,包括:一个或多个存储器,具有存储在其中的计算机可读指令;以及一个或多个处理器,被配置为执行计算机可读指令以执行下述操作:生成调用栈分类方案;在部署应用期间检测调用栈;在应用的运行时期间使用调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及基于分类应用安全策略。
在一个方面,一种或多种非暂态计算机可读存储介质,包括计算机可读指令,计算机可读指令在由安全系统的一个或多个处理器执行时使安全系统执行下述操作:生成调用栈分类方案;在部署应用期间检测调用栈;在应用的运行时期间使用调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及基于分类应用安全策略。
描述
下面详细讨论本公开的各种实施例。尽管讨论了具体的实施方式,但是,应当理解,仅出于示例性目的而这样做。相关领域的技术人员将认识到,在不脱离本公开的精神和范围的情况下可以使用其他组件和配置。
如上所述,当前的零信任应用安全策略可以在应用层面上基于白名单概念实施。这样的策略可以通过防止潜在恶意来源访问应用的尝试来减少潜在攻击来源或安全威胁的数量。此外,这样的应用可以包括许多(例如,数百,数千等)软件调用栈,软件调用栈可以在应用的测试、预生产和生产的各个阶段的运行时期间访问应用。这些软件调用栈在任何应用的运作中都被利用。例如,软件调用栈可以存储关于应用的活动子程序的信息,并且跟踪每个活动子程序在其完成执行时返回控制的点。因此,调用栈引入了另一种未经授权访问应用的可能性,会破坏整个应用的安全性。目前,缺乏在软件调用栈层面实施的零信任安全策略方案。
本公开的技术提高了软件调用栈层面的应用安全性。这里提供的改进示例是针对在软件调用栈层面上通过识别授权调用栈的列表(白名单)来实施安全策略。基于白名单在单个软件调用栈上实施安全策略可以显著减少软件调用栈层面的对应用(例如,企业应用)的潜在攻击来源或安全威胁的数量,从而改善整体网络安全。
应用的软件调用栈白名单可以手动和/或使用机器学习模型确定。如下文所述,在一个示例中,可以使用机器学习技术来训练调用栈分类服务,以实现打分系统,该打分系统用于确定是否将在应用的执行/部署期间检测到的软件调用栈分类为授权调用栈以用于应用安全策略。在分类器的训练过程中,可以向分类器提供反馈,以改善分类过程。例如,可以手动审查边界软件调用栈的列表,并将其标记为授权或未授权,以进一步训练机器学习模型。下面将更全面地描述训练和利用分类器在软件调用栈层面实施安全策略的过程。
本公开从示例系统的描述开始,在这些示例系统中可以部署与软件调用栈层面的零信任应用安全相关的本公开。
图1A示出了根据本公开的一个方面的示例网络环境100的图示。网络环境100(系统100)可以包括网络106,网络106可以表示任何类型的通信、数据、控制或传输网络。例如,网络106可以包括无线、空中网络(例如,互联网)、局域网(LAN)、广域网(WAN)、软件定义的WAN(SDWAN)、数据中心网络、物理底层、覆盖层或其他的任何组合。网络106可用于连接各种网络元件,例如路由器、交换机、结构节点、边缘设备、聚合交换机、网关、入口和/或出口交换机、提供商边缘设备和/或任何其他类型的路由或交换设备、计算设备或计算资源(例如服务器、防火墙、处理器、数据库、虚拟机等)。
计算资源108a和108b表示可以连接到网络106的网络设备的示例,这些网络设备用于彼此之间的和/或与其它设备的通信。例如,计算资源108a和108b可以包括各种主机设备、服务器、处理器、虚拟机或能够托管应用、执行进程、执行网络管理功能等的其他设备。在一些示例中,应用110a和110b可以在计算资源108a上执行,而应用110c和110d可以在计算资源108b上执行。应用110a可以包括使用指令或代码来定义的任何类型的软件应用、进程或工作流程。
数据摄取块102代表性地示出了用于向应用110a、110b、110c和110d中的任何一个或多个提供输入数据的机制。网络106可用于将输入数据引导至相对应的应用110a、110b、110c和110d以供执行。一个或多个应用110a、110b、110c和110d可以(例如,在其执行期间)生成并解释从数据摄取块102获得的程序语句。诸如漏洞(vulnerability)检测之类的手段(instrumentation)可以由漏洞检测引擎104提供,用于在应用执行期间对这些应用进行评估。在运行时期间,作为其常规工作流程的一部分,所安装的应用获得输入并创建输出。到达所安装的输入(源)点的每个输入由一个或多个漏洞传感器检查,这些漏洞传感器检查输入的语法,该语法是攻击模式(例如SQL注入、跨站脚本(XSS)、文件路径操纵和/或JavaScript对象声明(JSON)注入)的特性。例如,运行时应用自我保护(RASP)代理112a和112d可以被提供在相应的应用110a和110d中,用于评估运行时期间应用的执行。如下文将描述的,这样的代理也可用于在运行时期间为应用提供调用栈层面的漏洞/安全问题。例如,RASP代理112a和/或112b可以检查在应用运行时期间可能被调用的调用栈,以确定这些调用栈是否被授权(允许)由该应用调用。
RASP代理112a、112b、112c和112d可以在应用执行时对其进行任何类型的安全评估。在一些示例中,如参考图1B所示,应用130a和130b可以被存储在代码库120或其他存储器存储(memory storage)上,而不是在计算资源上被主动地执行。类似的代理(例如RASP代理)可以执行对应用的分析(例如,静态分析)。例如,代码扫描器代理122可用于分析应用130a和130b中的代码。RASP代理112a、112b、112c、112d和/或代码扫描器代理122或其他这样的嵌入式解决方案可用于分析应用在各个阶段内(例如在运行时期间或在存储器的静态条件下)的健康和状态。
在一些示例中,传感器可用于监视和收集与在各种服务器或虚拟机上执行的应用相关的动态信息,并将该信息报告给收集器以供分析。该信息可用于(例如向RASP代理)提供应用安全。RASP技术例如可用于通过向应用中添加保护特征来保护软件应用免受安全漏洞侵害。在典型的RASP实施方式中,例如通过对应用代码和/或操作平台进行适当的改变和添加,将这些保护特征安装到应用运行时环境中。该手段被设计为检测应用执行期间的可疑行为,并在检测到这种行为时启动保护动作。
例如,在网络环境100中的虚拟机或服务器上的应用的运行时期间,作为应用的常规工作流程的一部分,为监视被安装的应用而提供的传感器可以接收输入并创建输出。在一些示例中,可以针对一个或多个漏洞来检查到达传感器的所安装的输入(源)点的输入。例如,传感器可以收集与应用有关的信息,以提供给一个或多个收集器,其中分析引擎可用于分析应用中是否可能存在漏洞。
漏洞可以包括软件应用中的弱点、特征缺陷、错误、缺口(loophole)等,这些漏洞可以被恶意行为者利用,以获得对网络环境100的任何部分或整体的访问、破坏、导致中断、进行未经授权的交易、或导致其他有害行为。例如,由于在网络环境100上执行的软件或应用中存在漏洞,所以可以通过破坏安全系统(例如,使用计算机病毒、蠕虫、特洛伊木马、勒索软件、间谍软件、广告软件、恐吓软件和其他恶意程序)对各种企业和组织的计算机系统发起网络攻击。大多数企业或组织认识到需要不断地监视其计算机系统,以不仅识别来自已知的软件漏洞的风险软件,而且识别来自新报告的漏洞(例如,由于新的计算机病毒或恶意程序)的风险软件。识别易受攻击的软件允许采取保护措施,这些措施例如部署特定的防病毒软件,限制易受攻击的软件的操作以限制损坏,防止访问可疑/未经授权的调用栈等。
图2示出了根据本公开的一个方面的软件调用栈安全系统的示例。软件调用栈安全系统200可以包括调用栈跟踪服务202、调用栈分类服务210和调用栈安全服务220。调用栈安全系统200示出了各个功能块,将在下面解释这些功能块的功能,但是记住,这些功能块可以由(例如在网络环境100中提供的)计算设备、网络系统和存储机制的适当组合来实现。例如,调用栈跟踪服务202的功能可以由上面参考图1A和图1B描述的RASP代理112a、112b、112c、112d和/或代码扫描器代理122来实现。此外,调用栈分类服务210和调用栈安全服务220的功能可以由漏洞检测引擎104来实现。在另一示例中,调用栈跟踪服务202、调用栈分类服务210和调用栈安全服务220的所有功能可以由漏洞检测引擎104来实现。
调用栈跟踪服务202可用于执行一个或若干个应用的调用栈跟踪和枚举。例如,不同的阶段包括集成测试、预生产阶段和过去的生产阶段。在一个示例中,调用栈跟踪服务202可以周期性(例如每毫秒、每秒、每分钟、每小时等)地生成运行时调用栈列表。每个运行时调用栈列表包括应用在某个时间点的所有运行时调用栈。运行时调用栈包括由应用访问(或可以由应用访问)并在生成列表时占用存储器容量的所有可能的调用栈。基于诸如测试环境之类的第一组执行环境中的运行时调用栈列表,调用栈跟踪服务202可以生成所遇到的所有软件调用栈的跟踪列表。
在另一示例中,调用栈跟踪服务202可以跟踪在第二组执行环境中遇到的可能将潜在安全威胁引入应用的运行时软件调用栈。例如,应用的这种第二组执行环境可以包括对应用执行穿透测试的环境。这些软件调用栈也可以被存储在跟踪列表中。然而,因为这些软件调用栈可能与对应用的潜在安全威胁相关联,所以它们可以被存储为单独的经授权/不安全的列表(黑名单),而非第一组执行环境中的运行时调用栈的列表。
在又一示例中,这种跟踪列表可以包括运行时调用栈的所有周期性列表的组合以及软件调用堆栈被执行的执行顺序。可以针对第一组执行环境和第二组执行环境两者中的运行时调用栈来存储这种执行顺序。将参考图5A、5B和5C更详细地描述这种执行顺序的示例。
调用栈跟踪服务202可以向调用栈分类服务210传输/提供这种跟踪列表以供进一步处理。如下所述,调用栈分类服务210可以使用由调用栈跟踪服务202创建的跟踪列表来确定白名单和黑名单。
白名单可以包括跟踪列表中所包括的软件调用栈的子集或全部。在一些示例中,调用栈分类服务210可以基于手动反馈来生成白名单。在任何执行环境期间,调用栈可以被手动标识(例如,由网络操作员)为安全的/经授权的调用栈。可以创建经授权的调用栈列表。这种列表可以包括用于若干个应用的调用栈,并且可以不一定限于用于一个应用。在另一示例中,这种列表可以包括多个条目,这些条目将每个调用栈与一个或多个应用关联起来,并表明对于每个应用,给定的调用栈是否被授权。调用栈分类服务110可以使用这种列表,以从收到的针对特定应用的跟踪列表中生成白名单。在一个示例中,可以周期性(例如,每小时一次、每天一次、每周一次、每个月一次等)地更新这种手动创建的经授权的调用栈列表。
黑名单可以包括:在跟踪列表中的应用的第二组执行环境(例如,测试环境)中所遇到的软件调用栈的子集或全部、和/或在应用的先前运行时期间内识别出的未经授权的调用栈。在一些示例中,调用栈分类服务210可以基于手动反馈并以与上面描述的用于创建白名单的手动过程类似的方式来生成黑名单。
如上面关于调用栈跟踪服务202所描述的,白名单和黑名单还包括每个软件调用栈的执行顺序。每个特定的软件调用栈的每个执行顺序可以被标记为经授权的或未经授权的,并且与相对应的软件调用栈一起存储在白名单或黑名单中。
软件调用栈可以基于各种判据被确定为安全的以列入白名单或被确定为不安全的以列入黑名单。例如,一些调用栈可以被认为在特定的应用被部署/执行的设定或条件下是不安全的,而相同的这些调用栈可以被认为在应用被部署的其他设定中是安全的。例如,连接类型可以是影响给定调用栈是否被列入白名单的设定/条件。在一种情况下,应用A可以具有在部署应用A时将被调用的相对应的调用栈X。如果终端正在使用公共Wi-Fi连接来访问应用A,则对于应用A来说,可以认为调用栈X是不安全的/未经授权的,而如果终端正在使用安全的专用网络连接来访问应用A,则可以认为调用栈X是经授权的/安全的。因此,手动创建的链接也可以包括条目,该条目表明调用栈将被列入白名单的设定(或条件)。设定或条件的另一示例是应用的版本。例如,针对应用A的第一版本,调用栈X可以是经授权的,但是针对应用A的第二版本,调用栈X是未经授权的。即使在应用处于生产阶段和/或部署之后,调用栈分类服务210也可以周期性地更新白名单和黑名单。
本领域的技术人员将理解,调用栈跟踪服务202可以使用专用于应用程序代码类型的技术来跟踪并枚举软件调用栈。在基于JAVA的应用的示例中,执行线程“publicstatic Map<thread,StackTraceElement[]>getAllStackTraces()”可用于返回所有实时线程的栈踪迹图,该图包括与基于JAVA的应用的线程相对应的所有运行时栈。在基于PYTHON的应用的示例中,“追溯”模块及其相关功能可用于提取、格式化以及打印基于PYTHON的应用的所有栈踪迹。
调用栈分类服务210可以使用使用机器学习模型训练的分类器来将软件调用栈分类为经授权的或未经授权的。该机器学习模型可以使用正面和负面的示例调用栈(经授权和未经授权的示例调用栈)以及手动反馈来训练,以提供一个系统,该系统自动对任何检测到的调用栈进行评分,并使用该评分和相应的阈值来确定检测到的调用栈是否要被列入白名单或黑名单。下面将参考图4进一步描述这一过程。
软件调用栈的执行顺序也可以用作训练机器学习模型的附加训练数据。这将在下面进一步描述。
如下所述,调用栈分类服务210可以向调用栈安全服务220传输/提供软件调用栈分类结果和所分数数,以用于进一步处理和实现适当的安全策略。
调用栈安全服务220可以在应用的部署期间控制每个软件调用栈的执行。在一个示例中,调用栈安全服务220可以基于来自调用栈分类服务110的分类结果对每个软件调用栈应用安全策略。一个示例安全策略可以包括允许对软件调用栈的执行,该软件调用栈被调用栈分类服务210分类为经授权的。另一示例安全策略可以包括阻止对软件调用栈的执行,该软件调用栈被调用栈分类服务210分类为未经授权的。另一示例安全策略可以包括对所遇到的软件调用栈的标记或警告,该软件调用栈被调用栈分类服务210分类为未经授权的。
在一些示例中,当调用栈分类服务210是机器学习训练的分类器时,调用栈安全服务220可以基于来自调用栈分类服务210的评分结果对每个软件调用栈应用安全策略。这种分类器可以在应用运行时期间给任何所遇到的调用栈分配分数。一个示例安全策略可以包括允许具有高于预定阈值的分数的软件调用栈的执行,但是阻止或标记具有低于预定阈值的分数的软件调用栈。另一示例安全策略可以包括设定经授权的分数范围、未经授权的分数范围和未确定的分数范围。该安全策略包括允许具有在经授权的分数范围内的分数的软件调用栈的执行,阻止或标记具有在未经授权的分数范围内的分数的软件调用栈,以及提交具有在未确定的分数范围内的分数的软件调用栈以供手动审查(例如,在如上所述的阈值分数的范围内)。
虽然图2示出了应用于图1A和图1B的示例系统100的软件调用栈安全系统的各种组件的示例配置,但是本领域的技术人员将理解,软件调用栈安全系统200或本文描述的任何系统的组件可以以多种不同的方式来配置,并且可以包括任何其他类型和数量的组件。例如,可以使用单个组件或由处理器执行的指令的集合来实现调用栈跟踪服务202、调用栈分类服务210和/或调用栈安全服务220的功能。在另一示例中,调用栈分类服务210中的机器学习模型及其相关联的评分系统的一部分或全部可以被包括在调用栈跟踪服务202或调用栈安全服务220中。服务也可以被组合成更少的组件和/或进一步分成更多的组件。
通过上面参考图2描述的软件调用栈安全系统的示例,本公开现在转向用于在软件调用栈层面应用零信任安全策略的示例方法。诸如调用栈安全系统200之类的安全系统可以利用每个软件调用栈的分类和评分结果(例如来自调用栈分类服务210的分类和评分结果)来应用零信任安全策略。如上所述,调用栈安全系统200的功能可以由漏洞引擎104或系统100的其他组件来实现。
图3示出了根据本公开的一个方面的用于在软件调用栈层面应用零信任安全策略的示例方法。将从图1的系统100的组件、图2的调用栈跟踪服务202、调用栈分类服务210和调用栈安全服务220的任何适当组合的角度来描述图3的过程。然而,应当理解,调用栈跟踪服务202、调用栈分类服务210和调用栈安全服务220中的每一者可以具有一个或多个处理器,这些处理器执行存储在相关联的存储器上的计算机可读指令以实现图3的过程300。
在S302处,漏洞引擎104(通过实现调用栈分类服务210的功能)可以生成调用栈分类方案。在一个示例中,生成这种调用栈分类方案可以包括确定用于应用的软件调用栈的白名单和/或黑名单。在一个示例中,可以使用如上面参考图2所描述的手动过程来确定这种白名单和/或黑名单。可以在应用运行时之前或在应用部署之前确定S302,或者替代地可以在检测到应用正在被部署时确定S302。如果提前确定,则S302本身可以是单独的过程,而不一定是图3的整个步骤和功能的一部分。
在另一示例中,生成这种调用栈分类方案可以包括使用机器学习技术来训练分类器,如将在下面参考图4所描述的。这种分类器可以被训练以在应用运行时期间为任何给定/遇到的调用栈提供分数(然后可以将该分数与阈值进行比较,以确定调用栈是否是经授权的),或者替代地可以被训练以将所遇到的调用栈分类为经授权的或未经授权的。
在S304处,在部署应用期间,漏洞引擎104(通过实现调用栈分类服务210的功能)可以在应用的部署期间检测调用栈。在一个示例中,漏洞引擎104可以记录关于图2所描述的运行时调用栈的信息,该信息可以包括运行时调用栈的执行顺序。
在S306处,漏洞引擎104(通过实现调用栈分类服务210的功能)可以使用在S302处确定的调用栈分类方案来对在S304处检测到的调用栈进行分类。在一个示例中,神经网络(分类器)可用于对如上所述的调用栈进行分类,下面将参考图4详细描述其生成。这种分类器可以被训练以在应用运行时期间为任何给定/遇到的调用栈提供分数(然后可以将该分数与阈值进行比较,以确定调用栈是否是经授权的),或者替代地可以被训练以将所遇到的调用栈分类为经授权的或未经授权的。
在一个示例中,当利用经训练的分类器时,漏洞引擎104可以接收所遇到的调用栈(和/或相关联的执行顺序)作为输入,并提供所遇到的调用栈的分数作为输出。然后,漏洞引擎104可以将该分数与如上所述的阈值或范围阈值进行比较,以确定所遇到的调用栈是否是经授权的调用栈。在另一示例中,经训练的分类器可用于接收所遇到的调用栈作为输入,并提供所遇到的调用栈(作为经授权的调用栈或未经授权的调用栈)的分类作为输出。
在另一示例中,调用栈分类方案可以是手动创建的调用栈分类方案(如上所述的白名单和/或黑名单)。在手动创建白名单的情况下,漏洞引擎104可以接收所遇到的调用栈(和/或相关联的执行顺序)作为输入,并将所遇到的调用栈与白名单进行比较。如果白名单表明所遇到的白名单是经授权的调用栈,则漏洞引擎104将所遇到的调用栈分类为经授权的调用栈。否则,漏洞引擎104将所遇到的调用栈分类为未经授权的调用栈。因此,在S306处,漏洞引擎104为每个所遇到的调用栈提供分类结果。
在S308处,漏洞引擎104(通过实现调用栈安全服务220的功能)可以基于分类结果对每个软件调用栈应用安全策略。在一个示例中,安全策略可以表明仅允许包括在白名单中的经授权的软件调用栈对应用的访问,并且拒绝被分类为未经授权的调用栈的调用栈对应用的访问。
图4的示例过程使得能够在软件调用栈层面对企业网络的端点处执行的任何应用应用零信任安全策略,以便在这样的企业网络内提高应用和网络的安全性。
如上面参考图3所描述的,漏洞引擎104可以利用经训练的分类器来将所遇到的调用栈分类为经授权的或未经授权的。本公开现在转向用于训练分类器(神经网络)以对软件调用栈进行分类的示例方法。
图4示出了根据本公开的一个方面的示例神经架构。
图4示出了由神经控制器401中的示例神经网络描述402所定义的神经网络410(可称为分类器410)的示例神经架构400。神经网络描述402可以包括神经网络410的完整规范(full specification),神经网络410包括神经架构400。例如,神经网络描述402可以包括:神经网络410的架构(例如,层、层互连、每层中的节点数量等)的描述或规范;输入和输出描述(该描述表明如何形成或处理输入和输出);表明神经网络中的激活函数、神经网络中的操作或过滤等;神经网络参数(例如权重、偏差等);等。
神经网络410可以反映神经网络描述402中所定义的神经架构400。在该非限制性示例中,神经网络410包括输入层403,该输入层403包括输入数据,该输入数据可以是任何类型的数据,例如媒体内容(图像、视频等)、数字、文本等。在一个说明性示例中,输入层403可以包括表示软件调用栈的数据。在与调用栈安全系统200相关的示例语境中,表示软件调用栈的数据可以包括如关于图2所描述的由调用栈跟踪服务202生成的跟踪列表。在另一示例中,表示软件调用栈的数据可以包括由调用栈跟踪服务202在应用部署期间检测到的软件调用栈的信息。
神经网络410可以包括隐藏层404A至404N(以下统称为“404”)。隐藏层404可以包括n个隐藏层,其中n为大于或等于1的整数。隐藏层的数量可以包括所期望的处理结果和/或渲染意图所需的层数。在一个说明性示例中,隐藏层404中的任一层可以包括表示已被分类在白名单或黑名单中的软件调用栈的数据。这种数据可以包括白名单或黑名单中所包括的每个软件调用栈的数据,如关于图2所描述的。这种数据还可以包括每个软件调用栈被包括在白名单或黑名单中的哪一个中。
神经网络410还包括输出层406,该输出层提供由隐藏层404执行的处理所产生的输出。在一个说明性示例中,输出层406可以基于输入数据提供输出数据。在一种与调用栈安全系统200相关的示例语境下,输出数据可以包括将输入的软件调用堆栈分类为经授权的或未经授权的。在另一示例中,输出数据可以包括所输入的软件调用栈的分数,然后可以将该分数与示例阈值或示例阈值范围进行比较,以将相对应的软件调用栈分类为经授权的或未经授权的。
神经网络410在该示例中为由互连节点组成的多层神经网络。每个节点可以表示一条信息。与节点相关联的信息在不同的层之间共享,并且每层在信息被处理时保留信息。在一些情况下,神经网络410可以包括前馈神经网络,在这种情况下没有反馈连接,其中神经网络的输出被反馈到其自身。在其他情况下,神经网络410可以包括递归神经网络,该递归神经网络可以有环路,这些环路允许信息在输入时被读取,同时允许信息被跨节点传送。
可以通过各层之间的节点到节点的互连在节点之间交换信息。输入层403的节点可以激活第一隐藏层404A中的一组节点。例如,如图所示,输入层403的每个输入节点连接到第一隐藏层404A的每个节点。隐藏层404A的节点可以通过对信息应用激活函数来变换每个输入节点的信息。从变换中衍生出的信息于是可以被传递到下一隐藏层(例如,404B)的节点并且可以激活这些节点,这些节点可以执行它们自己的指定功能。示例功能包括卷积、上采样、数据变换、池化和/或任何其他合适的功能。然后,隐藏层(例如,404B)的输出可以激活下一隐藏层(例如,404N)的节点,以此类推。最后一个隐藏层的输出可以激活输出层406的一个或多个节点,此时提供输出。在一些情况下,虽然神经网络410中的节点(例如,节点408A、408B、408C)被示为具有多条输出线,但是节点具有单个输出,并且被示为从节点输出的所有线表示同一输出值。
在一些情况下,每个节点或节点之间的互连可以有权重,该权重是一组参数,这组参数是从训练神经网络410衍生出来的。例如,节点之间的互连可以表示一条关于互连节点的已知的信息。该互连可以具有数字权重,该数字权重可以被调整(例如,基于训练数据集),这允许神经网络410对输入具有适应性,并且能够随着更多数据被处理而学习。
神经网络410可以被预训练以使用不同的隐藏层404来处理来自输入层403中的数据的特征,以便通过输出层406来提供输出。在神经网络410用于对软件调用栈进行分类的示例中,可以使用训练数据来训练神经网络410,该训练数据包括示例性的经分类的软件调用栈。例如,训练的软件调用栈可以被输入到神经网络410中,可以被神经网络410处理以生成输出,可以被用于调整神经网络410的一个或多个方面,例如权重、偏置等。
在一些情况下,神经网络410可以使用被称为反向传播的训练过程来调整节点的权重。反向传播(Backpropagation)可以包括前向传递、损失函数、后向传递(backwardpass)和权重更新。前向传递、损失函数、后向传递和参数更新可以在一次训练迭代中执行。对于每组训练媒体数据,该过程可以重复一定数量的迭代,直到层的权重被准确调整。
在对软件调用栈进行分类或评分的示例中,基于经训练的神经网络410的分类器可以被包括在调用栈分类服务210中。
在对软件调用栈进行分类的示例中,前向传递可以包括通过神经网络410传递软件调用栈的数据。在神经网络410被训练之前,权重最初可以是随机的。软件调用栈的数据可以包括:例如表示该软件调用栈的功能的数字和/或字母的阵列、该软件调用栈在过去的代码、与该软件调用栈相关的栈帧和帧指针的值等。
神经网络410可以包括任何合适的神经或深度学习类型的网络。一个示例包括卷积神经网络(CNN),其包括输入层和输出层,在输入层和输出层之间有多个隐藏层。CNN的隐藏层包括一系列的卷积层、非线性层、池化层(用于下采样)和全连接层。在其他示例中,神经网络410可以表示任何其他神经或深度学习网络,例如自编码器、深度信念网络(DBN)、循环神经网络(RNN)等。
NAS涉及一个过程,其中神经控制器401搜索各种类型的神经网络(例如CNN、DBN、RNN等),以确定哪种类型的神经网络当给定神经网络描述402的输入/输出描述时,一旦经过训练,就可以执行接近期望的输出。因为每种类型的可用神经网络都被当作“黑盒”,所以这种搜索过程目前是繁琐和资源密集型的。换言之,诸如神经控制器401之类的神经控制器选择可用的神经网络(黑盒),训练它,验证它,并根据验证结果选择或不选择它。然而,每个可用的神经网络的示例或类型是节点的集合。如将下文将描述的,本公开能够深入了解每个单独节点的性能以评估其性能,然后允许系统选择节点的混合结构,该结构可以与目前可用的神经网络的特定结构相同,也可以不同。换言之,本公开使得AutoML系统能够从不同的可用神经网络中挑选节点,并创建针对给定应用表现最佳的新结构。
基于神经网络410的分类器也可以被训练以对在部署应用的生产阶段期间所遇到的软件调用栈进行评分。为了训练神经网络410以对软件调用栈进行评分,可以在训练之前为隐藏层404中所包括的每个软件调用栈分配训练分数。输出层406的每个节点可以表示有限数量的分数中的每一者,并且输出层406可以输出软件调用栈的分数。
在一个示例中,每个软件调用栈的分数表示软件调用栈安全和授权的可能性。例如,每个软件调用栈的分数可以是标度上的数字(例如,在0到10、0到20、0到100等范围内)、百分比和/或任何其他类型的指示符。可以存在阈值分数,可以将分数与该阈值分数进行比较以确定软件调用栈是经授权的还是未经授权的。例如,高于阈值分数的分数可以表明调用栈是经授权的,而低于阈值分数的分数可以表明调用栈是未经授权的。在另一示例中,在阈值分数的给定范围内(例如,在阈值分数的1分或1%内)的分数可以被包括在灰名单中。在一个示例中,灰名单中的调用栈可以被提交给手动分析/检查,从而确定它们应当被包括在白名单还是黑名单中。该阈值分数可以根据任何已知的或有待开发的方法和/或经验式研究来确定。例如,每个软件调用栈的分数可以是百分比。返回参考图2,调用栈分类服务210可以基于阈值分数和由分类器生成的软件调用栈的分数来对软件调用栈进行分类。
分数是基于不同因素确定的。当确定最终分数时,可以基于不同的因素将相同的或不同的权重分配给各个分数。
在一个示例中,可以基于在应用的不同执行阶段中遇到软件调用栈的频率来确定分数。白名单可以包括软件调用栈以及该特定软件调用栈被遇到的相对应的次数。因此,经训练的分类器可以由于在应用的不同执行阶段期间遇到的次数较多而将更高的分数分配给软件调用栈。
在另一示例中,分数是基于所遇到的软件调用栈的执行顺序是否在白名单中被标记为授权或在黑名单中被标记为未授权的因素而确定的。例如,白名单(该白名单包括在安全执行环境中的特定软件调用栈)包括软件调用栈的所有执行顺序。如果遇到涉及软件调用栈的新的执行顺序,并且该新的顺序未被包括在白名单中,则机器学习模型可以为该软件调用栈分配较低的分数,表明该软件调用栈应当被授权的可能性较低。对于另一示例,黑名单(该黑名单包括特定软件调用栈,并被认为是不安全的和未经授权的)包括软件调用栈的所有执行顺序。如果遇到涉及软件调用栈的新的执行顺序,并且该新的顺序被包括在黑名单中,则机器学习模型可以为该软件调用栈分配较低的分数,表明该软件调用栈应当被授权的可能性较低。
在为软件调用栈生成分数之后,分类器可以将分数传输到调用栈分类服务210。调用栈分类服务210可以基于图3的S306中所描述的分数来对该软件调用栈进行分类。
虽然图4是从图1和2的示例系统内的各种组件的角度来示出的,但是本领域的技术人员将理解,神经架构400或神经网络410或本文描述的任何系统的组件可以以多种不同的方式来配置,并且可以包括任何其他类型和数量的组件。
在参考图1至图4所描述的软件调用栈安全系统的示例、在软件调用栈层面应用零信任安全策略的方法、以及用于对软件调用栈进行分类和评分的示例神经架构的示例之后,本公开现在转向图5A、图5B和图5C来描述软件调用栈的示例图,以进一步说明上述的软件调用栈安全系统200和/或系统的其他组件的操作。
图5A至图5C示出了根据本公开的一个方面的软件调用栈的示例图。将从如上所述的漏洞引擎104实现调用栈跟踪服务202、调用栈分类服务210和调用栈安全服务220的功能的角度来描述图5A、图5B和图5C的示例图。然而,本领域的技术人员可以容易地理解,能够承载用于在软件调用栈层面实现零信任安全的功能的其他系统配置和组件也在本公开的范围内。
图5A示出了在应用的过去执行阶段期间所遇到的软件调用栈的示例图500。框502、504、506、508、510和512中的每个框表示在应用的过去执行阶段期间所遇到的软件调用栈,并且形成示例白名单。例如,框502表示标题为main(主要)的软件调用栈。框中的百分比表示基于跟踪过去阶段的软件调用栈的枚举。例如,软件调用栈506中的0.04%表示软件调用栈main被调用的次数的百分比(例如,相对应的应用中所有调用的0.04%)。连接框的每个箭头(例如箭头520)表示软件调用栈的执行顺序。例如,箭头520表明软件调用栈504在软件调用栈506之前被调用。在每个箭头右侧的数字(例如数字522)表示采用特定调用顺序的次数。例如,从软件调用栈504到软件调用栈506的调用顺序在过去的阶段中发生了一次。在一些示例中,调用栈分类服务210可以包括以上信息(例如,软件调用栈main被调用的次数的百分比、执行顺序、在白名单中采用特定调用顺序的次数),这些信息作为将未来检测到的任何调用栈分类为授权调用栈的条件。
图5B示出了在部署应用期间所遇到的软件调用栈的示例图530。标题为pointed(指向)的软件调用栈514和执行顺序524不被包括在图5A的示例白名单中。因此,调用栈分类服务210可以将软件调用栈514分类为未经授权的,并且调用栈安全服务220可以阻止软件调用栈514在运行时期间访问相对应的应用。在一个使用分类器的示例中,调用栈分类服务210在遇到软件调用栈514时可以确定软件调用栈514的分数,该分数可以与阈值进行比较,以便将软件调用栈514标识为未经授权的。替代地,该分类器可以提供对软件调用栈514的分类(被分类为未经授权的)作为输出。在另一示例中,经训练的分类器可以在未确定的范围内确定软件栈514的分数,如关于图2和图4详细描述的。在这种情况下,调用栈分类服务210可以在将软件调用栈514分类为未经授权的之前提交软件调用栈514和执行顺序524以供手动审查。
图5C示出了在部署应用期间所遇到的软件调用栈的示例图540。执行顺序542不被包括在图5A的示例白名单中。因此,即使软件调用栈508和512被包括在白名单中,调用栈分类服务210也可以因为执行顺序542而将软件调用栈512分类为未经授权的。如上所述,这种分类可以基于手动创建的白名单,或者替代地使用上述的经训练的分类器。在一个使用分类器的示例中,调用栈分类服务210在遇到该执行顺序中的软件调用栈508时,可以确定软件调用栈508的分数,该分数可以与阈值进行比较,以便将软件调用栈508识别为未经授权的。替代地,分类器可以提供软件调用栈508的分类作为输出,因为执行顺序542没有被包括在示例白名单中,所以软件调用栈508被分类为未经授权的。因此,调用栈安全服务220可以阻止调用栈508对运行时应用的访问。
有了上文参照图1-5所描述的软件调用栈层面的零信任安全方案的示例,本公开现在转向图6A和6B,图6A和6B用于描述用于实现软件调用栈安全系统200和/或上述系统的其他组件的示例系统架构。
图6A-6B示出了根据本公开的一个方面的系统的示例。在实践各种实施例时,更适当的系统对于本领域的普通技术人员将是显而易见的。本领域的普通技术人员也将容易地认识到,其他系统也是可能的。
图6A示出了总线计算系统600的示例架构,其中系统的组件使用总线605彼此电气通信。计算系统600可以包括处理单元(CPU或处理器)610和系统总线605,系统总线605可以将包括系统存储器615(例如,存储设备670中的只读存储器(ROM)和随机存取存储器(RAM)675)在内的各种系统组件耦合到处理器610。计算系统600可以包括与处理器610直接连接、接近或作为处理器610的一部分集成的高速存储器的缓存612。计算系统600可以将数据从存储器615和/或存储设备630复制到缓存612,以供处理器610进行快速访问。以这种方式,缓存612可以提供性能提升,从而避免了处理器在等待数据时出现延迟。这些和其他服务可以控制或被配置为控制处理器610执行各种动作。其他系统存储器615也可供使用。存储器615可以包括具有不同性能特征的多种不同类型的存储器。处理器610可以包括任何通用处理器、硬件模块或软件服务(例如,存储在存储设备630中的服务1 632、服务2 634和服务3636),该硬件模块或软件服务被配置为控制处理器610以及专用处理器,其中软件指令被纳入到实际的处理器设计中。处理器610实质上可以是完全自含式的计算系统,其包含多个核心或处理器、总线、存储器控制器、缓存等。多核处理器可以是对称的或非对称的。
为了使用户能够与计算系统600进行交互,输入设备645可以表示任何数量的输入机制,这些输入机制例如用于说话的麦克风、用于手势或图形输入的触敏屏幕、键盘、鼠标、运动输入、语音等等。输出设备635也可以是对本领域的技术人员已知的许多输出机制中的一种或多种。在一些情况下,多模态系统可以使用户能够提供多种类型的输入以与计算系统600进行通信。通信接口640可以支配和管理用户输入和系统输出。可以不限制在任何特定的硬件布置上进行操作,因此随着改进的硬件或固件布置被开发出来,这里的基本特征可以很容易地被其替换。
存储设备630可以是非易失性存储器,并且可以是硬盘或其他类型的计算机可读介质,其可以存储可由计算机访问的数据,例如磁带、闪存卡、固态存储设备、数字多功能磁盘、盒式磁带、随机存取存储器(RAM)625、只读存储器(ROM)620及其混合体。
存储设备630可以包括用于控制处理器610的软件服务632、634、636。考虑其他硬件模块或软件服务。存储设备630可以被连接到系统总线605。在一个方面,执行特定功能的硬件模块可以包括存储在计算机可读介质中的软件组件,该软件组件与必要的硬件组件(例如,处理器610、总线605、输出设备635等)连接以执行该功能。
图6B示出了可以根据实施例使用的芯片组计算系统650的示例架构。计算系统650可以包括处理器655,该处理器655表示任何数量的物理上和/或逻辑上不同的资源,这些资源能够执行被配置为执行确定的计算的软件、固件和硬件。处理器655可以与芯片组660通信,该芯片组660可以控制到处理器655的输入和来自处理器655的输出。在该示例中,芯片组660将信息输出到诸如显示器之类的输出设备665,并且可以读写信息到存储设备670,存储设备670例如可以包括磁介质和固态介质。芯片组660还可以从RAM 675中读取数据并将数据写入RAM 675。可以提供用于与各种用户界面组件685对接的桥680,以用于与芯片组660对接。用户界面组件685可以包括键盘、麦克风、触摸检测和处理电路、诸如鼠标之类的指向性设备等。对计算系统650的输入可以来自各种来源中的任何一种,这些来源是机器生成的和/或人工生成的。
芯片组660还可以与一个或多个通信接口690对接,这些通信接口690可以具有不同物理接口。通信接口690可以包括用于有线和无线LAN、宽带无线网络以及个人局域网的接口。本文公开的生成、显示和使用GUI的方法的一些应用可以包括通过物理接口接收有序的数据集,或者由机器本身通过处理器655分析存储在存储设备670或RAM 675中的数据而生成。此外,计算系统600可以经由用户界面组件685从用户接收输入,并且通过使用处理器655解释这些输入来执行适当的功能,例如浏览功能。
应当理解,计算系统600和650可以分别具有一个以上的处理器610和655,或者计算系统600和650可以是联网在一起以提供更大处理能力的计算设备组或计算设备群集的一部分。
总之,本公开提供了用于在软件调用栈层面实现安全策略的系统、方法和计算机可读介质。在一个示例中,一种方法包括:针对应用生成调用栈分类方案;在部署应用期间检测调用栈;在应用的运行时期间使用调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及基于分类应用安全策略。
为了解释清楚,在一些情况下,各种实施例可以被表示为包括各个功能框,这些功能框包括包含以下项的功能框:设备、设备组件、体现在软件(或硬件和软件的组合)中的方法的步骤或例程。
在一些示例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当提及时,非暂态计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身等之类的介质。
根据上述实施例的方法可以使用计算机可执行指令来实现,这些指令被存储或以其他方式从计算机可读介质获得。这样的指令可以包括例如指令和数据,这些指令和数据导致或以其他方式配置通用计算机、专用计算机或专用处理设备以执行某种功能或功能组。所使用的计算机资源的一部分可以通过网络访问。计算机可执行指令可以是例如二进制文件、中间格式指令(例如,汇编语言、固件,或源代码)。可用于存储在根据所述实施例的方法期间所使用的指令、信息和/或创建的信息的计算机可读介质的示例包括磁性或光学磁盘、闪存、提供有非易失性存储器的USB设备、联网的存储设备等等。
实现根据这些公开的方法的设备可以包括硬件、固件和/或软件,并且可以采取多种形状因素中的任何一种。这样的形状因素的典型示例包括膝上型计算机、智能电话、小形状因素个人计算机、个人数字助理、机架式设备、独立设备等。本文描述的功能也可以体现在外围设备或附加卡中。作为进一步的示例,这样的功能也可以在电路板上的不同芯片或在单一设备中执行的不同进程中实现。
指令、用于传达这样的指令的介质、用于执行这样的指令的计算资源、以及用于支持这样的计算资源的其他结构是用于提供这些公开中所描述的功能的设备。
虽然使用各种示例和其他信息来解释所附权利要求的范围内的方面,但是不应基于这样的示例中的特定特征或布置而暗示对权利要求的限制,因为本领域的普通技术人员将能够使用这些示例来获取各种各样的实施方式。此外,虽然可能已经用特定于结构特征和/或方法步骤的示例的语言描述了一些主题,但是应理解,所附权利要求中限定的主题不一定限于这些描述的特征或动作。例如,这样的功能可以不同地分布在除本文所标识的那些组件之外的组件中或在除本文所标识的那些组件之外的组件中执行。相反,所描述的特征和步骤是作为所附权利要求范围内的系统和方法的组件的示例而被公开的。

Claims (23)

1.一种方法,包括:
生成调用栈分类方案;
在部署应用期间检测调用栈;
在所述应用的运行时期间使用所述调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及
基于所述分类应用安全策略。
2.根据权利要求1所述的方法,其中,所述调用栈分类方案包括:
能够由所述应用访问的经授权的调用栈的白名单。
3.根据权利要求1或2所述的方法,其中,所述调用栈分类方案包括:
使用机器学习技术训练的分类器,用于将检测到的调用栈标识为经授权的调用栈或未经授权的调用栈中的一者。
4.根据权利要求3所述的方法,其中,训练所述分类器包括:
使用先前已知的经授权的调用栈列表和先前已知的未经授权的调用栈列表来训练所述分类器。
5.根据权利要求3或4所述的方法,其中,所述分类器被训练成在所述应用的运行时期间为所述检测到的调用栈输出分数。
6.根据权利要求5所述的方法,其中,对所述检测到的调用栈进行分类还包括:
将所述分数与阈值进行比较;以及
如果所述分数大于所述阈值,则将所述调用栈分类为所述经授权的调用栈。
7.根据权利要求3至6中任一项所述的方法,其中,所述分类器被训练成将在所述运行时期间检测到的所述调用栈的所述分类输出为所述经授权的调用栈或所述未经授权的调用栈中的一者。
8.一种系统,包括:
一个或多个存储器,具有存储在其中的计算机可读指令;以及
一个或多个处理器,被配置为执行所述计算机可读指令以执行下述操作:
生成调用栈分类方案;
在部署应用期间检测调用栈;
在所述应用的运行时期间使用所述调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及
基于所述分类应用安全策略。
9.根据权利要求8所述的系统,其中,所述调用栈分类方案包括:
能够由所述应用访问的经授权的调用栈的白名单。
10.根据权利要求8或9所述的系统,其中,所述调用栈分类方案包括:
使用机器学习技术训练的分类器,用于将检测到的调用栈标识为经授权的调用栈或未经授权的调用栈中的一者。
11.根据权利要求10所述的系统,其中,所述一个或多个处理器被配置为执行所述计算机可读指令,以使用先前已知的经授权的调用栈列表和先前已知的未经授权的调用栈列表来训练所述分类器。
12.根据权利要求10或11所述的系统,其中,所述分类器被训练成在所述应用的运行时期间为所述检测到的调用栈输出分数。
13.根据权利要求12所述的系统,其中,所述一个或多个处理器被配置为执行所述计算机可读指令以执行下述操作:
将所述分数与阈值进行比较;以及
如果所述分数大于所述阈值,则将所述调用栈分类为所述经授权的调用栈。
14.根据权利要求10至13中任一项所述的系统,其中,所述分类器被训练成将在所述运行时期间检测到的所述调用栈的所述分类输出为所述经授权的调用栈或所述未经授权的调用栈中的一者。
15.一种或多种非暂态计算机可读存储介质,包括计算机可读指令,所述计算机可读指令在由安全系统的一个或多个处理器执行时使所述安全系统执行下述操作:
生成调用栈分类方案;
在部署应用期间检测调用栈;
在所述应用的运行时期间使用所述调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及
基于所述分类应用安全策略。
16.根据权利要求15所述的一种或多种非暂态计算机可读存储介质,其中,所述调用栈分类方案包括:
能够由所述应用访问的经授权的调用栈的白名单。
17.根据权利要求15或16所述的一种或多种非暂态计算机可读存储介质,其中,所述调用栈分类方案包括:
使用机器学习技术训练的分类器,用于将检测到的调用栈标识为经授权的调用栈或未经授权的调用栈中的一者。
18.根据权利要求17所述的一种或多种非暂态计算机可读存储介质,其中,由所述一个或多个处理器执行所述计算机可读指令还使得所述安全系统使用先前已知的经授权的调用栈列表和先前已知的未经授权的调用栈列表来训练所述分类器。
19.根据权利要求17或18所述的一种或多种非暂态计算机可读存储介质,其中,所述分类器被训练成在所述应用的运行时期间为所述检测到的调用栈输出分数。
20.根据权利要求19所述的一种或多种非暂态计算机可读存储介质,其中,由所述一个或多个处理器执行所述计算机可读指令还使得所述安全系统执行下述操作:
将所述分数与阈值进行比较;以及
如果所述分数大于所述阈值,则将所述调用栈分类为所述经授权的调用栈。
21.一种装置,包括:
生成调用栈分类方案;
在部署应用期间检测调用栈;
在所述应用的运行时期间使用所述调用栈分类方案,将检测到的调用栈分类为经授权的调用栈或未经授权的调用栈中的一者以产生分类;以及
基于所述分类应用安全策略。
22.根据权利要求21所述的装置,还包括用于实现根据权利要求2至7中任一项所述的方法的模块。
23.一种计算机程序、计算机程序产品或计算机可读介质,包括指令,所述指令在由计算机执行时使所述计算机执行根据权利要求1至7中任一项所述的方法的步骤。
CN202180076353.8A 2020-09-16 2021-09-09 用于软件调用栈的安全策略 Pending CN116438533A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/023,035 US20220083644A1 (en) 2020-09-16 2020-09-16 Security policies for software call stacks
PCT/US2021/049678 WO2022060625A1 (en) 2020-09-16 2021-09-09 Security policies for software call stacks

Publications (1)

Publication Number Publication Date
CN116438533A true CN116438533A (zh) 2023-07-14

Family

ID=78080470

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180076353.8A Pending CN116438533A (zh) 2020-09-16 2021-09-09 用于软件调用栈的安全策略

Country Status (4)

Country Link
US (1) US20220083644A1 (zh)
EP (1) EP4214620A1 (zh)
CN (1) CN116438533A (zh)
WO (1) WO2022060625A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11991210B2 (en) * 2020-10-26 2024-05-21 Microsoft Technology Licensing, Llc Machine learning-based techniques for identifying deployment environments and enhancing security thereof
US11816206B2 (en) * 2021-02-25 2023-11-14 Red Hat, Inc. Function pointer protection
US20230038196A1 (en) * 2021-08-04 2023-02-09 Secureworks Corp. Systems and methods of attack type and likelihood prediction
US11816207B2 (en) * 2021-12-02 2023-11-14 Fortinet, Inc. Systems and methods for application integrated malicious behavior mitigation
US20230208871A1 (en) * 2021-12-28 2023-06-29 SecureX.AI, Inc. Systems and methods for vulnerability assessment for cloud assets using imaging methods
US20230208870A1 (en) * 2021-12-28 2023-06-29 SecureX.AI, Inc. Systems and methods for predictive analysis of potential attack patterns based on contextual security information
US20230214479A1 (en) * 2022-01-04 2023-07-06 Saudi Arabian Oil Company Method and system for detecting and preventing unauthorized access to a computer
US11709720B1 (en) * 2022-02-25 2023-07-25 Datadog, Inc. Protocol for correlating user space data with kernel space data
US12015623B2 (en) 2022-06-24 2024-06-18 Secureworks Corp. Systems and methods for consensus driven threat intelligence
US11870818B1 (en) * 2023-02-28 2024-01-09 Cloudflare, Inc. Enforcing security policies in a zero trust security framework using a behavioral score

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5625788A (en) * 1994-03-01 1997-04-29 Intel Corporation Microprocessor with novel instruction for signaling event occurrence and for providing event handling information in response thereto
US7350204B2 (en) * 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US7475431B2 (en) * 2004-06-10 2009-01-06 International Business Machines Corporation Using security levels to improve permission checking performance and manageability
US7512738B2 (en) * 2004-09-30 2009-03-31 Intel Corporation Allocating call stack frame entries at different memory levels to functions in a program
US8688734B1 (en) * 2011-02-04 2014-04-01 hopTo Inc. System for and methods of controlling user access and/or visibility to directories and files of a computer
US9160749B2 (en) * 2012-09-07 2015-10-13 Oracle International Corporation System and method for providing whitelist functionality for use with a cloud computing environment
US9602437B1 (en) * 2012-10-03 2017-03-21 Tracey M. Bernath System and method for accelerating network applications using an enhanced network interface and massively parallel distributed processing
US9495395B2 (en) * 2013-04-11 2016-11-15 Oracle International Corporation Predictive diagnosis of SLA violations in cloud services by seasonal trending and forecasting with thread intensity analytics
US9509697B1 (en) * 2014-09-15 2016-11-29 Symantec Corporation Systems and methods for authorizing attempts to access shared libraries
US10050993B2 (en) * 2014-09-24 2018-08-14 Mcafee, Llc Non-invasive whitelisting
US9529994B2 (en) * 2014-11-24 2016-12-27 Shape Security, Inc. Call stack integrity check on client/server systems
WO2016108162A1 (en) * 2015-01-01 2016-07-07 Checkmarx Ltd. Code instrumentation for runtime application self-protection
EP3289446A1 (en) * 2015-04-30 2018-03-07 Entit Software LLC Classification of application events using call stacks
US9942268B1 (en) * 2015-08-11 2018-04-10 Symantec Corporation Systems and methods for thwarting unauthorized attempts to disable security managers within runtime environments
US9817971B2 (en) * 2015-10-29 2017-11-14 International Business Machines Corporation Using call stack snapshots to detect anomalous computer behavior
US10509685B2 (en) * 2015-12-14 2019-12-17 VCE IP Holding Company, LLC Methods, systems, and computer readable mediums for workload clustering
WO2017175157A1 (en) * 2016-04-06 2017-10-12 Karamba Security Secure controller operation and malware prevention
US10417111B2 (en) * 2016-05-09 2019-09-17 Oracle International Corporation Correlation of stack segment intensity in emergent relationships
CN106682495B (zh) * 2016-11-11 2020-01-10 腾讯科技(深圳)有限公司 安全防护方法及安全防护装置
US20180203703A1 (en) * 2017-01-13 2018-07-19 Optimum Semiconductor Technologies, Inc. Implementation of register renaming, call-return prediction and prefetch
US10558809B1 (en) * 2017-04-12 2020-02-11 Architecture Technology Corporation Software assurance system for runtime environments
US10540523B2 (en) * 2017-04-26 2020-01-21 International Business Machines Corporation Comprehensive system wide cross-reference mechanism using runtime data collection
US10938854B2 (en) * 2017-09-22 2021-03-02 Acronis International Gmbh Systems and methods for preventive ransomware detection using file honeypots
US10956574B2 (en) * 2017-10-07 2021-03-23 Shiftleft Inc. System and method for securing applications through an application-aware runtime agent
US10606683B1 (en) * 2017-10-24 2020-03-31 Electronic Arts Inc. Crash clustering call stacks with game state data
US11494491B2 (en) * 2018-03-16 2022-11-08 Acronis International Gmbh Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector
US11416612B2 (en) * 2018-03-16 2022-08-16 Acronis International Gmbh Protecting against malware code injections in trusted processes
US11709939B2 (en) * 2018-05-04 2023-07-25 New York University Anomaly detection in real-time multi-threaded processes on embedded systems and devices using hardware performance counters and/or stack traces
CN108846287A (zh) * 2018-06-26 2018-11-20 北京奇安信科技有限公司 一种检测漏洞攻击的方法及装置
US10853521B2 (en) * 2018-07-17 2020-12-01 Cisco Technology, Inc. Application security policy management agent
US20200394329A1 (en) * 2019-06-15 2020-12-17 Cisco Technology, Inc. Automatic application data collection for potentially insightful business values
US11288168B2 (en) * 2019-10-14 2022-03-29 Paypal, Inc. Predictive software failure discovery tools
US11080125B1 (en) * 2020-03-19 2021-08-03 Oracle International Corporation Identifying and clustering call stacks across multiple memory dumps with out-of-memory errors

Also Published As

Publication number Publication date
EP4214620A1 (en) 2023-07-26
US20220083644A1 (en) 2022-03-17
WO2022060625A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
CN116438533A (zh) 用于软件调用栈的安全策略
US11856021B2 (en) Detecting and mitigating poison attacks using data provenance
US10956477B1 (en) System and method for detecting malicious scripts through natural language processing modeling
Novaes et al. Adversarial Deep Learning approach detection and defense against DDoS attacks in SDN environments
US11727121B2 (en) Method and system for neural network deployment in software security vulnerability testing
RU2706896C1 (ru) Система и способ выявления вредоносных файлов с использованием модели обучения, обученной на одном вредоносном файле
RU2680738C1 (ru) Каскадный классификатор для приложений компьютерной безопасности
David et al. Deepsign: Deep learning for automatic malware signature generation and classification
US11451581B2 (en) Systems and methods for malware detection and mitigation
US20100269175A1 (en) Methods, systems, and media for masquerade attack detection by monitoring computer user behavior
Naik et al. The impacts of artificial intelligence techniques in augmentation of cybersecurity: a comprehensive review
US20190294792A1 (en) Lightweight malware inference architecture
Thomas Improving intrusion detection for imbalanced network traffic
US20180139142A1 (en) Network traffic pattern based machine readable instruction identification
US20200320438A1 (en) Prudent ensemble models in machine learning with high precision for use in network security
Omar Machine learning for cybersecurity: Innovative deep learning solutions
US20230291755A1 (en) Enterprise cybersecurity ai platform
Khan et al. Performance evaluation of advanced machine learning algorithms for network intrusion detection system
Al-Haija Cost-effective detection system of cross-site scripting attacks using hybrid learning approach
Uçar et al. A Deep learning approach for detection of malicious URLs
Hwang et al. Semi-supervised based unknown attack detection in EDR environment
Chapaneri et al. Multi-level Gaussian mixture modeling for detection of malicious network traffic
Akram et al. A systematic literature review: usage of logistic regression for malware detection
Raymond et al. Investigation of Android malware using deep learning approach
Alazab et al. Deep learning for cyber security applications: A comprehensive survey

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication