一款用于检测系统完整性、api漏洞的api检测系统

4747 312 2023-07-17


本文讲了一款用于检测系统完整性、api漏洞的api检测系统

系统完整性检测API

系统特性

基于可信执行环境TEE提供系统完整性检测结果:在设备安全启动时,在TEE中评估检测系统完整性,可信度高,并动态评估系统完整性。API系统检测

系统完整性检测结果安全可信:系统完整性检测结果请求证书签名;服务端使用X.509数字证书对系统完整性检测结果签名,使用JWS格式回传给系统完整性检测API,签名结果不可篡改。

业务流程

  1. 您的App集成HMS Core SDK调用Safety Detect service。

  2. 请求TSMS服务器签名检测结果。

  3. 您的App请求自己服务检测结果。

典型场景

应用需要检测系统完整性时,调用系统完整性检测API,检测系统完整性是否被破坏,针对不安全设备采取相应的措施。api安全检测系统

应用开发

调用SysIntegrity API主要分为三个步骤:


  1. 获取nonce。在调用Safety Detect SysIntegrity API时,您必须传入一个nonce值。在检测结果中会包含这个nonce值,您可以通过校验这个nonce值来确定返回结果能够对应您的请求,并且没有被重放攻击。如果nonce值长度超出16-66字节范围,将导致调用失败,请参考下方注意说明内容。注意

    nonce值必须满足以下条件:

    • 推荐的做法是从发送到您的服务器的数据中派生nonce值。

    • 一个nonce值只能被使用一次。

    • nonce值必须为16至66字节之间。

  2. 请求Safety Detect SysIntegrity。

    Safety Detect SysIntegrity提供两个接口,调用只有参数上的不同,都需要传入的参数是nonce和APP ID。sysIntegrity(SysIntegrityRequest sysIntegrityRequest)接口还需要在SysIntegrityRequest中传入签名的验证方式,这个将和您获取的JWS的Header中alg一致。

    登录AppGallery Connect网站,点击“我的项目”。

    在项目列表中找到您的项目,在项目中点击需要配置签名证书指纹的应用。api接口检测系统

    在“项目设置 > 常规”页面的“应用”区域,可以查看应用的APP ID。

    JavaKotlin


    • nonce:上一小节我们获取的nonce值。

    • APP ID:您可以通过如下方式获取APP ID。

    1. private void invokeSysIntegrity() {

    2. SafetyDetectClient mClient = SafetyDetect.getClient(getActivity());

    3. // TODO(developer): Change the nonce generation to include your own, used once value,

    4. // ideally from your remote server.

    5. byte[] nonce = ("Sample" + System.currentTimeMillis()).getBytes();

    6. SysIntegrityRequest  sysintegrityrequest = new SysIntegrityRequest();

    7. sysintegrityrequest.setAppId("3*******");

    8. sysintegrityrequest.setNonce(nonce);

    9. sysintegrityrequest.setAlg(alg);

    10. Task task = mClient.sysIntegrity(sysintegrityrequest);

    11. task.addOnSuccessListener(new OnSuccessListener<SysIntegrityResp>() {

    12. @Override

    13. public void onSuccess(SysIntegrityResp response) {

    14. // Indicates communication with the service was successful.

    15. // Use response.getResult() to get the result data.

    16. String jwsStr = response.getResult();

    17. }

    18. }).addOnFailureListener(new OnFailureListener() {

    19. @Override

    20. public void onFailure(Exception e) {

    21. // An error occurred while communicating with the service.

    22. if (e instanceof ApiException) {

    23. // An error with the HMS API contains some

    24. // additional details.

    25. ApiException apiException = (ApiException) e;

    26. // You can retrieve the status code using

    27. // the apiException.getStatusCode() method.

    28. Log.e(TAG, "Error: " + SafetyDetectStatusCodes.getStatusCodeString(apiException.getStatusCode()) + ": " + apiException.getMessage());

    29. } else {

    30. // A different, unknown type of error occurred.

    31. Log.e(TAG, "ERROR:" + e.getMessage());

    32. }

    33. }

    34. });

    35. }

  3. 在您的服务器中验证检测结果。

    HMS Core帮助您将验证结果发送到华为服务器校验证书的准确性并将完成校验的结果通过SysIntegrityResp返回,使用此对象的getResult方法获取响应,格式为JSON WEB签名(JWS)。

    1. {

    2. "advice": "RESTORE_TO_FACTORY_ROM",

    3. "apkCertificateDigestSha256": ["gwpz0q/WtjtJZZK5lTXl74fI/8QAKGLAhdhlznKkLhQ="],

    4. "apkDigestSha256": "nBrInk2DLVQrgcQ1DXYnIUIMnjJ+mVo0lwUicF7OzJM=",

    5. "apkPackageName": "com.huawei.hms.safetydetectsample",

    6. "appId": "1*******",

    7. "basicIntegrity": false,

    8. "detail": ["root", "unlocked"],

    9. "nonce": "UjJScmEyNGZWbTV4YTJNZw==",

    10. "timestampMs": 1612683290520

    11. }

    12. 解析JWS,获取header、payload、signature。

    13. 从header中获取证书链,使用Huawei CBG Root CA证书对其进行验证。

    14. 校验证书链中的叶证书域名,域名:sysintegrity.platform.hicloud.com。

    15. 从signature中获取签名,校验其签名。

    16. 从payload中获取完整性验证结果,格式和样例摘录如下:


      当检测结果中basicIntegrity为false,您可以根据自身功能对安全的要求决定是否提醒用户。

