CN117609983A - Api调用方法、api调用装置、电子设备和存储介质 - Google Patents

Api调用方法、api调用装置、电子设备和存储介质 Download PDF

Info

Publication number
CN117609983A
CN117609983A CN202311508042.1A CN202311508042A CN117609983A CN 117609983 A CN117609983 A CN 117609983A CN 202311508042 A CN202311508042 A CN 202311508042A CN 117609983 A CN117609983 A CN 117609983A
Authority
CN
China
Prior art keywords
api
call
rules
response
api call
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
CN202311508042.1A
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.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
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 Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202311508042.1A priority Critical patent/CN117609983A/zh
Publication of CN117609983A publication Critical patent/CN117609983A/zh
Pending legal-status Critical Current

Links

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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Exchange Systems With Centralized Control (AREA)

Abstract

本发明构思的各种示例实施例提供了一种应用程序接口(API)调用方法、API调用装置、电子设备以及存储介质。所述API调用方法包括:响应于来自与API相关联的电子设备的操作系统OS的API调用请求,使用电子设备的处理电路从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制ioctl接口;使用所述处理电路来基于所述一个或更多个规则确定是否允许所述API调用请求;并且使用所述处理电路来基于所述确定的结果执行与所述API调用请求相应的所述API的调用。

Description

API调用方法、API调用装置、电子设备和存储介质
技术领域
本发明构思的各种示例实施例涉及计算机技术领域,更具体地讲,涉及一种减少和/或防止设备驱动程序被尝试触发安全漏洞的应用程序接口(API)滥用的API调用方法、API调用装置、电子设备以及/或者非暂时性计算机可读存储介质。
背景技术
随着计算机技术的发展,作为计算机组件之间的信息交互的桥梁的API被广泛使用。然而,由于API的调用的灵活性和开放性,使用API可能会存在一定的安全问题,例如,API滥用、API异常访问和/或针对API的安全攻击等。这些安全问题会导致设备出现异常和/或漏洞。
上述信息仅作为背景技术信息呈现,以帮助理解本发明构思的示例实施例。关于上述内容中的任何一个是否可作为关于本发明构思的示例实施例的现有技术适用,尚未进行承认。
发明内容
为了至少解决上述问题和/或缺点,本发明构思的各种示例实施例提供一种API调用方法、API调用装置、电子设备以及/或者非暂时性计算机可读存储介质。
根据本发明构思的至少一个示例实施例,提供了一种应用程序接口(API)调用方法,包括:响应于来自与API相关联的电子设备的操作系统OS的API调用请求,使用电子设备的处理电路从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制(ioctl)接口;使用所述处理电路来基于所述一个或更多个规则确定是否允许所述API调用请求;并且使用所述处理电路来基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
根据至少一个示例实施例,从规则集中确定与所述API相应的一个或更多个规则的步骤包括:基于所述API的基数从所述规则集中确定与所述API相应的一个或更多个规则。
根据至少一个示例实施例,所述规则集被包括在哈希表中;所述哈希表包括与所述API的基数相应的键,并且与所述键相应的一个或更多个值表示与所述API相应的所述一个或更多个规则;以及基于所述API的基数从规则集中确定与所述API相应的一个或更多个规则的步骤包括:基于所述键遍历包括在所述哈希表中的与所述API的基数相应的链表,以确定与所述API相应的所述一个或多个规则,其中,所述一个或更多个规则被包括在所述链表的一个或更多个节点中。
根据至少一个示例实施例,基于所述一个或更多个规则确定是否允许所述API调用请求的步骤包括:通过将与所述API相应的状态位图与所述一个或更多个规则进行比较来确定所述API是否被滥用。
根据至少一个示例实施例,确定是否允许所述API调用请求的步骤包括:将包括在与所述API相应的所述状态位图中的值与包括在所述一个或更多个规则中的每一个规则中的调用序列值进行比较;响应于所述一个或更多个规则包括和与所述API相应的所述状态位图的值相同的调用序列值,允许所述API调用请求;以及响应于所述一个或更多个规则不包括和与所述API相应的所述状态位图的值相同的调用序列值,禁止所述API调用请求。
根据至少一个示例实施例,所述API调用方法还包括:响应于执行了所述API的open函数以打开目标设备,使用所述处理电路从预先设置的多个规则集中确定与所述目标设备相应的所述规则集。
根据至少一个示例实施例,所述API调用方法还包括:响应于执行了所述API的open函数以打开目标设备,使用所述处理电路创建与所述API相应的状态位图,其中,所述状态位图包括与所述API相应的API调用记录和API调用结果;并且响应于执行所述API的调用,使用所述处理电路更新与所述API相应的所述状态位图。
根据至少一个示例实施例,更新所述状态位图的步骤包括响应于与所述API相应的所述状态位图中的第二位置为0进行以下步骤,其中,所述第二位置用于记录与所述API相应的所述API调用结果:响应于所述API的调用成功,将与所述API相应的所述状态位图中的第一位置更新为1,其中,第一位置用于记录与所述API相关联的所述API调用记录;以及响应于所述API的调用失败,将与所述API相应的所述状态位图中的所述第二位置更新为1,并且将所述第一位置更新为0。
根据本发明构思的至少一个示例实施例,提供了一种应用程序接口(API)调用装置,包括:处理电路,被配置为:响应于来自针对API的装置的操作系统的API调用请求,从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制(ioctl)接口;基于所述一个或更多个规则确定是否允许所述API调用请求;并且基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
根据至少一个示例实施例,所述处理电路被配置为通过以下操作来确定与所述API相应的所述一个或更多个规则:基于所述API的基数从所述规则集中确定与所述API相应的一个或更多个规则。
根据至少一个示例实施例,所述规则集被包括在哈希表中;所述哈希表包括与所述API的基数相应的键,并且与所述键相应的一个或更多个值表示与所述API相应的所述一个或更多个规则;以及所述处理电路还被配置为通过以下操作来确定与所述API相应的一个或更多个规则:基于所述键遍历包括在所述哈希表中的与所述API的基数相应的链表,以确定与所述API相应的所述一个或多个规则,其中,所述一个或更多个规则被包括在所述链表的一个或更多个节点中。
根据至少一个示例实施例,所述处理电路还被配置为通过以下操作来基于所述一个或更多个规则确定是否允许所述API调用请求:通过将与所述API相应的状态位图与所述一个或更多个规则进行比较来确定所述API是否被滥用。
根据至少一个示例实施例,所述处理电路还被配置为通过以下操作来确定是否允许所述API调用请求:将包括在与所述API相应的所述状态位图中的值与包括在所述一个或更多个规则中的每一个规则中的调用序列值进行比较;响应于所述一个或更多个规则包括和与所述API相应的所述状态位图的值相同的调用序列值,允许所述API调用请求;以及响应于所述一个或更多个规则不包括和与所述API相应的所述状态位图的值相同的调用序列值,禁止所述API调用请求。
根据至少一个示例实施例,所述处理电路还被配置为:响应于执行了所述API的open函数以打开目标设备,从预先设置的多个规则集中确定与所述目标设备相应的所述规则集。
根据至少一个示例实施例,所述处理电路还被配置为:响应于执行了所述API的open函数以打开目标设备,创建与所述API相应的状态位图,其中,所述状态位图包括与所述API相应的API调用记录和API调用结果;并且响应于执行所述API的调用,更新与所述API相应的所述状态位图。
根据至少一个示例实施例,所述处理电路还被配置为通过以下操作来更新与所述API相应的所述状态位图:响应于与所述API相应的所述状态位图中的第二位置为0进行以下操作,其中,所述第二位置用于记录与所述API相应的所述API调用结果:响应于所述API的调用成功,将与所述API相应的所述状态位图中的第一位置更新为1,其中,第一位置用于记录与所述API相关联的所述API调用记录;以及响应于所述API的调用失败,将与所述API相应的所述状态位图中的所述第二位置更新为1,并且将所述第一位置更新为0。
根据本发明构思的至少一个示例实施例,提供了一种电子设备,包括:至少一个存储计算机可执行指令的存储器,以及处理电路,被配置为运行所述计算机可执行指令以执行API调用方法。
根据本发明构思的至少一个示例实施例,提供了一种非暂时性计算机可读存储介质。计算机可读指令被存储在所述非暂时性计算机可读存储介质上,当所述计算机可读指令被至少一个处理器运行时,促使所述至少一个处理器执行以下操作:响应于来自针对API的装置的操作系统的API调用请求,从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制(ioctl)接口;基于所述一个或更多个规则确定是否允许所述API调用请求;并且基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
根据本发明构思的一些示例实施例的API调用方法、API调用装置、电子设备以及非暂时性计算机存储介质在一方面通过添加新的规则机制来使用简单的规则控制API调用,保证应用程序以正常的方式调用接口,从而减少和/或防止API滥用触发设备驱动程序的异常或安全漏洞(例如,零日(0day)安全漏洞),另一方面还能通过更新规则限制安全漏洞触发,保护设备驱动程序在研发人员彻底修复安全漏洞之前不受攻击,并且快速响应异常或安全漏洞(例如,0day安全漏洞)。
可从本发明构思的一个或更多个示例实施例获得的益处和/或优点可以不受上述益处和/或优点的限制,并且本发明构思的示例实施例所属技术领域的普通技术人员可从以下描述中清楚地理解其他未提及的益处和/或优点。
附图说明
通过以下结合附图的描述,本发明构思的一个或更多个示例实施例的上述和其他方面、特征和优点将更加明显,其中:
图1是示出根据本发明构思的至少一个示例实施例的API调用方法的流程图;
图2是示出根据本发明构思的至少一个示例实施例的规则的数据结构的示例的示图;
图3是示出根据本发明构思的至少一个示例实施例的规则集的数据结构的示例的示图;
图4是示出根据本发明构思的至少一个示例实施例的API状态位图的示例的示图;
图5是示出根据本发明构思的至少一个示例实施例的API调用方法的应用的示图;
图6是示出根据本发明构思的至少一个示例实施例的API调用装置的框图;以及
图7是示出根据本发明构思的至少一个示例实施例的电子设备的框图。
具体实施方式
下面将结合附图,对本发明构思的各种示例实施例中的技术方案进行清楚、完整地描述。
在本说明书中使用的术语“包括”或“包含”说明存在所陈述的特征、整体、步骤、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或更多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。应当理解,尽管使用术语“第一”、“第二”、“第三”等来描述各种信息,但所述信息不应受这些术语的限制。这些术语仅用于将一类信息与另一类信息区分开。例如,在不脱离本发明构思的示例实施例的范围的情况下,第一信息可被称为第二信息;并且类似地,第二信息也可被称为第一信息。如这里所使用的,根据上下文,术语“如果”可理解为表示“当……时”、“在……时”或“响应于……”。
此外,在本发明构思的一个或更多个示例实施例中出现的“若干项之中的至少一项”均表示包含“该若干项中的任意一项”、“该若干项中的任意多项的组合”、“该若干项的全体”这三类并列的情况。例如“包括A和B之中的至少一个”即包括如下三种并列的情况:(1)包括A;(2)包括B;(3)包括A和B。又例如“执行操作一和操作二之中的至少一个”,即表示如下三种并列的情况:(1)执行操作一;(2)执行操作二;(3)执行操作一和操作二。
在相关技术中,通常基于API的调用序列调用多个API,但这样的方式可能导致API滥用触发安全漏洞。由调用序列问题导致的API滥用触发安全漏洞的情况通常包括:(1)调用“A”API接口(例如,A接口)之前必须调用“B”API接口(例如,B接口)(例如,B接口依赖于A接口等),但如果在没有调用B接口的情况下直接调用A接口,则在调用A接口时触发安全漏洞;和/或(2)调用A接口之前必须成功调用B接口,即使是在多次调用B接口之后调用A接口的情况下,如果最后一次的B接口的调用失败,则在调用A接口时也触发安全漏洞。
对此,相关技术通常通过监测API调用或限制API的调用的方式来保护设备驱动程序。例如,监测API调用的方式包括:通过使用钩子函数在加载函数期间监测API调用的文件路径,如果与文件路径相应的设备驱动程序属于预先设置的驱动程序特征库中的驱动程序则拒绝加载请求,以及/或者通过使用钩子函数监测API的调用,对调用的参数进行分析来确定参数是否具有恶意特征和/或潜在的恶意特征。然而,监测调用的方式具有这样的缺陷:只能加载被配置为安全的设备驱动程序(例如,仅允许加载设备驱动程序的白名单或批准名单上的设备驱动程序等),以及/或者仅能针对单个API的参数和/或预设API的有限集合的参数进行分析(例如,不能分析较新的API的参数和/或不在API的预设列表上API的参数等)。例如,限制API调用(例如,调用等)的方式包括:利用分配给每一个API的队列来控制时间单元(例如,预设和/或配置的时间间隔)内的API的调用频率,以及/或者针对通信协议之间发送的所有消息建立状态机并将状态机之外的消息的API调用识别为滥用的API调用和/或潜在的滥用的API调用等。这种限制调用的方式存在仅考虑API的调用频率而无法防护多个API随机(和/或伪随机)调用的序列导致的潜在的滥用的缺陷,并且针对所有接口(例如,API)建立完备和/或令人满意的状态机在技术上难以实现。
综上,相关技术无法并且/或者不会从根本上解决由于多个API关联而产生API滥用问题,并且存在较多缺陷,诸如,仅通过限制API的访问控制权限来保护驱动程序的方式不能减少和/或防止有安全权限的用户受骗来利用和/或利用识别设备驱动程序中存在的安全漏洞;参数检查和调用频率检查仅针对单个API的滥用进行防御,无法防御由多个API之间相关联的情况下的随机API调用导致的滥用;使用状态机建立应用程序正常调用API的序列在技术实现上难以对驱动程序建立有限且完备的状态机等。
本发明构思的各种示例实施例考虑到相关技术存在的上述问题,提出在不限制对设备驱动程序的使用和/或减少对设备驱动程序的使用的限制的情况下利用较少的资源减少和/或防止API滥用的API调用方法、API调用装置、电子设备以及/或者非暂时性计算机可读存储介质。根据本发明构思的一些示例实施例的API调用方法、API调用装置、电子设备以及/或者非暂时性计算机可读存储介质在一方面通过添加新的规则机制来使用简单的规则控制API调用,另一方面还能通过更新规则限制安全漏洞触发,保护设备在研发人员彻底修复安全漏洞之前不受攻击。
下面将参照图1至图7来描述根据本发明构思的至少一个示例实施例的API调用方法、API调用装置、电子设备以及/或者非暂时性计算机可读存储介质。
根据本发明构思的至少一个示例实施例,API可包括用于管理输入/输出(Input/output,I/O)通道的I/O控制(ioctl)接口。注意的是,尽管在本发明构思的示例实施例中仅示出ioctl接口作为API,但示例实施例不限于此,API也可包括本领域普通技术人员将理解的其他具有类似功能和/或结构的接口。
图1是示出本发明构思的至少一个示例实施例的API调用方法的流程图。
参照图1,在操作S101,响应于针对API的调用请求,通过API调用装置(参见图6等)(诸如,计算设备等)从规则集中确定与所述API相应的一个或更多个API访问规则(例如,规则和/或访问规则等)。例如,根据本发明构思的至少一个示例实施例,通过在例如操作系统中添加与API访问相关的规则来限制对相关的接口的访问,如果API调用(例如,API访问)满足规则,则允许该API调用,其中,从与该API相应的规则集中确定用于限制的规则。
下面将具体描述根据本发明构思的各种示例实施例的API、规则(Rule)以及规则集(Rules Set)的配置。
根据本发明构思的至少一个示例实施例,API(和/或API函数)(例如,包括但不限于,ioctl命令和/或ioctl函数等)的数据结构可以是32位的整型,并且例如,可包括以下参数:8位的魔数(Magic Number)、9位的基数(Command Number)、2位的方向和/或13位或14位的数据类型,但示例实施例不限于此。
根据本发明构思的至少一个示例实施例,魔数可以是一个独特的数字和/或字符,其用于将一组API调用(例如,但不限于,ioctl接口)调用与其他API调用(例如,但不限于,ioctl接口)区分开。例如,可使用与设备(例如,硬件设备等)相应的设备编号作为魔数,例如,在这种情况下,一个规则集可与一个魔数相应,并且与目标设备相应的API的API命令均具有相同的魔数等。
根据本发明构思的至少一个示例实施例,基数可以是分配给每一个API(例如,但不限于,ioctl接口)的数字编号,其用于将同一组API内的API进行区分。也就是说,根据本发明构思的至少一个示例实施例的基数可被用作API的标识以进一步识别与该API相应的规则。因此,根据本发明构思的至少一个示例实施例,从规则集中确定与所述API相应的一个或更多个规则的步骤包括:基于所述API的基数从规则集中确定与所述API相应的一个或更多个规则。
例如,规则可例如被定义为:在相应的API(例如,后续的API命令,从属API命令等)在被调用前,必须存在已经被正常调用的特定API命令(例如,先前的API命令)。例如,在API命令为ioctl命令(或API为ioctl接口)的情况下,规则可被如下定义:
ioctl0:ioctl1&ioctl2&ioctl3&……ioctln
该定义可表示在执行ioctl0之前,必须成功执行ioctl(1~n),否则将不会执行与ioctl0相应的设备驱动代码,执行和/或直接执行返回操作等。尽管API命令示出为ioctl命令,但本发明构思的示例实施例不限于此。
作为示例,假设一个设备具有三个分别被表示为A接口、B接口和C接口的ioctl接口并且C接口是被保护的接口,则可针对C接口定义以下两种规则,但示例实施例不限于此:
(1)“与”规则:在执行C接口之前,必须成功执行规则中的所有其他接口(例如,A接口和B接口等)。在这种情况下,规则可被定义为C:A&B。
(2)“或”规则:在执行C接口之前,只需成功执行规则中的其他接口中的一个接口(例如,A接口或B接口等)。在这种情况下,规则可被定义为C:A,C:B。
例如,当直接执行VIDIOC_REQBUFS接口可触发安全漏洞时,以及当先成功执行VIDIOC_S_FMT接口的情况下执行VIDIOC_REQBUFS接口不会触发安全漏洞时,被保护的VIDIOC_REQBUFS接口的规则可例如被定义为:VIDIOC_REQBUFS:VIDIOC_S_FMT。
尽管本发明构思的示例实施例仅示出规则的定义包括“与”规则和“或”规则,但根据本发明构思的示例实施例的规则还可包括任何其他适用的规则。
根据本发明构思的至少一个示例实施例,(一个或更多个)规则可被配置和/或预先配置有一组调用序列值,并且可在规则集中被配置和/或预先配置。根据本发明构思的至少一个示例实施例的一条规则可通过4个无符号长整型来表示,例如,VIDIOC_QBUF接口的规则可被表示为图2中的数据结构,并且VIDIOC_QBUF接口的调用序列值可与图2中的数值相应,但示例实施例不限于此。
根据本发明构思的至少一个示例实施例,例如,但不限于,(一个或更多个)规则可基于安全漏洞观点验证(Proof of Concept,PoC)和/或接口等使用规范被确定和/或预先确定,例如,可通过对安全漏洞PoC进行分析等来确定和/或预先确定(一个或更多个)规则。
根据本发明构思的至少一个示例实施例,针对同一个设备的不同API的规则可属于一个规则集,当规则集被确定时,可从由规则集指示的一组规则中确定一个或更多个用于控制特定API的调用的规则。例如,根据本发明构思的至少一个示例实施例,所述规则集由哈希表来表示,其中,所述哈希表的键(Key)表示API的基数,所述哈希表的值(Value)表示规则,但不限于此。
作为示例,所述规则集被包括在哈希表中;所述哈希表包括与所述API的基数相应的键,并且与所述键相应的一个或更多个值表示与所述API相应的所述一个或更多个规则;以及基于所述API的基数从规则集中确定与所述API相应的一个或更多个规则的步骤包括:基于所述键遍历包括在所述哈希表中的与所述API的基数相应的链表,以确定与所述API相应的所述一个或多个规则,其中,所述一个或更多个规则被包括在所述链表的一个或更多个节点中。作为另一示例,基于所述API的基数从规则集中确定与所述API相应的一个或更多个规则的步骤包括:以所述API的基数为索引,将所述哈希表中的与所述基数相应的节点确定为与所述节点相应的链表的头节点;从所述头节点开始遍历所述链表以确定与该链表的一个或更多个节点相应的一个或更多个规则,但不限于此。
下面将结合图3对各种示例进行描述。图3是示出根据本发明构思的至少一个示例实施例的规则集的数据结构的示图。在图3中,假设VIDIOC_REQBUFS接口的基数为8,VIDIOC_QBUF接口的基数为15,但示例实施例不限于此。参照图3,基于VIDIOC_REQBUFS接口的基数为8,将与8相应的节点确定为一个链表的头节点,通过遍历该链表可确定两个链表节点,这两个链表节点分别表示规则1和规则3,但示例实施例不限于此。参照图3,基于VIDIOC_QBUF接口的基数为15,将与15相应的节点确定为一个链表的头节点,通过遍历该链表可确定一个链表节点,该链表节点与规则2相应,但不限于此。
也就是说,可基于与API相关联的键(其中,键是基于API的基数来确定的)确定一个头节点,并且所述一个或更多个规则可以是挂在该头节点后面的一个双向循环链表中的一个或更多个节点,但示例实施例不限于此。由于此时未知规则的数量或其他细节,因此,通过遍历该链表来确定和/或最终确定与该头节点和与头节点相应的API相应的所述一个或更多个规则。
此外,在遍历链表的处理期间,可存在头节点后没有后续的节点的情况。在这种情况下,没有针对当前的API配置任何规则,因此,无需执行API调用是否滥用的检测,可直接跳过后续的其他处理并直接执行所述API的调用。例如,参照图3,当特定API的基数为9时,由于在该节点下不存在链表,因此可认为针对该特定API不存在规则限制,可(例如,在无需进一步规则处理等的情况下)直接执行该特定API的调用。
返回图1,根据本发明构思的至少一个示例实施例,当执行open函数以打开将被API驱动的目标设备时,从预先设置的多个规则集中确定与所述目标设备相应的所述规则集,但不限于此。根据本发明构思的至少一个示例实施例,例如,但不限于,所述多个规则集可基于安全漏洞的PoC和/或接口使用规范被预先设置和/或配置,例如,可通过对安全漏洞PoC进行分析等来确定和/或预先确定规则集。
具体地,当应用程序打开目标设备时,执行open API函数,从预定义和/或预先设置的多个规则集之中确定与目标设备相应的规则集,并且将确定的规则集保存到针对目标设备创建的File结构体中等。这里,多个预先设置的规则集可以是预先确定的或预先配置的,但不限于此。例如,多个预先设置的规则集可被动态更新(例如,在运行时期间更新等),并且更新的多个预先设置的规则集可用于确定与目标设备相应的规则集。
根据本发明构思的至少一个示例实施例,例如,但不限于,可通过修改do_sys_open函数来添加用于执行初始化处理的接口Init以实现规则集的确定,其中,接口Init可针对每一个设备配置一个规则集并且可被用于寻找规则集,但不限于此。当执行open函数时,可从配置和/或预先配置的针对不同的设备的多个规则集之中确定与目标设备相应的规则集。
此外,根据本发明构思的至少一个示例实施例,可通过规则集指针(Rules SetPointer)的使用来实现包括在规则集中的一组规则的确定,例如,但不限于此,并且可通过修改File结构体来实现规则集的保存和/或存储。例如,当执行open函数时,将与确定的规则集相应的规则集指针加入File结构体中以供后续使用,其中,规则集指针可用于指向一组规则等。
根据本发明构思的至少一个示例实施例的API调用方法还包括:当执行open函数时,基于设备的节点字符串路径查找规则集。具体地,可针对不同设备的节点的字符串路径建立字典树,字典树的叶节点是与设备相应的规则集指针,但示例实施例不限于此。通过这样的方式可以提高加载规则集的效率。
根据本发明构思的至少一个示例实施例的API调用方法不会对用户使用该接口编程造成过多限制,并且在引入的开销可被控制在可接受和/或改进的程度内的情况下带来巨大的安全收益。
此外,由于根据本发明构思的至少一个示例实施例的API调用方法不直接对接口进行限制,而是仅对接口的调用进行限制,因此,设备驱动程序可以在安全的情况下被使用。
此外,由于根据本发明构思的至少一个示例实施例的API调用方法使用规则集来确定限制API滥用的规则,因此,可针对多个API之间相互依赖的调用进行限制,而不仅仅针对单个API进行限制等。
当所述一个或更多个规则被确定时,可执行API滥用的确定操作。
在操作S102,基于所述一个或更多个规则确定所述API是否被滥用。具体地,基于在操作S102确定的(一个或更多个)规则判断API是否被滥用,并且基于所述API是否被滥用的确定的结果确定是否允许执行API。
根据本发明构思的至少一个示例实施例,基于所述一个或更多个规则确定所述API是否被滥用的步骤包括:根据API状态位图(API Status Bitmap,ASB)与所述一个或更多个规则进行比较的结果来确定所述API是否被滥用。
下面将对根据本发明构思的至少一个示例实施例的API状态位图进行具体描述。
根据本发明构思的至少一个示例实施例的API调用方法还包括:当执行open函数以打开将被API驱动的目标设备时,创建用于记录API调用记录和API调用结果的API状态位图;响应于执行所述API的调用,更新所述API状态位图等。
例如,根据本发明构思的至少一个示例实施例的API状态位图的数据结构可类似于规则的数据结构,并且可被用于记录软件应用程序(例如,设备驱动程序、操作系统、计算机程序、应用程序等)对设备进行驱动操作时调用了哪些API(例如,ioctl接口等)以及API调用的结果,但不限于此。这里,API调用结果可包括调用成功和调用失败(例如,调用不成功等),其中,当成功执行了API调用时,API调用结果为成功,以及当执行了API调用但该调用由于其他原因(即,除了由根据本发明构思的至少一个示例实施例的规则限制的原因之外的原因,例如,格式不支持)而失败时,API调用结果为失败,等等。
具体地,根据本发明构思的至少一个示例实施例,当执行open函数以打开将被API驱动的目标设备时,可创建和/或生成一个初始的API状态位图,并且将创建和/或生成的初始的API状态位图保存到File结构体中(例如,可通过将API状态位图指针添加到File结构体中),在后续的API调用过程中,API状态位图被更新和/或不断被更新,因此,API状态位图可用于记录应用程序打开设备至关闭设备期间的全部API调用处理。
根据本发明构思的至少一个示例实施例,API状态位图可与规则的数据结构类似,其具有256位,可例如由2个长度为4的无符号长整型数组构成,其中,一个数组用于记录API的调用记录,另一个数组用于记录API调用的结果,但不限于此。这里,API状态位图的位数仅作为示例,本发明构思的示例实施例不限于此。图4是示出根据本发明构思的至少一个示例实施例的API状态位图的示例的示图。在图4中,以VIDIOC_S_FMT接口和VIDIOC_REQBUFS接口为例。
根据本发明构思的至少一个示例实施例,初始的API状态位图的值可全部为0,但不限于此。参照图4,图4的(a)中的API状态位图全部为0。
根据本发明构思的至少一个示例实施例,用于记录API调用记录的一个或更多个位置可被称为第一位置,其中,一个第一位置与一个API相应,但示例实施例不限于此。作为示例,当一个第一位置为0时,可表示与该第一位置相应的API未被调用,相反地,当一个第一位置为1时,可表示与该第一位置相应的API被调用,等等。
参照图4,每一个API状态位图的第一行可表示第一位置,但不限于此。参见图4中的(b),当调用VIDIOC_S_FMT接口时,与VIDIOC_S_FMT接口相应的第一位置为1,等等。参见图4中(c),当调用VIDIOC_REQBUFS接口时,与VIDIOC_REQBUFS接口相应的第一位置为1,等等。
类似地,根据本发明构思的至少一个示例实施例,用于记录API调用结果的一个或更多个位置可被称为第二位置,其中,一个第二位置与一个API相应,但示例实施例不限于此。作为示例,当一个第二位置为0时,可表示在与该第二位置相应的API被调用的情况下的该API的调用结果为成功和/或与该第二位置相应的API还没有被调用过,当一个第二位置为1时,可表示与该第二位置相应的API的调用结果为失败,但示例实施例不限于此。
参照图4,每一个API状态位图的第二行可表示第二位置,但不限于此。例如,参见图4中(d),当再次调用VIDIOC_S_FMT接口时引入一个不支持的格式而导致调用VIDIOC_S_FMT接口失败时,与VIDIOC_S_FMT接口相应的第二位置为1。此时,由于VIDIOC_S_FMT接口的调用出现失败,相应的第一位置改变为0。
根据上述处理,当API的调用的执行完成时,可对API状态位图进行更新。根据本发明构思的至少一个示例实施例,当所述API状态位图之中的与所述API相应的第二位置为0时执行更新步骤。也就是说,当与所述API相应的位置指示所述API曾被调用成功或者没有被调用过时,可以执行API状态位图的更新。
根据本发明构思的至少一个示例实施例,响应于所述API的调用成功,将所述API状态位图之中的与所述API相应的第一位置更新为1。在所述API的调用成功的情况下,由于之前已确定了相应的第二位置为0,此时无需对第二位置进行改变。
根据本发明构思的至少一个示例实施例,响应于所述API的调用失败,将所述第二位置更新为1,并且将所述第一位置更新为0。在所述API的调用失败的情况下,需要对第二位置进行改变,后续的处理根据第二位置即可确定曾调用所述API失败。
根据本发明构思的至少一个示例实施例,例如,可通过在vfs_ioctl命令中添加接口update以收集调用状态,来实现上述滥用确定的步骤,但不限于此。
根据本发明构思的至少一个示例实施例的API调用方法在实际应用时可针对每一次open函数产生描述符fd加锁,并且在API状态位图更新和滥用检测时的计算量足够小,因此,能够避免在并发场景下由互斥引发的性能问题。
根据本发明构思的至少一个示例实施例,当确定API是否被滥用时,可通过使用保存的API状态位图和相应的规则中的上述调用序列值来执行所述确定的步骤。
由于API状态位图记录了过去的API调用状态(例如,调用过哪些API以及API调用的结果),因此,可通过将API状态位图的记录的值与预设值进行比较来确定API是否被滥用。根据本发明构思的至少一个示例实施例,根据API状态位图与所述一个或更多个规则进行比较的结果来确定所述API是否被滥用的步骤包括:将所述API状态位图的值与所述一个或更多个规则之中的每一个规则中配置和/或预先配置的调用序列值进行比较;当所述一个或更多个规则中存在预先配置了与所述API状态位图的值相同的调用序列值的规则时,确定所述API没有被滥用;以及当所述一个或更多个规则中不存在配置和/或预先配置了与所述API状态位图的值相同的调用序列值的规则时,确定所述API被滥用。换句话说,当所有与API相应的规则均与API状态位图不一致时,确定API被滥用,等等。
具体地,可通过将API状态位图中的表示API调用记录的值与规则的调用序列值进行比较,例如,可通过将图4中示出的API状态位图的第一行的值与规则的调用序列值进行与操作,来确定规则是否与API状态位图一致,等等。
根据本发明构思的至少一个示例实施例,例如,可通过在vfs_ioctl命令中添加接口check来实现上述滥用确定的步骤,但不限于此。
像这样,仅通过对虚拟文件系统(Virtual File System,VFS)进行少量修改来保护设备,并且无需对设备驱动源码进行任何修改,在不影响原有的设备的功能的情况下防御例如Linux等设备驱动程序的API滥用,但示例实施例不限于此。
响应于确定所述API被滥用,可直接停止所述API的调用和/或相应的API的调用撤回(例如,当API为vfs_ioctl接口时,vfs_ioctl接口直接返回)。
返回图1,在操作S103,响应于确定所述API没有被滥用,执行所述API的调用。具体地,例如,当API为vfs_ioctl接口时,响应于确定vfs_ioctl接口没有被滥用,则由电子设备正常执行驱动的ioctl代码,等等。
当完成所有的API调用操作时,可通过执行close函数关闭设备。例如,但不限于,可通过执行close函数关闭设备,这时,如上所述的执行open函数时创建的File结构体被删除,相应地,保存在该File结构体中的规则集和API状态位图也被销毁,等等。
下面参照图5对根据本发明构思的至少一个示例实施例的API调用方法的应用的示例进行详细描述,但示例实施例不限于此。图5是示出根据本发明构思的至少一个示例实施例的API调用方法的应用的示图。以上参照图1至图4描述的细节均可适用于图5的至少一个示例实施例,为了避免重复,在此不再赘述,但示例实施例不限于此。
参照图5,在操作S501,open函数被执行以打开设备,并且识别和/或确定与设备相应的规则集,但不限于此。
在操作S502,由电子设备(和/或计算设备、API调用装置等)请求调用API,并且在操作S503,电子设备确定是否存在与API相应的一个或更多个规则。
基于在操作S503确定不存在相应的一个或更多个规则,即,没有对该API的调用的限制,电子设备进入操作S505执行和/或直接执行API的调用。
基于在操作S503确定存在相应的一个或更多个规则,在操作S504,电子设备确定API是否满足与所述API相应的所述一个或更多个规则,也就是说,如上所述基于规则确定API是否被滥用。
基于在操作S504确定API满足所述一个或更多个规则,即,确定和/或预定的规则允许执行API的调用,在操作S505,电子设备执行API的调用。
当电子设备执行API的调用时,在操作S506,电子设备更新API调用状态,也就是说,如上所述基于API的调用更新API状态位图。
当API调用状态被更新时,在操作S507,电子设备确定是否继续调用该API和/或调用其他API等。
此外,基于在操作S504确定API不满足所述一个或更多个规则,即,确定和/或预定的规则不允许(和/或禁止)执行API的调用,在操作S508,电子设备不执行API的调用。在这种情况下,应用程序直接返回并进入后续的操作S507,确定是否继续调用下一个API,等等。
基于在操作S507确定继续调用API,返回操作S502,电子设备重新发起API调用请求。
基于确定的结果,在操作S508不继续调用API,在操作S509,可关闭设备,等等。
由于在上文中已经参照各种示例实施例对图5的操作的细节进行了具体描述,在此不再赘述。
此外,在示例工程上对根据本发明构思的至少一个示例实施例的API调用方法进行了测试,测试结果表明,根据本发明构思的至少一个示例实施例的API调用方法可有效减少和/或防止攻击者以随机序列API滥用的方式触发安全漏洞,从而有效保护设备驱动程序和/或增加设备驱动程序的安全性,等等。
根据本发明构思的至少一个示例实施例的API调用方法,能够实现对嵌入式设备的驱动防护,有效抵御接口滥用对设备驱动程序的攻击,和/或避免了通过API滥用发掘安全漏洞,。
根据本发明构思的至少一个示例实施例的API调用方法,能够针对例如零日(0day)安全漏洞产生快速响应,因此可被用作系统升级,等等。通过更新规则限制安全漏洞的触发,例如,通过分析PoC中的API调用逻辑来更新API调用规则并制作升级包,能够使得在设备驱动程序研发人员、操作系统研发人员彻底修复安全漏洞前保护设备驱动程序不受攻击,等等。
根据本发明构思的至少一个示例实施例的API调用方法,仅使用和/或需要修改小部分内核文件系统代码即可保护产品设备,而无需修改产品设备驱动程序的任何源码,能够被方便快捷地应用到产品中。并且仅通过在操作系统中植入字符来加载防护功能,而无需对用户层开放任何接口,因此,不会产生新的与驱动相关的攻击面。
图6是示出根据本发明构思的至少一个示例实施例的API调用装置600的框图。
参照图6,API调用装置600包括:API规则确定模块601、API滥用确定模块602和/或API调用执行模块603。根据本发明构思的至少一个示例实施例,API包括输入/输出控制(ioctl)接口,但不限于此。根据一些示例实施例,API规则确定模块601、API滥用确定模块602和/或API调用执行模块603等中的一个或更多个可以被实现为处理电路。处理电路可包括包含逻辑电路的硬件或硬件电路;硬件/软件组合,诸如,执行软件和/或固件的处理器;或它们的组合。例如,处理电路更具体地可包括但不限于,中央处理器(CPU)、算术逻辑单元(ALU)、数字信号处理器、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等,但不限于此。
根据本发明构思的至少一个示例实施例,API规则确定模块601可被配置为响应于来自针对API的装置的操作系统的API调用请求,从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制(ioctl)接口,等等。
根据本发明构思的至少一个示例实施例,API滥用确定模块602可被配置为如上所述基于所述一个或更多个规则确定是否允许所述API调用请求。
根据本发明构思的至少一个示例实施例,API调用执行模块603可被配置为如上所述基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
根据本发明构思的至少一个示例实施例,API规则确定模块601被配置为通过以下操作来确定与所述API相应的所述一个或更多个规则:基于所述API的基数从所述规则集中确定与所述API相应的一个或更多个规则,等等。
根据本发明构思的至少一个示例实施例,所述规则集被包括在哈希表中;所述哈希表包括与所述API的基数相应的键,并且与所述键相应的一个或更多个值表示与所述API相应的所述一个或更多个规则,但示例实施例不限于此。根据本发明构思的至少一个示例实施例,API规则确定模块601可被配置为通过以下操作来确定与所述API相应的一个或更多个规则:基于所述键遍历包括在所述哈希表中的与所述API的基数相应的链表,以确定与所述API相应的所述一个或多个规则,其中,所述一个或更多个规则被包括在所述链表的一个或更多个节点中,但示例实施例不限于此。
根据本发明构思的至少一个示例实施例,API滥用确定模块602可被配置为通过以下操作来基于所述一个或更多个规则确定是否允许所述API调用请求:通过将与所述API相应的状态位图与所述一个或更多个规则进行比较来确定所述API是否被滥用,等等。
根据本发明构思的至少一个示例实施例,API滥用确定模块602可被配置为通过以下操作来确定是否允许所述API调用请求:将包括在与所述API相应的所述状态位图中的值与包括在所述一个或更多个规则中的每一个规则中的调用序列值进行比较;响应于所述一个或更多个规则包括和与所述API相应的所述状态位图的值相同的调用序列值,允许所述API调用请求;以及响应于所述一个或更多个规则不包括和与所述API相应的所述状态位图的值相同的调用序列值,禁止所述API调用请求,等等。
根据本发明构思的至少一个示例实施例,API调用装置600还可包括规则集确定模块等(在图6中未示出),并且规则集确定模块也可以被实现为处理电路和/或在处理电路中实现。规则集确定模块可被配置为:响应于执行了所述API的open函数以打开目标设备,从预先设置的多个规则集中确定与所述目标设备相应的所述规则集,等等。
根据本发明构思的至少一个示例实施例,API调用装置600还可包括API状态位图确定模块(在图6中未示出),但不限于此。API状态位图确定模块也可实现为处理电路和/或在处理电路中实现。API状态位图确定模块可被配置为:响应于执行了所述API的open函数以打开目标设备,创建与所述API相应的状态位图,其中,所述状态位图包括与所述API相应的API调用记录和API调用结果;并且响应于执行所述API的调用,更新与所述API相应的所述状态位图,等等。
根据本发明构思的至少一个示例实施例,API状态位图确定模块可被配置为通过以下操作来更新与所述API相应的所述状态位图:响应于与所述API相应的所述状态位图中的第二位置为0进行以下步骤,其中,所述第二位置用于记录与所述API相应的所述API调用结果:响应于所述API的调用成功,将与所述API相应的所述状态位图中的第一位置更新为1,其中,第一位置用于记录与所述API相关联的所述API调用记录;以及响应于所述API的调用失败,将与所述API相应的所述状态位图中的所述第二位置更新为1,并且将所述第一位置更新为0,等等。
关于一个或更多个示例实施例中的API调用装置600,其中各个模块执行操作的具体方式已经在上述相关方法的至少一个示例实施例中进行了详细描述,此处将不做详细阐述说明。
此外,应该理解,根据本发明构思的至少一个示例实施例的API调用装置600中的各个模块可被实现为由软件执行的硬件组件和/或软件组件。
图7是示出根据本发明构思的至少一个示例实施例的电子设备的框图。
参照图7,电子设备700可包括:至少一个处理器701和/或至少一个存储计算机可执行指令的存储器702,等等。所述计算机可执行指令(例如,计算机可读指令)在被所述至少一个处理器701运行时,促使所述至少一个处理器701执行上述API调用方法。根据一些示例实施例,至少一个处理器701和/或至少一个存储器702等中的一个或多个可以被实现为处理电路。处理电路可包括包含逻辑电路的硬件或硬件电路;硬件/软件组合,诸如,执行软件和/或固件的处理器;或它们的组合。例如,处理电路更具体地可包括但不限于,中央处理器(CPU)、算术逻辑单元(ALU)、数字信号处理器、微型计算机、现场可编程门阵列(FPGA)、片上系统(SoC)、可编程逻辑单元、微处理器、专用集成电路(ASIC)等,但不限于此。
作为示例,电子设备700可以是PC计算机、膝上型计算机、智能电话平板、个人数字助理、和/或其他能够执行上述计算机可读指令的装置。这里,电子设备700并非必须是单个的电子设备,还可以是任何能够单独或联合执行上述计算机可读指令(和/或计算机可读指令集)的装置和/或电路的集合体。电子设备700还可以是集成控制系统和/或系统管理器的一部分,或者可被配置为与本地和/或远程设备(例如,经由有线和/或无线传输)以接口互联的便携式电子设备。
在电子设备700中,处理器701可包括中央处理器(CPU)、图形处理器(GPU)、可编程逻辑装置、专用处理器系统、微控制器和/或微处理器,等等。作为示例而非限制,处理器701还可包括模拟处理器、数字处理器、微处理器、多核处理器、处理器阵列、网络处理器等。
处理器701可运行存储在存储器702中的计算机可读指令或程序代码,其中,存储器702还可以存储数据,等等。计算机可读指令和/或数据还可经由网络接口装置而通过网络被发送和/或接收,其中,网络接口装置可采用任何已知的传输协议。
存储器702可与处理器701集成为一体,例如,将RAM和/或闪存布置在集成电路微处理器等之内,但不限于此。此外,存储器702可包括独立的装置,诸如,外部盘驱动、存储阵列和/或任何数据库系统可使用的其他存储装置。存储器702和处理器701可在操作上进行结合,并且/或者可例如通过I/O端口、网络连接等互相通信,使得处理701能够读取存储在存储器702中的文件。
根据本发明构思的至少一个示例实施例,还可提供一种存储指令的非暂时性计算机可读存储介质,其中,当存储在所述非暂时性计算机可读存储介质中的计算机可读指令被至少一个处理器运行时,促使所述至少一个处理器执行上述API调用方法。
这里的非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器和/或计算机使得处理器和/或计算机能执行所述计算机程序,但示例实施例不限于此。上述非暂时性计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等设备中部署的环境中运行,此外,在至少一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器和/或计算机以分布式方式存储、访问和执行。
根据本发明构思的一个或多个示例实施例,还可提供一种计算机软件,该计算机软件中的计算机可读指令可由至少一个处理器执行以完成如上述示例实施例所述的API调用方法。
本领域技术人员在考虑说明书及实践这里发明构思的示例实施例的发明后,将容易想到本发明构思的其它示例实施例。本申请旨在涵盖本发明构思的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明构思的一般性原理并包括本技术领域中的公知常识或惯用技术手段。示例实施例的描述仅被视为示例,本发明构思的真正范围和精神由权利要求指出。
应当理解的是,本发明构思的示例实施例并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围的情况下进行各种修改和改变。本发明构思的范围仅由权利要求来限制。

