针对跨安全边界的sdnapi调用的动态过滤的制作方法

文档序号:10574073阅读:357来源:国知局
针对跨安全边界的sdn api调用的动态过滤的制作方法
【专利摘要】本文提出了用于减少网络元件关于恶意API调用的漏洞的技术。验证跨网络元件处的API边界的数据的一个或多个过滤器被动态地加载到该网络元件中,以使得使用一个或多个过滤器不需要重启该网络元件。针对API函数的API调用被接收,其中,API调用包含与API函数相关联的一个或多个参数值。这些参数可以利用一个或多个过滤器进行验证。如果确定一个或多个过滤器证实API函数的参数,则可以利用这些参数值执行API函数。如果确定一个或多个过滤器未证实API函数的参数,则API函数的执行可以被中止。
【专利说明】
针对跨安全边界的SDN API调用的动态过滤
技术领域
[0001 ] 本公开涉及验证应用程序接口(API)调用。
【背景技术】
[0002] 为了改变网络元件(例如,交换机、路由器、防火墙、虚拟交换机和路由器等)的配 置设置,管理员通常会通过网络浏览器或直接登录设备。软件定义网络(SDN)提供了至网络 元件的内部功能的应用程序接口(API),并且允许内部和外部应用"在运行中(on-the-fly)"动态地改变网络元件的行为和配置。
[0003] API暴露了本来从未意图或设计为被暴露的内部网络元件的功能。单个API调用可 以访问若干个内部调用,这些内部调用本身可以调用其他的内部调用。因此,没有被设计为 稳健地处理恶意输入的潜在的数百个内部设备调用可能接收到恶意输入。
【附图说明】
[0004] 图1示出包括与控制器通信的一个或多个网络元件的示例性系统,并且这些网络 元件可以配置有本文所述的动态API调用过滤和验证能力。
[0005] 图2示出描绘利用动态过滤技术调用网络元件的API时的操作的一般示例性流程 图。
[0006] 图3示出用于验证API调用的参数的动态过滤技术的更详细的示例性流程图。
[0007] 图4示出被配置为根据本文提出的技术验证API调用的参数的网络元件的示例性 框图。
【具体实施方式】
[0008] 鐘述
[0009] 本文提出了用来减少网络元件关于恶意API调用的漏洞的技术。验证跨网络元件 处的API边界的数据的一个或多个过滤器被动态地加载到该网络元件中,以使得利用一个 或多个过滤器不需要重启该网络元件。针对API函数的API调用被接收,其中,API调用包含 与API函数相关联的一个或多个参数值。可以利用一个或多个过滤器来验证这些参数。如果 确定一个或多个过滤器证实该API函数的参数,则可以利用这些参数值执行该API函数。如 果确定一个或多个过滤器未证实API函数的参数,则API函数的执行可以被中止。
[0010] 示例实施例
[0011] 首先参考图1,图1示出系统100,在系统100中,SDN控制器105或客户端110可以经 由网络120与网络元件115(a)-115(f)通信。软件定义网络(SDN)是在其中将控制从硬件解 耦并将控制给予软件应用(被称为控制器)的网络化方法。SDN控制器105可以从物理计算设 备或者从虚拟的或基于云的计算资源操作。SDN控制器利用协议和标准(例如,思科系统的 One Platform Kit(OnePK))来管理网络元件,以允许控制器指示或配置网络元件如何处理 和路由分组。使用SDN控制器的管理员可以利用应用编程接口(API)调用通过网络改变任意 网络元件的规则,并且可以优先化、去优先化以及阻止跨网络的特定类型的分组。
[0012] 图1示出网络元件115(a)是物理网络交换机,而网络元件115(b)是物理网络路由 器,它们两者都可以经由SDN API层135(a)-135(f)在网络120中接收和转发流量。网络元件 115(c)是监视和控制哪些流量可以被转发到网络120的物理网络防火墙/安全装置。防火墙 还可以在另一网络元件(例如,物理服务器115(f))上的软件中实现。网络120中可以存在任 意数量的交换机、路由器和防火墙,它们都可以包含允许与SDN控制器105进行交互的相应 的SDN API层135(a)-135(f)。
[0013] 除了上文所述的物理元件之外,给定网络部署可以包括一个或多个虚拟交换机 115(d)和虚拟路由器115(e)。每一个虚拟交换机115(d)和虚拟路由器115(e)可以被配置 为管理一个或多个虚拟机125(尤其是虚拟网络和/或子网络(子网))的通信。每一个虚拟交 换机115(d)可以由软件体现并且可以在物理服务器130上存储和执行。因此,虚拟交换机 115(d)实现物理交换机设备的功能。类似地,每一个虚拟机125可以是在物理服务器130上 存储和执行的软件并且可以实现类似于例如物理机115(f)的功能。虚拟机125被配置为经 由网络120与其他虚拟机交换通信。应该理解的是系统100中可以存在托管任意数量的虚拟 交换机、虚拟路由器和虚拟机的任意数量的物理服务器。
[0014] 客户端110可以采用物理或虚拟计算设备的形式,并且可以通过网络120在网络元 件115(a)-115(f)中的任意元件上发起API调用。这可以例如经由控制器(例如,SDN控制器 105)发生。然而,元件115(a)-115(f)是示例性物理和虚拟网络元件,其他网络元件可以被 配置为执行本文所提出的技术。
[0015] 通常,网络元件被设计成需要网络管理员在本地或者在局域网上登录设备以改变 该网络元件的配置或设置的封闭系统。受信任的管理员一般将经由命令行接口或浏览器接 口来配置网络元件。这些配置会保持静态并且设备无法适应于变化的网络需求。SDN提供了 可以通过局域网或广域网连接从任意位置被调用或者甚至可以从在网络元件内运行的应 用中被调用的强大的API ADN API调用进而可以调用多个内部操作系统功能以在给定网络 设备上执行给定请求。这些调用进而可以影响操作环境中的其他调用。结果,之前不能直接 利用网络元件的内部调用的外部用户通过使用API调用可以直接或间接地调用本来从未被 设计为被暴露的数百个API函数。例如来自OnePK的大量API集合的单个API调用可以暴露数 千个代码路径和功能。然而,客户端110和其他用户可能是恶意的,并且网络元件配置功能 未必是针对鲁棒性构建的。虽然网络元件的鲁棒性通常随着时间被改善,但是网络元件的 调用栈常常很庞大,因此不可能完成对所有路径的测试。此外,部署修复可能花费数月的时 间,因此,需要可以被快速部署的允许保护设备免遭恶意调用的解决方案。
[0016] 为了说明这些问题并且提出解决方案,图2示出描绘在调用网络元件的API时的 动态过滤技术的操作的示例性流程图。在步骤205处,来自API调用的数据被接收。这可以是 本地调用或者来自远程服务器,例如,来自控制器105或客户端110。调用可以利用套接字、 进程间通信(IPC),并且可以利用传输层安全(TLS)等进行加密。在步骤210处,数据中的信 息被解析。这可以包括API调用参考、API调用的参数、以及验证信息(例如,会话标识符(ID) 或用户名和密码)。如果所有信息被正确解析,则过程继续。在步骤215处,解析出的信息被 用于认证调用者以及验证API的调用者具有适当的授权来进行所请求的调用。如果调用者 具有授权,则过程继续。如果调用者已经在被认证的路径中,则步骤215是可选的。在步骤 220处,根据本文提出的技术,动态过滤器被应用于API调用。操作220的细节在下文结合图3 进行描述。在步骤225处,如果过滤器没有发现错误,则所请求的API调用可以利用提供的参 数被调用,并在必要时调用底层操作系统、路由器、交换机或网络元件调用。
[0017]如先前所讨论的,API调用中包含的信息可能是不受信任的。为了防止错误的或恶 意的调用被执行,API调用可以在没有步骤220的动态过滤器的情况下被验证,但是这种验 证可能是不完善的。例如,在认证步骤215中,网络元件可能不能正确地核查信息,从而允许 攻击者利用系统。授权信息可能是恶意的。例如,API调用可能在用户名字段中具有 JaveScript,或者可能在数字证书信息中存在缓冲溢出等。另一个问题是步骤225处的API 调用正作用于它必须核查的数据。如果系统没有正确地验证API调用信息,则系统可能被不 当利用(exploit)。不当利用可能是在API调用本身中或者可能在它所调用的、路由器或交 换机的功能中的一个功能中。
[0018] 另一个问题是简化复杂性。步骤205-225可以被移植到多个网络元件中。如上文提 到的,单个API可能触及数百个特定于底层平台的功能调用。再加上网络元件通常不被整体 设计成外部稳健(即,坚固的)的事实,保证网络元件固件中没有不当利用几乎是不可能的。 API集合(例如,思科系统的OnePK所包含的API集合)过于庞大以致于黑客和其他恶意用户 很可能找到利用参数中的不正确数据的方式,以导致例如泛滥的不当利用、权限提升、或 者单纯地导致网络元件崩溃。提升权限在用户能够通过恶意输入提升他们的访问等级时发 生。例如,低级用户通常只能访问状态信息API,但是可能能够获得对管理网络元件的操作 设置的更高级的API的访问。甚至享有高权限的用户可能能够通过不当利用来获得更高的 根状态。
[0019] 即使黑客和其他恶意用户有可能发现使用API调用的安全问题,但是对网络元件 进行安全修复即使不需要超过一年的时间来部署,也可能花费数月的时间。此外,网络元件 用户在执行他们自己的测试时可能推迟采纳网络元件固件更新。在此期间,网络元件制造 商的名声可能大大受损。此外,网络元件用户可能决定完全不采纳固件更新(例如,安全修 复),因为在用户端/客户端上进行测试和验证的成本可能相当高。因此,需要步骤220的动 态过滤来保护网络设备和元件。
[0020] 图3中的流程图的操作流程更加详细示出了动态过滤功能。在步骤305处,一个或 多个过滤器可以被加载到网络元件中。过滤器可以是包含用来验证接收到的API调用的指 令的软件,或者它可以是指示一个或多个API调用、参数、以及过滤器类型和值的数据文件。 当网络元件被启动、重启、重新加载时,或者当被指示进行加载时,解决网络元件上的一个 或多个已知漏洞的一个或多个过滤器可以被加载。每一个过滤器可以针对特定的API调用 以及针对特定的API调用参数。过滤器可以经由与SDN控制器105通信的网络元件上的SDN API 135(a)-135(f)被加载。可替换地,经由SDN API加载过滤器可能被用户或管理员禁用。 因为在给定网络元件上可能存在安全漏洞,这些漏洞可以被用来加载恶意的或不期望的过 滤器、或者删除现有的过滤器。可替换地,可以要求能够利用动态过滤器的给定网络元件的 用户或管理员使用非SDN和非API方法(例如,命令行接口(CLI))来加载过滤器。
[0021] 在步骤310处,包含API调用的原始缓冲数据(可能来自本地或远程来源)被接收。 缓冲数据可以使用套接字、IPC,并且可以利用TLS等进行加密。在步骤315处,过滤器可以首 先在解析数据层处被加载并且被应用,以便于检查可以不当利用数据解析漏洞的畸形数据 (例如,畸形字符串)。如果过滤器没有检测到问题,则缓冲数据被解析。经解析的缓冲数据 可以包括API调用本身、API调用的参数、以及认证信息(例如,会话标识符(ID)、用户名和密 码)。在解析出API调用后,API调用值可以被用于识别该API调用。通过利用API调用识别,相 关联的过滤器还可以被加载和应用于检查API调用中的畸形数据。步骤315中的过滤器是可 选的,并且用于被识别的特定API调用的过滤器可以优先于用于原始缓冲数据的过滤器被 执行以减少计算成本。如果对于缓冲数据或API调用本身,信息被正确解析并且没有检测到 畸形数据,则流程进行至授权步骤320。
[0022]在步骤320处,解析出的信息被用于认证调用者以及验证该调用者具有适当授权 来进行所请求的调用。如果调用者已经在被认证的路径中,则该功能模块是可选的。过滤器 可以与该步骤相关联,以便于在认证层中查找恶意信息。如果认证和授权通过,并且任意相 关联的过滤器也在没有错误的情况下通过,则流程进行至步骤325。
[0023]在步骤325处,在调用API函数之前,系统进行检查以查看是否存在与API调用参数 相关联的、已加载的动态过滤器。过滤器是动态的,因为它们不一定被硬编码在操作系统映 像中。相反,它们可能从过滤器文件或过滤器数据存储中被动态地加载。如果在过滤器集合 文件中不存在用于API函数的相关联的过滤器,则API函数可以在步骤350处被直接调用。通 过这种方式,在没有相关联的过滤器的情况下处理和时间开销是最少的。如果存在与API调 用相关联的过滤器,则系统可以逐参数地应用过滤器。当一个或多个过滤器与给定参数相 关联时,这些过滤器可以是串联(in-1 ine)的并且无旁路(non-bypassable)。因此,用户不 可能在API调用过程中绕过对过滤器的应用。在步骤330处,如果存在用于给定参数的相关 联的过滤器,则过滤器被执行以在步骤335处验证API调用参数。在步骤340处,如果存在尚 未检查的另外的参数,则流程返回至步骤330,并且重复执行与API调用的任意剩余的参数 相关联的任意剩余的过滤器。通过这种方式,一个或多个过滤器可以被应用于API调用的一 个或多个参数中的每一个参数。
[0024] 在步骤345处,如果在迭代的参数过滤器检查过程中的任意点处存在过滤器违 规,则流程进行至步骤355并且API函数不可以被调用。如果不存在过滤器违规,则网络元件 的API函数可以在步骤350处被调用。如上文提到的,这些过滤器可以动态地和自动地从文 件或数据存储中被加载,并且它们可以是临时的。当随着安全修复发布了针对网络元件的 新的固件映像时,相关联的过滤器可以被自动移除。
[0025] 过滤器应用可以是可选的。当在"野外"由客户端或其他用户发现或者在网络元件 供应商公司内部发现漏洞时,可以准备好过滤器并提供给每一个网络元件客户端用户。网 络元件可以联系供应商以取回列表或者取回所有可用的过滤器和相关联的信息。然后,客 户端用户可以决定他们是否希望自动应用过滤器。过滤器可以利用可扩展标记语言(XML) 来写,但是还设想到其他的格式并将它们纳入本文提出的技术的精神和范围内。过滤器可 以在数小时或数天内被准备好,从而避免与对网络元件映像的固件更新相关联的长时间 帧。
[0026] 过滤器还可以作为进行参数检查的独立可插模块被输入。这些模块可以是动态可 加载的软件而不是可加载的验证规则。在这种实施例中,系统具有API层可以加载的钩子。 这将允许过滤器在运行中被动态地加载。
[0027] 过滤器可以施行各种输入请求。例如,给定参数可能有最小整数值或最小字符串 长度、或最大整数值或字符串长度。可能存在要检查的、被直接认定为有效、无效、或者与另 外的逻辑相关联的一个或多个特定的整数或字符串值。过滤器还可以包含字符串需要符合 以被接受的一个或多个正则表达式白名单。过滤器还可以包括一个或多个正则表达式黑名 单,如果输入字符串与正则表达式黑名单匹配,则验证自动失败。其他类型的过滤器也将符 合本文提出的技术。
[0028]现在将进一步详细描述在图3中讨论的示例性步骤。进行API调用的用户可以是 SDN控制器105或诸如客户端110之类的任意用户。API层可以在物理和虚拟元件115(a)-115 (f)上存在。API层可以使用类似于Corva的接口描述语言(IDL),但是根据本文提出的技术 其他语言也是可行的。IDL通告函数的内容。示例性API函数如下所示:
[0029]实例152: {//生成的代码的示例性内容
[0030]
[0031] 上文所示的API函数示例具有三个参数,每一个参数可以与一个或多个过滤器相 关联。如所示,函数get Some Info IDL()具有参数session (会话)、severity (严重性)和 message(消息)。如关于步骤325所讨论的,如果没有与API函数getSomelnfoIDLO相关联的 过滤器,则可能只需要进行简单的布尔(Boolean)检查,以便最小化开销。例如:
[0032]
[0033] 如先前所讨论的,如果不存在过滤器,则流程可以进行至步骤350以调用API函数。 如果确实存在过滤器,则可以对逐个参数迭代地执行过滤器。再次注意,简单的布尔检查可 以被用于只验证具有相关联的过滤器的参数,这有助于最小化开销。例如:
定参数相关联的每一个过滤器。在所示示例中,对于整数参数,validate_int函数被调用, 而对于字符串参数,validate_string函数被调用。对于这些验证函数中的每一个验证函 数来说,第一参数是参数的值,第二参数是参数过滤器。在所示示例中,验证变量可以记录 是否存在过滤器违规。在执行了与一个或多个参数中的每一个参数相关联的一个或多个过 滤器后,如果验证变量增大,则过滤器肯定已经违规,因此函数中断并且API函数不会被调 用。
[0037] 不例性 validate_int 函数是:
[0038]
[0039]在本示例中,"return 1(返回1)"表示已经存在过滤器违规,所以该函数可以向 getSomelnfoIDLO发回已经存在验证错误的报告,这会阻止API函数被调用。相反地, "return 0(返回0)"表示针对该参数不存在过滤器违规。上述黑名单条件句示例检查不被 许可的数字的精确匹配。这种条件句还可以针对每一个列入黑名单的值进行迭代循环。如 先前所讨论的,迭代施行正则表达式白名单和黑名单的另外的过滤器也是可行的。较为耗 费计算的过滤器(例如,正则表达式)可以被最后执行,以便于将效率最大化并且将计算成 本最小化。
[0040]过滤器还可以例如通过测量中央处理单元(CPU)的影响被基准化,从而在决定是 否实施过滤器时向客户端用户/顾客提供更多的信息。客户端用户可以选择当新近可用的 过滤器可用时将它们加载到每一个网络元件中的设置。客户端还可以定期地检查来自供应 商的更新,并且按照需要选择性地加入可用的过滤器。供应商还可以主动向客户端用户通 知当前未用于给定网络元件的可用的和推荐的过滤器。此外,所有过滤器更新可以被直接 应用于网络元件。
[0041]过滤器甚至还可以由客户端用户定义,从而允许他们按需要限制或允许可能的 SDN使用。例如,特定的API调用可以运行命令行上的字符串。客户端用户可能不希望命令行 上所有可能的字符串都是可用的。因此,客户端用户可以定义白名单过滤器,以仅允许一个 或若干个预定的输入被执行。例如,"Sudo"是允许以根权限执行命令的Linux命令行。基于 Linux的网络元件上的SDN API可以具有允许执行命令行字符串的API调用。网络运营商可 能具有有限的用户简档以允许简单的命令行调用,但可能希望限制"sudo"调用。过滤器可 以被加入命令行执行、API调用以过滤寻找命令"sudo"的执行字符串。另一网络运营商可能 想要阻止访问API调用的子集。运营商可以为每一个API调用创建过滤器,以过滤出API调用 本身或者设置过滤器以使得无论字段中的一个字段的值是什么,它都不能进行验证。例如, 如果存在基于无符号整数(0或更大)的会话标识符,不允许0或更大值的过滤器将阻止实现 API调用。这些限制还可以帮助客户端用户获得增强的网络元件性能,因为具有高性能成本 的API函数可以被限制。因此,可以为网络元件动态添加此类过滤器以锁定不想要的SDN API访问。
[0042]所提供的另一技术是监视和记录/记载在给定网络元件处接收到的所有API调用。 单个API调用可以被证实并且不会造成安全风险,但是单个有效的API调用的某些组合和排 序可能一起造成威胁是有可能的。例如,以特定顺序接收的三个API调用可能导致网络元件 关闭或软件崩溃。因此,过滤器可能不只需要监控进入的API调用,还需要监控接收到的API 调用的历史,以识别造成潜在威胁的序列。如果最后的API调用以已知的威胁序列被接收, 则最后的API调用可以被丢弃,即相关联的API函数不被执行。威胁序列中的一个或多个API 调用可以被类似地丢弃。
[0043]还有可能是下述情况,给定的一系列API调用未必构成威胁,但当该系列API调用 的参数具有给定值或已知范围的值时可能构成威胁。虽然具有给定参数的这些API调用通 常可能不会令人担忧,但是如果按给定序列进行调用,则可能发生崩溃。因此,过滤器可以 定义可能造成安全风险的API调用序列和相关联的参数值。例如,过滤器可以要求如果特定 序列的三个API调用被接收,其中第二个调用具有特定的参数值,并且第三个调用具有特定 范围的参数值,则这三个API调用中的一个或多个调用可以被丢弃。
[0044]图4示出被配置为执行本文提出的技术的物理网络元件(例如,元件115(a)_l 15 (c)、130和115(f))的示例性框图。网络元件400包括多个网络端口405、网络处理器专用集 成电路(ASIC)单元410、处理器415和存储器420以及其他组件。端口 405被配置为接收网络 通信(例如,分组)和发送网络通信。端口被耦合于网络处理器ASIC 410。网络处理器ASIC 410使得能够在网络中转发由网络元件400接收到的分组。例如,当网络元件400在第一端口 处接收分组时,网络处理器ASIC 410确定分组应该在其上被转发至网络中的第二端口。也 就是说,如果在第一端口处接收到来自服务器1的分组,则网络处理器ASIC 410可以确定将 该分组转发到第二端口,该第二端口可能服务服务器2。
[0045]网络处理器ASIC 410被耦合于处理器415。例如,处理器415是被配置为执行用于 实现如上文所述的网络元件设备400的各种操作和任务的程序逻辑指令(例如,软件)的微 处理器或微控制器。处理器415的功能可以由在一个或多个有形计算机可读存储介质或设 备(例如,存储设备,光盘、数字视频光盘、闪速存储器驱动等,以及嵌入式逻辑,诸如ASIC、 数字信号处理器指令、由处理器执行的软件等)中编码的逻辑实现。
[0046] 存储器420可以包括只读存储器(R0M)、随机访问存储器(RAM)、磁盘存储介质设 备、光存储介质设备、闪速存储器设备、电的、光的、或其他物理/有形(非暂态)的存储器存 储设备。存储器420存储API过滤器425、过滤处理逻辑430、以及SDN API 135的数据/信息 和软件指令,当由处理器415执行时,它们都包含用于实现本文提出的技术的指令。SDN API 135可以与端口 405交互以发送和接收数据,并且可以接收可能使网络元件中的相关联的 API函数被执行的API调用。因此,一般来说,存储器420可以包括编码有包括计算机可执行 指令的软件的一个或多个计算机可读存储器介质(例如,存储器存储设备),并且当软件被 (例如,由处理器415)执行时,它可操作来执行本文所述的针对过滤器425和过滤器处理逻 辑430的技术。此外,存储器420可以存储针对虚拟交换机115(d)和虚拟路由器115(e)的虚 拟机的指令。进而每一个虚拟网络元件(例如,虚拟交换机115(d)和虚拟路由器115(e))可 以具有在它们的存储器存储中的它自己的API过滤器425和过滤处理逻辑430。
[0047] API过滤器425、过滤器处理逻辑430、以及SDN API 135可以采用各种形式中的任 意形式,例如,固定逻辑或可编程的逻辑(例如,由处理器执行的软件/计算机指令),以便于 被编码在一个或多个计算机可读存储介质或存储设备中用于执行。处理器415可以是包括 固定数字逻辑或其组合的ASIC。
[0048] 因此,提供了支持SDN架构并且允许在数小时内而非数月内部署API函数修复的解 决方案。这通过避免加快固件修复来将供应商的成本降至最低,并且允许网络运营商快速 地保护他们的环境。输入验证可以与处理协调发生,并且不要求类似于反病毒(AV)引擎的 单独监视器。过滤器可以在网络元件持续地运行和提供服务的同时被动态加载,而不需要 像传统安全更新要求那样重启网络元件。此外,这种解决方案不要求添加或插入新的可执 行函数。也就是说,不需要加载运行的代码,不需要改变网络元件的源代码,也不需要加载 新的网络元件的固件映像。此外,网络运营商/用户/顾客可以选择应用哪些过滤器,并且可 以根据每个网络元件或者每个网络元件类型来应用它们。每一个过滤器可以被严格地定制 为解决特定的缺点和安全漏洞。此外,首先可以应用具有最低计算成本的过滤器,接下来应 用具有较高计算成本的过滤器。因此,从存储器、CPU利用和处理时间的角度来看,这种解 决方案的效率更高。
[0049] 总之,提供了一种方法,包括:动态地加载验证跨网络元件中的应用程序接口 (API)边界的数据的一个或多个过滤器,以使得使用一个或多个过滤器不需要重启网络元 件;接收针对API函数的API调用,其中,API调用包含与API函数相关联的一个或多个参数 值;使用一个或多个过滤器来验证参数;如果确定一个或多个过滤器证实API函数的参数, 则使用这些参数值执行API函数;以及如果确定一个或多个过滤器未证实API函数的参数, 则中止API函数的执行。
[0050] 还提供了一种装置,包括:多个网络端口;被耦合于多个网络端口的网络处理器单 元;以及被耦合于网络处理器单元的处理器。该处理器被配置为执行以下操作:动态地加载 验证跨应用程序接口(API)边界的数据的一个或多个过滤器,以使得使用一个或多个过滤 器不需要重启网络元件;接收针对API函数的API调用,其中,API调用包含与API函数相关联 的一个或多个参数值;使用验证穿过网络元件的API边界的数据的一个或多个过滤器来验 证参数;如果确定一个或多个过滤器证实API函数的参数或者没有相关联的过滤器,则利用 这些参数值执行API函数;以及如果确定一个或多个过滤器未证实API函数的参数,则中止 API函数的执行。
[0051] 提供了一种编码有包括计算机可执行指令的计算机可读存储介质,并且当软件被 执行时能操作来执行以下操作:动态地加载验证跨应用程序接口(API)边界的数据的一个 或多个过滤器,以使得使用一个或多个过滤器不需要重启网络元件;接收针对API函数的 API调用,其中,API调用包含与API函数相关联的一个或多个参数值;使用验证穿过网络元 件的API边界的数据的一个或多个过滤器来验证这些参数;如果确定一个或多个过滤器证 实API函数的参数或者没有相关联的过滤器,则使用参数值执行API函数;以及如果确定一 个或多个过滤器未证实API函数的参数,则中止API函数的执行。
[0052] 虽然本文所述的技术被体现在一个或多个示例中,但是并非意图受限于所示细 节,因为在权利要求的等同物的范围内可以对其进行各种修改和结构性变化。因此,应该理 解所附权利要求可以由权利要求书所提出的内容进行更广义的解释。
【主权项】
1. 一种方法,包括: 在网络元件中动态地加载验证跨应用程序接口(API)边界的数据的一个或多个过滤 器,以使得使用所述一个或多个过滤器不需要重启所述网络元件; 接收针对API函数的API调用,其中,所述API调用包含与所述API函数相关联的一个或 多个参数值; 使用所述一个或多个过滤器来验证这些参数; 如果确定所述一个或多个过滤器证实所述API函数的所述参数,则使用所述参数值执 行所述API函数;以及 如果确定所述一个或多个过滤器未证实所述API函数的所述参数,则中止所述API函数 的执行。2. 根据权利要求1所述的方法,还包括:向用户呈现与加载所述一个或多个过滤器相关 联的性能成本数据; 从所述用户接收针对是否加载所述一个或多个过滤器的确认;以及仅根据是否从所述 用户接收到确认来加载所述一个或多个过滤器。3. 根据权利要求1所述的方法,还包括: 响应于接收到所述API调用,应用一个或多个过滤器来识别所述API调用中的畸形数 据; 响应于确定在所述API调用中不存在畸形数据,解析所述API调用以确定所述参数值。4. 根据权利要求3所述的方法,还包括: 解析所述API调用以确定授权值;以及 应用一个或多个过滤器来识别恶意授权值。5. 根据权利要求1所述的方法,其中,对所述一个或多个过滤器的加载由软件定义网络 控制器发起以将所述一个或多个过滤器下载至所述网络元件。6. 根据权利要求1所述的方法,其中,所述一个或多个过滤器包括正则表达式黑名单过 滤器和正则表达式白名单过滤器中的至少一者。7. 根据权利要求1所述的方法,还包括: 监视多个API调用;以及 响应于在所述多个API调用中识别出在所述一个或多个过滤器中定义的造成安全风险 的序列,从所述多个API调用中丢弃一个或多个API调用。8. 根据权利要求1所述的方法,其中,验证所述API调用还包括: 如果确定存在与所述API函数相关联的一个或多个过滤器,则确定是否存在与所述一 个或多个参数相关联的一个或多个过滤器;以及 如果确定存在与所述一个或多个参数相关联的一个或多个过滤器,则使用这些相关联 的一个或多个过滤器来验证所述API参数。9. 根据权利要求1所述的方法,还包括: 接收针对所述网络元件的固件更新以修复与已经被加载到所述网络元件中的一个或 多个过滤器相关联的安全漏洞;以及 响应于接收到所述固件更新,移除与所述安全漏洞相关联的过滤器。10. -种装置,包括: 多个网络端口; 被耦合于所述多个网络端口的网络处理器单元; 被耦合于所述网络处理器单元的处理器,并且所述处理器被配置为执行以下各项操 作: 动态地加载验证跨应用程序接口(API)边界的数据的一个或多个过滤器,以使得使用 所述一个或多个过滤器不需要重启网络元件; 接收针对API函数的API调用,其中,所述API调用包含与所述API函数相关联的一个或 多个参数值; 使用验证穿过网络元件的API边界的数据的一个或多个过滤器来验证所述参数; 如果确定所述一个或多个过滤器证实所述API函数的所述参数或者没有相关联的过滤 器,则使用所述参数值执行所述API函数;以及 如果确定所述一个或多个过滤器未证实所述API函数的所述参数,则中止所述API函数 的执行。11. 根据权利要求10所述的装置,其中,所述处理器还被配置为执行以下操作: 向用户呈现与加载所述一个或多个过滤器相关联的性能成本数据; 从所述用户接收针对是否加载所述一个或多个过滤器的确认;以及 仅根据是否从所述用户接收到确认来加载所述一个或多个过滤器。12. 根据权利要求10所述的装置,其中,所述处理器还被配置为执行以下各项操作: 响应于接收到所述API调用,应用一个或多个过滤器来识别所述API调用中的畸形数 据; 响应于确定所述API调用中不存在畸形数据,解析所述API调用以确定所述参数值。13. 根据权利要求10所述的装置,其中,所述处理器还被配置为执行以下各项操作: 监视多个API调用;以及 响应于在所述多个API调用中识别出在所述一个或多个过滤器中定义的造成安全风险 的序列,从所述多个API调用中丢弃一个或多个API调用。14. 根据权利要求10所述的装置,其中,所述处理器还被配置为执行以下各项操作: 如果确定存在与所述API函数相关联的一个或多个过滤器,则确定是否存在与一个或 多个参数相关联的一个或多个过滤器;以及 如果确定存在与所述一个或多个参数相关联的一个或多个过滤器,则使用该相关联的 一个或多个过滤器来验证所述参数。15. 根据权利要求10所述的装置,其中,所述处理器还被配置为执行以下各项操作: 接收针对所述网络元件的固件更新以修复与已经被加载到所述网络元件中的过滤器 相关联的安全漏洞;以及 响应于接收到所述固件更新,移除与被修复的安全漏洞相关联的过滤器。16. -种被编码有包括计算机可执行指令的软件的计算机可读存储介质,并且当所述 软件被执行时能操作来执行以下各项操作: 动态地加载验证跨应用程序接口(API)边界的数据的一个或多个过滤器,以使得使用 所述一个或多个过滤器不需要重启网络元件; 接收针对API函数的API调用,其中,所述API调用包含与所述API函数相关联的一个或 多个参数值; 使用验证穿过网络元件的API边界的数据的一个或多个过滤器来验证所述参数; 如果确定所述一个或多个过滤器证实所述API函数的所述参数或者没有相关联的过滤 器,则使用所述参数值执行所述API函数;以及 如果确定所述一个或多个过滤器未证实所述API函数的所述参数,则中止所述API函数 的执行。17. 根据权利要求16所述的计算机可读存储介质,还包括能操作来执行以下各项操作 的指令: 向用户呈现与加载所述一个或多个过滤器相关联的性能成本数据; 从所述用户接收针对是否加载所述一个或多个过滤器的确认;以及 仅根据是否从所述用户接收到确认来加载所述一个或多个过滤器。18. 根据权利要求16所述的计算机可读存储介质,还包括能操作来执行以下各项操作 的指令: 响应于接收到所述API调用,应用一个或多个过滤器来识别所述API调用中的畸形数 据; 响应于确定所述API调用中不存在畸形数据,解析所述API调用以确定所述参数值。19. 根据权利要求16所述的计算机可读存储介质,还包括能操作来执行以下各项操作 的指令: 如果确定存在与所述API函数相关联的一个或多个过滤器,则确定是否存在与所述一 个或多个参数相关联的一个或多个过滤器;以及 如果确定存在与所述一个或多个参数相关联的一个或多个过滤器,则使用所述一个或 多个过滤器来验证所述API调用参数。20. 根据权利要求16所述的计算机可读存储介质,还包括能操作来执行以下各项操作 的指令: 监视多个API调用;以及 响应于在所述一个或多个过滤器中定义的所述多个API调用中识别到造成安全风险的 序列,从所述多个API调用中丢弃一个或多个API调用。
【文档编号】H04L12/24GK105934927SQ201580004391
【公开日】2016年9月7日
【申请日】2015年1月6日
【发明人】安东尼奥·马丁
【申请人】思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1