一种API接口调用路径异常的检测方法及系统
公开时间:2022-04-19
本发明公开了一种API接口调用路径异常的检测方法及系统,具体涉及API安全技术领域,包括步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;步骤二、使用异常检测方法,找出异常的调用路径。本发明针对每个应用,从大量数据中抽取频繁调用路径,构成调用路径集合;对调用路径序列,使用n‑gram方法抽取特征,并使用异常检测算法,识别异常的调用路径;将预先得到的调用关系集合,用于调用路径的异常检测;持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。

技术领域

本发明涉及API安全技术领域,更具体地说,本发明涉及一种API接口调用路径异常的检测方法及系统。api快速检测系统

背景技术

应用程序编程接口(Application Programming Interface,API)是一些预先定义好的,用于提供特定服务的接口,应用通过API接口对外提供服务,用户通过API接口访问应用,获取服务。

用户在请求服务时,通常会发生多个接口的调用,接口的调用关系遵循业务逻辑的设计,部分接口之间的调用是有先后顺序的,先调用A接口,再调用B接口。但有些接口在开发时,开发者使用了简单易用的web开发框架,忽略了对用户权限的审查,导致接口存在未授权访问的漏洞,使得攻击者能够不遵循业务逻辑的调用顺序访问应用,造成数据泄漏的风险。

调用路径异常属于业务逻辑风险,传统方法难以检测到。现有的对API调用路径异常的检测方法,通常是根据业务逻辑接口文档,预先设定调用路径异常的告警规则,命中规则就认为是异常行为,进行告警。这种方法存在以下缺陷:1、需要对业务逻辑有详细的理解,耗费人工;2、规则不够灵活,只能检测到规则设定的异常行为。因此,针对API调用路径异常的检测,是本领域值得研究的问题。

发明内容

为了克服现有技术的上述缺陷,本发明的实施例提供一种API接口调用路径异常的检测方法及系统,本发明所要解决的技术问题是:如何解决现有技术中调用路径异常难以检测到的问题。

为实现上述目的,本发明提供如下技术方案:一种API接口调用路径异常的检测系统,整个系统说明如下:

步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;

步骤二、对当前的一批数据,使用异常检测方法,找出异常的调用路径;

步骤三、利用调用关系集合,对步骤二中的异常结果进行再次确认,对确认为异常的结果进行告警。api数据安全检测系统

本发明还包括一种API接口调用路径异常的检测方法,具体检测步骤如下所示:

S1、对每个应用,提取调用关系集合;

S1.1、数据提取:提取当前时间之前的一段时间的事件数据,并根据应用不同,对数据分组;

S1.2、数据预处理:对每组数据,从事件中提取相关字段,构成结构化数据记录;

S1.3、调用路径提取:利用关联分析算法,从大量的调用路径数据中,提取频繁调用路径;

S1.4、调用路径存储:将当前得到的调用关系集合,更新到数据库中;

S2、调用路径异常检测;

S2.1、数据提取:提取过去一段时间窗口内的数据,并以IP为主体,对调用路径按发生时间排序,提取API访问路径序列;

S2.2、特征提取:对每个主体的API访问路径序列,使用n-gram方法提取特征;

S2.3、特征向量化:对步骤S2.2中得到的n-gram特征,使用TF-IDF对特征向量化表示,每个主体表示为一维向量;

S2.4、异常检测:使用机器学习中的异常检测算法,对当前数据进行异常检测,得到异常的调用路径;

S3、异常行为确认;

S3.1、对每个异常结果,根据应用提取对应的调用关系集合;

S3.2、根据调用关系集合,对当前的异常调用路径序列,计算一个分值;

S3.3:若分值低于阈值,可认为是异常,产生一条异常告警。api检测系统是什么

在一个优选地实施方式中,所述步骤S1中每个应用提取调用关系集合方法为:采用离线系统,定时运行一次,利用关联分析算法,从用户的调用路径数据中提取频繁调用关系,添加到调用关系集合。

在一个优选地实施方式中,所述步骤S1.2中数据预处理以IP作为主体,对多条事件的数据进行聚合操作,得到每个主体的API访问路径。

在一个优选地实施方式中,所述步骤S1.3中调用路径提取时,考虑访问API的前后关系,并设定支持度阈值,出现次数大于支持度阈值的路径,可认为是频繁路径,将其添加到调用关系集合中。

在一个优选地实施方式中,所述步骤S2中调用路径异常检测判定方法:一个窗口内的数据,大量是正常的,少量是异常的,并且,异常的行为与正常行为有明显不同,基于这两个特点,使用异常检测算法寻找异常的调用路径。

在一个优选地实施方式中,所述步骤S3中异常行为确认利用调用关系集合对调用路径异常检测的结果进行确认,降低误报率。

在一个优选地实施方式中,所述步骤S3.2中异常调用路径序列分值的计算具体步骤:对调用路径序列中的每个子序列,出现在调用关系集合中的给出一个分值1,未出现在调用关系集合中的给出一个分值2,对当前调用路径序列计算综合得分。

本发明的技术效果和优点:

本发明针对每个应用,从大量数据中抽取频繁调用路径,构成调用路径集合;对调用路径序列,使用n-gram方法抽取特征,并使用异常检测算法,识别异常的调用路径;将预先得到的调用关系集合,用于调用路径的异常检测;持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。

附图说明

图1为本发明的整体框架示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种API接口调用路径异常的检测系统,整个系统说明如下:

步骤一、持续地从大量的正常用户的访问路径中提取API的调用关系,不断扩展调用关系集合;

步骤二、对当前的一批数据,使用异常检测方法,找出异常的调用路径;

步骤三、利用调用关系集合,对步骤二中的异常结果进行再次确认,对确认为异常的结果进行告警。

如图1所示的,实施方式具体为:本发明还包括一种API接口调用路径异常的检测方法,具体检测步骤如下所示:

S1、对每个应用,提取调用关系集合:采用离线系统,定时运行一次,利用关联分析算法,从用户的调用路径数据中提取频繁调用关系,添加到调用关系集合;

S1.1、数据提取:提取当前时间之前的一段时间的事件数据,并根据应用不同,对数据分组;

S1.2、数据预处理:对每组数据,从事件中提取相关字段,构成结构化数据记录;以IP作为主体,对多条事件的数据进行聚合操作,得到每个主体的API访问路径;

S1.3、调用路径提取:利用关联分析算法,从大量的调用路径数据中,提取频繁调用路径;考虑访问API的前后关系,并设定支持度阈值,出现次数大于支持度阈值的路径,可认为是频繁路径,将其添加到调用关系集合中;

S1.4、调用路径存储:将当前得到的调用关系集合,更新到数据库中;

S2、调用路径异常检测:一个窗口内的数据,大量是正常的,少量是异常的,并且,异常的行为与正常行为有明显不同,基于这两个特点,使用异常检测算法寻找异常的调用路径;

S2.1、数据提取:提取过去一段时间窗口内的数据,并以IP为主体,对调用路径按发生时间排序,提取API访问路径序列;

S2.2、特征提取:对每个主体的API访问路径序列,使用n-gram方法提取特征;

S2.3、特征向量化:对步骤S2.2中得到的n-gram特征,使用TF-IDF对特征向量化表示,每个主体表示为一维向量;

S2.4、异常检测:使用机器学习中的异常检测算法,对当前数据进行异常检测,得到异常的调用路径;

S3、异常行为确认:利用调用关系集合对调用路径异常检测的结果进行确认,降低误报率;

S3.1、对每个异常结果,根据应用提取对应的调用关系集合;

S3.2、根据调用关系集合,对当前的异常调用路径序列,计算一个分值;具体地,对调用路径序列中的每个子序列,出现在调用关系集合中的给出一个分值1,未出现在调用关系集合中的给出一个分值2,对当前调用路径序列计算综合得分;

S3.3:若分值低于阈值,可认为是异常,产生一条异常告警。

本发明工作原理:

参照说明书附图1,用户访问应用时,访问路径多样,其中有些接口在业务逻辑上是相关的,这些接口之间的调用关系是确定的;如果一条调用路径序列中存在不符合调用关系的行为,就认为是异常调用;当调用路径出现异常时,可能存在某种风险行为,

正常的访问路径,在特定接口的调用顺序上存在一致性或相似性,而异常的访问路径不符合这种性质;可根据正常访问路径与异常访问路径的不同,利用调用路径的上下文信息,通过对上下文的分析,发现API调用路径上的异常行为,本发明提出一种API调用路径异常的检测方法及系统;首先,持续地从大量正常的调用路径数据中抽取调用路径关系,构建调用关系集合,然后使用机器学习方法,检测异常的调用路径,并结合调用关系集合对异常调用路径进行再次确认,降低误报。

最后应说明的几点是:首先,在本申请的描述中,需要说明的是,除非另有规定和限定,术语“安装”、“相连”、“连接”应做广义理解,可以是机械连接或电连接,也可以是两个元件内部的连通,可以是直接相连,“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变,则相对位置关系可能发生改变;

其次:本发明公开实施例附图中,只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计,在不冲突情况下,本发明同一实施例及不同实施例可以相互组合;

最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

api检测是指什么意思

API 监测是指对应用程序编程接口(API)的实时监测和跟踪。API 监测的目的是确保 API 的可用性、性能和功能正常运行,以满足应用程序的需求,并及时发现和解决潜在的问题。

API 监测通常包括以下方面:

  1. 可用性监测:检查 API 是否可正常访问和使用。通过定期发送请求并验证响应状态码,可以监测 API 的可用性。如果 API 无法访问或响应时间超过预期,可能意味着存在问题。

  2. 性能监测:衡量 API 的响应时间、吞吐量和延迟等指标。通过监测这些性能指标,可以评估 API 的性能,并及时发现性能瓶颈和优化机会。

  3. 功能监测:验证 API 的功能是否按预期工作。这包括确保 API 返回正确的数据、执行正确的操作和处理正确的错误情况。功能监测可以通过执行预定义的测试用例来实现。

  4. 异常监测:检测 API 的异常情况和错误。这可以包括验证 API 返回的错误码、错误消息和异常处理机制。异常监测可以帮助识别潜在的安全漏洞和错误处理问题。

  5. 监控报警:设置报警规则,以便在 API 出现异常或性能下降时及时通知相关团队。这样可以快速响应问题并采取适当的措施。

API监测可以通过使用专门的监测工具、日志分析、自定义脚本或第三方服务来实现。它对于确保应用程序的稳定性、可靠性和性能至关重要,特别是在高流量、高并发或关键业务场景下。

Eolink Apikit 是一个免费的 API 工具

提供API 异常监控:多节点监控,线上产品支持国内华南、华东、华北等主要地区监控,私有云产品可根据需要任意部署监控节点。丰富的告警规则,支持自定义告警规则,支持聚合多次告警信息,通过 API、邮件、钉钉、微信等方式及时通知相关运维人员。详细的异常报告支持操作数据库,实现增删查改和验证数据,提供详细的测试报告,可在线查看和下载分享;提供详细的测试报告,包括返回头部、返回结果、性能时间分析等内容;强大的自定义请求校验与响应,便于前后端对接和集成测试等场景。

image.png

上文就是小编整理的一款用于检测系统完整性、api漏洞的api检测系统

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)API接口文档平台软件分析、比较及推荐。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringMVC的简单传值(实现代码)
下一篇:浅析java中stringBuilder的用法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~