Claims (11)

1.一种应用程序接口API调用方法,包括:
响应于来自与API相关联的电子设备的操作系统OS的API调用请求,使用电子设备的处理电路从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制ioctl接口;
使用所述处理电路来基于所述一个或更多个规则确定是否允许所述API调用请求;并且
使用所述处理电路来基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
2.根据权利要求1所述的API调用方法,其中,从规则集中确定与所述API相应的一个或更多个规则的步骤包括:
基于所述API的基数从所述规则集中确定与所述API相应的一个或更多个规则。
3.根据权利要求2所述的API调用方法,其中,所述规则集被包括在哈希表中;
所述哈希表包括与所述API的基数相应的键,并且与所述键相应的一个或更多个值表示与所述API相应的所述一个或更多个规则;以及
基于所述API的基数从规则集中确定与所述API相应的一个或更多个规则的步骤包括:
基于所述键遍历包括在所述哈希表中的与所述API的基数相应的链表,以确定与所述API相应的所述一个或多个规则,其中,所述一个或更多个规则被包括在所述链表的一个或更多个节点中。
4.根据权利要求1所述的API调用方法,其中,基于所述一个或更多个规则确定是否允许所述API调用请求的步骤包括:
通过将与所述API相应的状态位图与所述一个或更多个规则进行比较来确定所述API是否被滥用。
5.根据权利要求4所述的API调用方法,其中,确定是否允许所述API调用请求的步骤还包括:
将包括在与所述API相应的所述状态位图中的值与包括在所述一个或更多个规则中的每一个规则中的调用序列值进行比较;
响应于所述一个或更多个规则包括和与所述API相应的所述状态位图的值相同的调用序列值时,允许所述API调用请求;以及
响应于所述一个或更多个规则不包括和与所述API相应的所述状态位图的值相同的调用序列值时,禁止所述API调用请求。
6.根据权利要求1所述的API调用方法,还包括:
响应于执行了所述API的open函数以打开目标设备,使用所述处理电路从预先设置的多个规则集中确定与所述目标设备相应的所述规则集。
7.根据权利要求1所述的API调用方法,还包括:
响应于执行了所述API的open函数以打开目标设备,使用所述处理电路创建与所述API相应的状态位图,其中,所述状态位图包括与所述API相应的API调用记录和API调用结果;并且
响应于执行所述API的调用,使用所述处理电路更新与所述API相应的所述状态位图。
8.根据权利要求7所述的API调用方法,其中,更新所述状态位图的步骤包括响应于与所述API相应的所述状态位图中的第二位置为0进行以下步骤,其中,所述第二位置用于记录与所述API相应的所述API调用结果:
响应于所述API的调用成功,将与所述API相应的所述状态位图中的第一位置更新为1,其中,第一位置用于记录与所述API相关联的所述API调用记录;以及
响应于所述API的调用失败,将与所述API相应的所述状态位图中的所述第二位置更新为1,并且将所述第一位置更新为0。
9.一种应用程序接口API调用装置,包括:
处理电路,被配置为:
响应于来自针对API的装置的操作系统的API调用请求,从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制ioctl接口;
基于所述一个或更多个规则确定是否允许所述API调用请求;并且
基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
10.一种电子设备,包括:
至少一个存储计算机可执行指令的存储器,以及
处理电路,被配置为运行所述计算机可执行指令以执行如权利要求1所述的API调用方法。
11.一种非暂时性计算机可读存储介质,其中,计算机可读指令被存储在所述非暂时性计算机可读存储介质上,当所述计算机可读指令被至少一个处理器运行时,促使所述至少一个处理器执行以下操作:
响应于来自针对API的装置的操作系统的API调用请求,从规则集中确定与所述API相应的一个或更多个规则,其中,所述API包括输入/输出控制ioctl接口;
基于所述一个或更多个规则确定是否允许所述API调用请求;并且
基于所述确定的结果执行与所述API调用请求相应的所述API的调用。
CN202311508042.1A 2023-11-13 2023-11-13 Api调用方法、api调用装置、电子设备和存储介质 Pending CN117609983A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311508042.1A CN117609983A (zh) 2023-11-13 2023-11-13 Api调用方法、api调用装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311508042.1A CN117609983A (zh) 2023-11-13 2023-11-13 Api调用方法、api调用装置、电子设备和存储介质

