CN112596823B - 安全管控方法、装置及电子设备 - Google Patents

安全管控方法、装置及电子设备 Download PDF

Info

Publication number
CN112596823B
CN112596823B CN202011540565.0A CN202011540565A CN112596823B CN 112596823 B CN112596823 B CN 112596823B CN 202011540565 A CN202011540565 A CN 202011540565A CN 112596823 B CN112596823 B CN 112596823B
Authority
CN
China
Prior art keywords
managed
module
function module
api
controlled
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.)
Active
Application number
CN202011540565.0A
Other languages
English (en)
Other versions
CN112596823A (zh
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202011540565.0A priority Critical patent/CN112596823B/zh
Publication of CN112596823A publication Critical patent/CN112596823A/zh
Application granted granted Critical
Publication of CN112596823B publication Critical patent/CN112596823B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本说明书实施例提供一种安全管控方法、装置及电子设备,本实施例方案中,由于应用程序中被管控功能模块原本想要调用的被管控API,被替换为设定接口,因此,在应用程序运行过程中,被管控功能模块想要调用被管控API时会调用设定接口,由此,被管控功能模块想要调用被管控API的链路被链接至中心化管控模块,基于此,中心化管控模块可以通过目标权限数据确定被管控功能模块对所述被管控API的调用权限,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,本实施例可以有效地对被管控功能模块的行为进行安全管控。

Description

安全管控方法、装置及电子设备
技术领域
本说明书实施例涉及数据安全技术领域,尤其涉及安全管控方法、装置及电子设备。
背景技术
目前,APP(application,应用程序)的功能越来越丰富,APP内的功能模块越来越多,各功能模块可以通过调用接口API获取数据,这些接口API(Application ProgrammingInterface,应用程序接口)提供的数据可能会由于涉及用户隐私数据等原因带来安全问题,APP厂商都希望能对APP内各功能模块的对API的调用行为进行合理的管控。
发明内容
为克服相关技术中存在的问题,本说明书提供了安全管控方法、装置及电子设备。
根据本说明书实施例的第一方面,提供一种安全管控方法,用于对应用程序中的至少一个被管控功能模块进行安全管控,所述方法包括:
通过设定接口检测到所述被管控功能模块调用被管控API后,根据目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口;
根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
根据本说明书实施例的第二方面,提供一种安全管控装置,所述装置包括至少一个被管控功能模块和中心化管控模块,所述中心化管控模块用于:
通过设定接口检测到所述被管控功能模块调用被管控API后,根据目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口;
根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
根据本说明书实施例的第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述安全管控方法的实施例。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,由于应用程序中被管控功能模块原本想要调用的被管控API,被替换为设定接口,因此,在应用程序运行过程中,被管控功能模块想要调用被管控API时会调用设定接口,由此,被管控功能模块想要调用被管控API的链路被链接至中心化管控模块,基于此,中心化管控模块可以通过目标权限数据确定被管控功能模块对所述被管控API的调用权限,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,本实施例可以有效地对被管控功能模块的行为进行安全管控。
应当理解的是,以上中心化的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种安全管控装置的结构示意图。
图2A是本说明书根据一示例性实施例示出的一种安全管控方法的流程图。
图2B是本说明书根据一示例性实施例示出的一种安全管控方案的示意图。
图3是本说明书根据一示例性实施例示出的一种安全管控装置所在电子设备的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
数据安全、隐私安全已经不仅仅是设备所生产的数据(如GPS数据、设备名称、设备照片等数据),还有很多数据,如:用户在APP中的交易数据、个人数据等。伴随着APP越来越生态化,APP内的功能模块可以通过APP提供的接口功能获取到数据,因此,需要对APP内的功能模块的行为进行安全管控。
基于此,本实施例提供了一种安全管控方案,能够很好地防止APP内的功能模块出现隐私泄露行为,从而实现安全管控。如图1所示,图1是本说明书根据一示例性实施例示出的一种安全管控装置的结构示意图,所述客户端包括:至少一个被管控功能模块11和中心化管控模块12;所述中心化管控模块12提供有至少一个设定接口。
本说明书实施例的装置可以是应用程序,应用程序通常根据功能划分为多个功能模块,由于这些功能模块可能会有一些涉及安全的行为,例如调用一些可能涉及隐私数据的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的行为。接下来从中心化管控模块的角度阐述本实施例的安全管控方案。如图2A所示,是本说明书根据一示例性实施例示出的安全管控方法流程图的,该方法可应用于应用程序中的中心化管控模块中,用于对应用程序中的至少一个被管控功能模块进行安全管控,所述方法包括:
在步骤202中,通过设定接口检测到所述被管控功能模块调用被管控API后,根据目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口。
在步骤204中,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
通过设定接口,中心化管控模块能够知道被管控功能模块想要调用被管控API,中心化管控模块可以获到所述被管控功能模块此时的可能涉及隐私安全的、调用被管控API的行为,因此需要对被管控功能模块进行安全管控;本实施例通过目标权限数据来确定所述被管控功能模块对所述被管控API的调用权限,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,由此,实现了中心化管控模块对被管控功能模块的安全管理。
实际应用中,被管控功能模块的开发者,会将被管控功能模块的代码提交至应用程序对应的管理方,管理方会将被管控功能模块整合至应用程序中。在一些例子中,被管控功能模块原始调用的被管控API被替换为设定接口的具体实现方式可以有多种,例如可以是被管控功能模块的开发者根据应用程序管理方的要求,将原始调用的被管控API替换为设定接口;在另一些例子中,在有权限的情况下,可以是应用程序业务方对被管控功能模块原始调用的被管控API进行替换。
在其他例子中,为了提高处理效率,还可以是被管控功能模块整合至应用程序后,在所述应用程序的源代码在编译过程中将被管控API替换为对应的设定接口。编译是指利用编译程序从源语言编写的源程序产生目标程序的过程,具体是把高级语言变成计算机可以识别的二进制语言编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。应用程序的源代码在编译过程中,编译程序会不断汇集和反复查证出现在源程序中各种名字的属性和特征信息等有关信息。这些信息通常记录在一张或几张符号表中。在符号表中,源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其数据类型、作用域以及内存地址等。符号表的作用一般是收集符号属性以进行词法分析;或者是作为上下文语义的合法性检查的依据,以进行语法分析;或者是作为目标代码生成阶段地址分配的依据,以进行语义分析。而本实施例提出了一种利用符号表文件来实现编辑过程中对被管控API的替换。作为例子,被管控功能模块的原始代码中记录有被管控功能模块调用被管控API的地址,可以获取所述客户端的源代码在编译过程中产生的符号表文件,所述符号表文件记录有所述被管控功能模块原始调用的被管控API的地址;本实施例在所述符号表文件中将所述被管控功能模块原始调用的被管控API的地址替换为设定接口的地址。通过上述方式,可以实现被管控API的快速替换,也减少了对被管控功能模块开发者的干扰,提高了处理效率。
通过上述方式,可以发现被管控功能模块调用被管控API的行为进而实现对被管控功能模块的安全管控;本实施例中,根据目标权限数据确定所述被管控功能模块对所述被管控API的调用权限,其中,目标权限数据中可以记录有被管控功能模块对被管控API的调用权限,从而通过目标权限数据可以快速地确定被管控功能模块是否有对被管控API的调用权限,进而根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
在一些例子中,应用程序中可能涉及到多个被管控功能模块,目标权限数据可以记录有多个被管控功能模块的权限数据;当通过设定接口检测到被管控功能模块调用被管控API时,中心化管控模块需要识别出是哪个被管控功能模块想要调用被管控API,基于此,在通过设定接口检测到所述被管控功能模块调用被管控API时,获取所述被管控功能模块的模块标识,并通过所述模块标识从目标权限数据中查找所述被管控功能模块对应的权限数据。
由于应用程序中可能涉及到多个被管控功能模块,而各个被管控功能模块可能来源于不同的开发者,各开发者对被管控功能模块的模块标识的命名方式不同,为了更好地管理各个被管控功能模块,更加快速地查询到被管控功能模块的权限数据,本实施例中可以为各被管控功能模块配置模块标识,该模块标识可以在所述应用程序的源代码的编译过程中编译至所述被管控功能模块的宏定义中,使得所述设定接口被所述被管控模块调用时通过所述设定接口获取到所述被管控功能模块的模块标识。作为例子,以GCC(GNUCompiler Collection,GNU编译器套件)编译器为例,可以在编译时通过配置-D参数将模块标识编译至被管控功能模块的宏定义中,使得被管控模块在运行过程中输出的参数携带有模块标识,使得所述设定接口被所述被管控模块调用时通过所述设定接口获取到所述被管控功能模块的模块标识。
在一些例子中,可以根据需要灵活配置调用权限的实现方式,例如可以为调用权限设置类型,可选的,本实施例的被管控功能模块对被管控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的调用权限,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,本实施例可以有效地对被管控功能模块的行为进行安全管控。
接下来再通过一实施例进行说明。如图2B所示,是本说明书根据一示例性实施例示出的安全管控方案的示意图,该安全管控方案分为两个阶段:编译阶段和运行阶段:
(1)首先会在SDK编译前,设定被管控功能模块,例如,可以对不同的SDK工程进行区分,把第三方SDK、无人维护的SDK、目前正在维护的SDK进行区分。作为例子将第三方SDK、无人维护的SDK、目前正在维护的SDK均作为被管控功能模块。
其中,本实施例可以在服务端(即图中的Server Config Module)预先生成目标权限数据。可选的,目标权限数据可以记录有多个被管控功能模块的权限数据。目标权限数据可以由应用程序的管理方预先配置。在一些例子中,可以通过多种方式实现目标权限数据的生成过程。作为例子,可以包括:
a.服务端可以包括配置模块,通过该配置模块配置每一个SDK对应的参数。实际应用中,可以根据需要只为被管控功能模块进行配置以生成目标权限数据;也可以为应用程序的每个功能模块进行配置生成目标权限数据。
例如,首先标记每一个SDK对应的配置内容,其中配置的内容包含了分配给被管控功能模块的模块标识appid、权限property、以及该SDK对应的业务场景类型needSence三个字段。Appid用于标识每个SDK,property用于标记SDK是否属于第三方功能模块;预先配置多类业务场景的类型,每类业务场景关联有至少一个被管控API(即图中的隐私API),needSence用于确定当前模块对哪类业务场景具有调用权限。
b.服务端可以包括策略模块,用于根据配置模块的配置生成目标权限数据;作为例子,通过前述配置模块的配置,自动生成目标权限数据,可选的,可以采用白名单或黑名单等方式生成。目标权限数据中记录的数据表征了被管控模块对不同业务场景对应的被管控API的权限,记录的数据的形式可以根据需要灵活配置。
作为例子,可以预先配置多种业务场景,以业务场景SenceA至SenceZ为例,一个appid可以对应有多条权限记录,例如:
appid property needSence
0001 yes SenceA
0001 yes SenceB
0002 no SenceB
表格中示出了3条权限记录,前两条中,表示一个appid为0001的功能模块,其权限property为yes,表示该功能模块是一个第三方功能模块,也即是需要被管控的功能模块,needSence为SenceA和SenceB,即该功能模块,对业务场景SenceA与SenceB对应的被管控API具有调用权限。相应的可以确定,其他业务场景对应的被管控API未具有调用权限。
表格中第3条权限记录表示一个appid为0001的功能模块,其权限property为no,表示该功能模块并非一个第三方功能模块,可以是一个正常的功能模块,也可以是前述的无人维护的功能模块;以前述的无人维护的功能模块为例,其也作为被管控功能模块,对业务场景B对应的被管控API具有调用权限,相应的可以确定,其他业务场景对应的被管控API未具有调用权限。
本实施例以第三方功能模块和无人维护的功能模块作为被管控功能模块为例,对这两类功能模块配置了权限记录。而其他的正常的功能模块,在一些例子中,可以通过配置使其表示该功能模块具有对所有被管控API具有权限的记录。
根据上述目标权限数据的配置,可选的,还可以配置中心化管控模块判定被管控功能模块对被管控API的调用权限的规则数据,例如,若某appid的调用needSence与property均为YES,返回隐私API正常的数据,若其中一个为YES返回伪造的数据,若均为NO则返回调用失败。
(2)在SDK编译过程中,将每一个SDK对应的appid,通过GCC编译时-D参数,编译到SDK的宏定义中。
(3)在SDK编译过程中,将被管控API通过符号表替换的方式,替换为设定接口(即图中的框架隐私API),该设定接口为实现原被管控API的接口代理功能,被管控SDK实际想要调用被管控API时会调用该设定接口,通过被管控SDK对该设定接口的调用行为,可以获取到该被管控SDK模块的宏定义中的模块标识,并对被管控SDK想要调用被管控API的调用行为进行管控。
(4)编译完成,应用程序包打包完成后,可以根据前述的配置生成目标权限数据,目标权限数据具体可以是一配置文件,将可以将该配置文件与应用程序的标识进行关联,例如与应用程序的版本号进行关联。
(5)应用程序安装于用户的电子设备中,应用程序首次启动时,可以从服务端请求目标权限数据,在请求时可以携带应用程序的标识(如前APP版本号等),服务端根据版本号与配置文件的映射,返回配置文件给应用程序。
(6)APP运行过程中,当不同的SDK模块想要调用某个被管控API时,中心化管控模块(也即图中的隐私管控模块)可以通过设定接口检测到,中心化管控模块可以获取到appid,利用其想要调用的被管控API确定对应的业务场景类型,进而可以从配置文件中获取到具体的调用权限;
若对应appid:needSence=YES、property=YES,表示该功能模块为第三方功能模块,所调用的被管控API对应的业务场景该功能模块具有调用权限,可以返回正常的接口数据,则调用被管控API获取调用结果并返回。
若对应appid:needSence or property=YES,表示对应有伪造权限,获取对应的伪造结果返回给该功能模块。
若对应appid:needSence=NO、property=NO,表示该功能模块并非第三方功能模块,所调用的被管控API对应的业务场景该功能模块未具有调用权限,返回失败结果,不调用被管控API。
由上述实施例可见,由于应用程序中被管控功能模块原本想要调用的被管控API,被替换为设定接口,因此,在应用程序运行过程中,被管控功能模块想要调用被管控API时会调用设定接口,由此,被管控功能模块想要调用被管控API的链路被链接至中心化管控模块,基于此,中心化管控模块可以通过目标权限数据确定被管控功能模块对所述被管控API的调用权限,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,本实施例可以有效地对被管控功能模块的行为进行安全管控。本实施例方案没有了繁琐的配置,解决了复杂规则以及环境信息获取带来的性能损耗,管控视角采用功能模块的管控粒度,降低了安全评估的工作量,并且整套实现方案足够轻量化。本实施例方案注重从隐私能力上的阻断,可有效的实现对第三方SDK的调用行为的隔离。
与前述安全管控方法的实施例相对应,本说明书还提供了安全管控装置及其所应用的终端的实施例。
本说明书安全管控装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在安全管控的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书实施例安全管控装置所在电子设备的一种硬件结构图,除了图3所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中装置331所在的电子设备,通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
本实施例的安全管控装置包括至少一个被管控功能模块和中心化管控模块,所述中心化管控模块用于:
通过设定接口检测到所述被管控功能模块调用被管控API后,根据目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口;
根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
在一些例子中,所述被管控功能模块原始调用的被管控API,是在所述应用程序的源代码在编译过程中被替换的。
在一些例子中,通过如下方式将被管控功能模块原始调用的被管控API替换为所述设定接口:
获取所述应用程序的源代码在编译过程中产生的符号表文件,所述符号表文件记录有所述被管控功能模块原始调用的被管控API的地址;
在所述符号表文件中将所述被管控功能模块原始调用的被管控API的地址替换为所述设定接口的地址。
在一些例子中,在通过设定接口检测到所述被管控功能模块调用被管控API时,获取所述被管控功能模块的模块标识,并通过所述模块标识从目标权限数据中查找所述被管控功能模块对应的权限数据。
在一些例子中,所述模块标识在所述应用程序的源代码的编译过程中编译至所述被管控功能模块的宏定义中,使得所述设定接口被所述被管控模块调用时通过所述设定接口获取到所述被管控功能模块的模块标识。
在一些例子中,所述目标权限数据表征:所述被管控功能模块对各被管控API的调用权限类型。
在一些例子中,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,包括如下任一:
若确定所述被管控功能模块对应有调用权限,调用所述被管控API后调用结果返回给所述被管控功能模块;
若确定所述被管控功能模块对应有伪造权限,获取与所述被管控API对应的伪造结果返回给所述被管控功能模块;
若确定所述被管控功能模块未具有调用权限,将失败结果返回给所述被管控功能模块。
在一些例子中,所述目标权限数据是所述应用程序在电子设备中首次启动后从服务端获取的。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
相应的,本实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述安全管控方法的实施例。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (10)

1.一种安全管控方法,用于对应用程序中的至少一个被管控功能模块进行安全管控,所述方法应用于所述应用程序中的中心化管控模块,所述应用程序通过源代码编译得到、并且在编译过程中产生符号表文件以及将每个被管控功能模块的模块标识编译至宏定义中,以使所述被管控模块在运行过程中输出的参数携带对应的模块标识,所述源代码包括被管控功能模块的源代码,其中,所述符号表文件记录的被管控功能模块原始调用的被管控API的地址被替换为设定接口的地址;所述方法包括:
通过所述设定接口检测到所述被管控功能模块调用被管控API后,根据所述被管控功能模块的模块标识和目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口;
根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
2.根据权利要求1所述的方法,通过如下方式将被管控功能模块原始调用的被管控API替换为所述设定接口:
获取所述应用程序的源代码在编译过程中产生的符号表文件,所述符号表文件记录有所述被管控功能模块原始调用的被管控API的地址;
在所述符号表文件中将所述被管控功能模块原始调用的被管控API的地址替换为所述设定接口的地址。
3.根据权利要求2所述的方法,在通过设定接口检测到所述被管控功能模块调用被管控API时,获取所述被管控功能模块的模块标识,并通过所述模块标识从目标权限数据中查找所述被管控功能模块对应的权限数据。
4.根据权利要求3所述的方法,所述模块标识在所述应用程序的源代码的编译过程中编译至所述被管控功能模块的宏定义中,使得所述设定接口被所述被管控模块调用时通过所述设定接口获取到所述被管控功能模块的模块标识。
5.根据权利要求1所述的方法,所述目标权限数据表征:所述被管控功能模块对各被管控API的调用权限类型。
6.根据权利要求5所述的方法,根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块,包括如下任一:
若确定所述被管控功能模块对应有调用权限,调用所述被管控API后调用结果返回给所述被管控功能模块;
若确定所述被管控功能模块对应有伪造权限,获取与所述被管控API对应的伪造结果返回给所述被管控功能模块;
若确定所述被管控功能模块未具有调用权限,将失败结果返回给所述被管控功能模块。
7.根据权利要求5所述的方法,所述目标权限数据是所述应用程序在电子设备中首次启动后从服务端获取的。
8.根据权利要求1所述的方法,所述被管控API包括:用于获取操作系统数据的系统API,和/或用于获取业务数据的业务API。
9.一种安全管控装置,所述装置包括至少一个被管控功能模块和中心化管控模块,所述安全管控装置是通过源代码编译得到,并且在编译过程中产生符号表文件以及将每个被管控功能模块的模块标识编译至宏定义中,以使所述被管控模块在运行过程中输出的参数携带对应的模块标识,所述源代码包括被管控功能模块的源代码,其中,所述符号表文件记录的被管控功能模块原始调用的被管控API的地址被替换为设定接口的地址;所述中心化管控模块用于:
通过设定接口检测到所述被管控功能模块调用被管控API后,根据所述被管控功能模块的模块标识和目标权限数据确定所述被管控功能模块对所述被管控API的调用权限;其中,所述被管控功能模块原始调用的被管控API被替换为所述设定接口;
根据调用权限的确定结果,获取相应的调用结果返回给所述被管控功能模块。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至8任一所述的方法。
CN202011540565.0A 2020-12-23 2020-12-23 安全管控方法、装置及电子设备 Active CN112596823B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011540565.0A CN112596823B (zh) 2020-12-23 2020-12-23 安全管控方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011540565.0A CN112596823B (zh) 2020-12-23 2020-12-23 安全管控方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN112596823A CN112596823A (zh) 2021-04-02
CN112596823B true CN112596823B (zh) 2023-03-21

Family

ID=75200755

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011540565.0A Active CN112596823B (zh) 2020-12-23 2020-12-23 安全管控方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112596823B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032766B (zh) * 2021-05-26 2021-09-24 荣耀终端有限公司 应用权限管理的方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799493A (zh) * 2012-06-21 2012-11-28 北京伸得纬科技有限公司 一种对具有自我保护的目标进程实现拦截的方法
CN106528056A (zh) * 2015-09-09 2017-03-22 阿里巴巴集团控股有限公司 一种对系统功能的管控方法和装置
CN108614709A (zh) * 2016-11-29 2018-10-02 北京明朝万达科技股份有限公司 一种控制Android应用安全访问网络的方法及系统
CN108710801A (zh) * 2018-05-29 2018-10-26 北京迪诺益佳信息科技有限公司 一种移动应用动态加载代码的行为管控方法
WO2019148717A1 (zh) * 2018-02-05 2019-08-08 平安科技(深圳)有限公司 请求合法性的校验装置、方法及计算机可读存储介质
CN111914251A (zh) * 2020-07-03 2020-11-10 上海理想信息产业(集团)有限公司 一种基于混合控制技术的智能终端安全保护方法及系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9729506B2 (en) * 2014-08-22 2017-08-08 Shape Security, Inc. Application programming interface wall
CN105630491A (zh) * 2015-12-18 2016-06-01 Tcl集团股份有限公司 程序的功能变更方法及装置
CN106557691A (zh) * 2016-10-12 2017-04-05 北京奇虎科技有限公司 监控应用中的第三方sdk方法、装置和加固安装包的装置
CN108763921B (zh) * 2018-05-29 2019-04-02 北京迪诺益佳信息科技有限公司 一种应用软件和sdk管控的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799493A (zh) * 2012-06-21 2012-11-28 北京伸得纬科技有限公司 一种对具有自我保护的目标进程实现拦截的方法
CN106528056A (zh) * 2015-09-09 2017-03-22 阿里巴巴集团控股有限公司 一种对系统功能的管控方法和装置
CN108614709A (zh) * 2016-11-29 2018-10-02 北京明朝万达科技股份有限公司 一种控制Android应用安全访问网络的方法及系统
WO2019148717A1 (zh) * 2018-02-05 2019-08-08 平安科技(深圳)有限公司 请求合法性的校验装置、方法及计算机可读存储介质
CN108710801A (zh) * 2018-05-29 2018-10-26 北京迪诺益佳信息科技有限公司 一种移动应用动态加载代码的行为管控方法
CN111914251A (zh) * 2020-07-03 2020-11-10 上海理想信息产业(集团)有限公司 一种基于混合控制技术的智能终端安全保护方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
软件与网络安全研究综述;刘剑等;《软件学报》(第01期);全文 *

Also Published As

Publication number Publication date
CN112596823A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
CN109710384B (zh) 一种安全的Java智能合约解释执行引擎及方法
US9027075B2 (en) Enforcing security rules at runtime
US20020184486A1 (en) Automated program resource identification and association
US20160378989A1 (en) Apparatus and method for monitoring android platform-based application
US8141035B2 (en) Method for accessing internal states of objects in object oriented programming
CN110941528B (zh) 一种基于故障的日志埋点设置方法、装置及系统
CN110414261B (zh) 一种数据脱敏方法、装置、设备及可读存储介质
US7389495B2 (en) Framework to facilitate Java testing in a security constrained environment
CN110968437A (zh) 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
CN108614702B (zh) 字节码优化方法及装置
US11294791B2 (en) Code optimization for connected managed runtime environments
US20210103514A1 (en) Reusable test cases for identifiable patterns
CN113256296B (zh) 智能合约执行方法、系统、装置和存储介质
CN110427752A (zh) 一种沙箱监控应用程序的方法、移动终端及存储介质
CN112596823B (zh) 安全管控方法、装置及电子设备
CN111737697A (zh) 一种基于原子化功能的安全扫描系统及扫描方法
Riganelli et al. Controlling interactions with libraries in android apps through runtime enforcement
Shankar et al. A policy-based management framework for pervasive systems using axiomatized rule-actions
CN104573506A (zh) 基于虚拟机对进程行为实时监控的方法及装置
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN113031964B (zh) 一种大数据应用的管理方法、装置、设备及存储介质
CN115756424A (zh) 一种生成mvp代码的方法、装置及设备
CN116501596A (zh) 应用程序的测试方法及装置
CN105393216B (zh) 运行时内存调节
CN114968277A (zh) 母片烧录程序文件生成方法、装置、计算机设备和介质

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
GR01 Patent grant
GR01 Patent grant