Publications (1)

Publication Number Publication Date
CN117609983A true CN117609983A (zh) 2024-02-27

Family

ID=89945313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311508042.1A Pending CN117609983A (zh) 2023-11-13 2023-11-13 Api调用方法、api调用装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN117609983A (zh)

Similar Documents

Publication Publication Date Title
US11438159B2 (en) Security privilege escalation exploit detection and mitigation
US10242186B2 (en) System and method for detecting malicious code in address space of a process
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
US9081967B2 (en) System and method for protecting computers from software vulnerabilities
US9870474B2 (en) Detection of secure variable alteration in a computing device equipped with unified extensible firmware interface (UEFI)-compliant firmware
US9740864B2 (en) System and method for emulation of files using multiple images of the emulator state
KR102116573B1 (ko) 컴퓨터 보안 작동을 최적화하기 위한 동적 명성 표시자
US10142109B2 (en) Instantiating containers
US11170077B2 (en) Validating the integrity of application data using secure hardware enclaves
US20200210591A1 (en) System and method of forming a log when executing a file with vulnerabilities in a virtual machine
US10339307B2 (en) Intrusion detection system in a device comprising a first operating system and a second operating system
EP4293507A1 (en) Method and apparatus for launching application program on target platform
CN117609983A (zh) Api调用方法、api调用装置、电子设备和存储介质
US10110589B2 (en) Systems and methods for task access behavior based site security
EP3848835B1 (en) Systems and methods for protecting against unauthorized memory dump modification
CN116737526A (zh) 一种代码段动态度量方法、装置及电子设备
US20200244461A1 (en) Data Processing Method and Apparatus
US10809924B2 (en) Executable memory protection
US20240095363A1 (en) Method, device, and electronic apparatus for securely passing data
CN111159716B (zh) 一种安全保护方法及电子设备
EP3674940B1 (en) System and method of forming a log when executing a file with vulnerabilities in a virtual machine
US11853417B2 (en) Hardware device integrity validation using platform configuration values
KR102309695B1 (ko) 호스트 침입 탐지를 위한 파일 기반 제어방법 및 장치
EP4343593A1 (en) Method, device, and electronic apparatus for securely passing data
US20230177140A1 (en) Information processing device and determination method

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication