pinpoint

对某地铁app的一次静态扫描报告分析

心不动则不痛 提交于 2020-02-25 18:40:30
本次分析从华为应用中心(app-store)下载的某地铁app 分析工具使用了源伞科技Pinpoint 扫描结果 共计找到 122 个致命问题, 148 个严重问题 375 个中等问题以及 11537 个建议改进问题。其中包括 444 个可能引起崩溃或异常的错误, 277 个安全隐私类问题以及 897 个执行效率低下问题。 现举例如下: 安全隐私高危漏洞: 漏洞 路径注入--该漏洞可以使得恶意攻击者覆盖任意文件 位置 yedemo/zw.java,yedemo.zw.b函数 (应该是名称混淆后的结果) 漏洞触发大概逻辑如下: void b(String var1) throws IOException { … // 1这里打开了一个压缩文件 ZipFile var4 = new ZipFile(var1); // 2 这里读取压缩文件的内容 Enumeration var5 = var4.entries(); … while(true) { ZipEntry var15; boolean var16; // 3 do-while循环找到一个不是文件夹的普通文件,并存储到var15里 do { boolean var11 = var5.hasMoreElements(); if (!var11) { var4.close(); var3.delete(); return; }

调用链选型之Zipkin,Pinpoint,SkyWalking,CAT

情到浓时终转凉″ 提交于 2020-01-26 01:26:48
简介 Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。 Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无代码侵入。 SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端无代码侵入。目前已加入Apache孵化器。 CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。 基本原理 类别 Zipkin Pinpoint SkyWalking CAT 实现方式 拦截请求,发送(HTTP,mq)数据至zipkin服务 java探针,字节码增强 java探针,字节码增强 代码埋点(拦截器,注解,过滤器等) 接入 类别 Zipkin Pinpoint SkyWalking CAT 接入方式 基于linkerd或者sleuth方式,引入配置即可 javaagent字节码 javaagent字节码 代码侵入 agent到collector的协议 http,MQ thrift gRPC http/tcp OpenTracing √ × √ × 分析 类别 Zipkin Pinpoint SkyWalking CAT

2.agent追踪

…衆ロ難τιáo~ 提交于 2020-01-23 14:22:49
所有的代码分析基于pinpoint 1.6.2 在上篇文章 agent启动中 最终分析到了织入部分,那么这里分析一下Trace部分。 一、入口 所有的trace的都从plugin进入,也就是说,如果对某个组件不支持的话,是不会进行trace的。 这里以jetty的plugin为例,当一个请求过来时,有类似如下拦截代码(后置拦截在后面): //前置拦截 public void before(Object target, Object[] args) { final Trace trace = createTrace(target, args);//创建trace SpanEventRecorder recorder = trace.traceBlockBegin();//开始trace recorder.recordServiceType(JettyConstants.JETTY_METHOD);//记录服务类型 } 下面先来看看 前置拦截 到底发生了什么,先看看createTrace代码: final TraceId traceId = populateTraceIdFromRequest(request);//从请求中获取之前的trace if (traceId != null) { final Trace trace = traceContext

APM 原理与框架选型

假装没事ソ 提交于 2020-01-19 21:06:44
发些存稿:) 0. APM简介 随着微服务架构的流行,一次请求往往需要涉及到多个服务,因此服务性能监控和排查就变得更复杂: 不同的服务可能由不同的团队开发、甚至可能使用不同的编程语言来实现 服务有可能布在了几千台服务器,横跨多个不同的数据中心 因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题,这就是APM系统,全称是( A pplication P erformance M onitor,当然也有叫 A pplication P erformance M anagement tools) AMP最早是谷歌公开的论文提到的 Google Dapper 。Dapper是Google生产环境下的分布式跟踪系统,自从Dapper发展成为一流的监控系统之后,给google的开发者和运维团队帮了大忙,所以谷歌公开论文分享了Dapper。 1. 谷歌Dapper介绍 1.1 Dapper的挑战 在google的首页页面,提交一个查询请求后,会经历什么: 可能对上百台查询服务器发起了一个Web查询,每一个查询都有自己的Index 这个查询可能会被发送到多个的子系统,这些子系统分别用来处理广告、进行拼写检查或是查找一些像图片、视频或新闻这样的特殊结果 根据每个子系统的查询结果进行筛选,得到最终结果,最后汇总到页面上 总结一下:

一款国产静态代码分析工具与Converity的对比

妖精的绣舞 提交于 2020-01-17 17:37:27
源伞科技Pinpoint,作为BAT都在使用的一款静态代码分析工具,到底有什么领先于其他厂商的能力? 1. 扩展和部署功能对比 源伞科技Pinpoint现有的检查器可以通过简单的json配置文件扩展业务逻辑。比如敏感数据泄露到日志检查器,企业或许有很多自己的日志打印函数,我们可以通过人工配置指定,即可提高检测质量。 如果不想人工配置,Pinpoint有未公开发布的库函数学习工具,可以通过线下分析企业代码库自动学习和生成上述配置文件。 Pinpoint对分布式多机扫描部署支持比 Coverity 好,并发扫描和结果合并x性能也比 Coverity 更强,能更好支持BAT级别的数千代码库扫描( 已在BT部署验证 )。 2. 分析能力对比 本节补充一些人工构造的例子介绍Pinpoint在分析能力上比Coverity强的部分。本节所有代码示例,Coverity均有误报或漏报。 Pinpoint更懂数据流 精确深度的指针分析,深入分析内存中的程序行为 高深度高精度函数调用链分析,查找跨越多层函数的深度问题 示例代码如下: (链接:https://www.sourcebrella.com/online-showcase/?id=5b483da03a21cd078346028f),此示例代码基于空指针(Null Pointer Dereference)问题检测。 准备代码:

两款静态代码检测工具的对比

非 Y 不嫁゛ 提交于 2020-01-16 13:22:00
测试背景 使用工具: 源伞科技Pinpoint Sonarqube 测试项目: 开源国产CMS软件iBase4J(6000行代码) 测试结果汇总 数据统计: SonarQube结果: 代码错误 安全隐患 风格质量 总量 有效/总量 2/6 4/4 0/93 6/103 源伞科技Pinpoint结果: 代码错误 安全隐患 风格质量 总量 有效/总量 2/2 19/19 6/7 27/28 我们将所有bug归为以下3类: 分类 Sonarqube对应分类 Pinpoint对应分类 代码错误 bug类 代码崩溃、数值处理不当类 安全隐患 Vulnerability类 代码安全类 风格质量 Code Smell类 代码风格、性能问题类 有效报告 :我们定义有效报告为真实影响程序执行并值得进一步检查修复的问题报告。 测试细节: 数量: 从数量看,Pinpoint结果确实明显少于SonarQube。但是有效报告明显少于Pinpoint. 安全隐患: 从质量看,首先Pinpoint可以找到很多SonarQube无法发现的Vulnerability,也就是安全隐患(19比4),其中SonarQube找到的4个有效报告Pinpoint也能找到,Pinpoint找到15个SonarQube没有找到的问题。 SonarQube的3个报告属于同一类别,是在exception.printStackTrace

wildfly 配置 pinpoint

ぃ、小莉子 提交于 2020-01-16 04:31:19
wildfly版本10,pinpoint版本1.8.4 set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.logmanager,com.navercorp.pinpoint.bootstrap,com.navercorp.pinpoint.common,com.navercorp.pinpoint.exception" set "JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager" set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:D:/soft/wildfly-10.0.0.Final2/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.0.3.Final.jar" set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:D:/soft/wildfly-10.0.0.Final2/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss

侠梦说pinpoint-增加web认证Basic Authentication

大憨熊 提交于 2019-12-26 22:48:35
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 最近,许多小伙伴吐槽pinpoint-web没有登录认证的问题,隐约记得在web的properties文件中有一个passoword配置,检查后发现这个配置是用于,带admin接口的接口认证用的。 还被官方打上了FIXME,这是要“裸奔”的节奏啊。 思路 首先还是看官网,着急使用的话还是不要重复造轮子了,说不准已经有现成的解决思路了。找来找去我也只发现了这个: 其中的一个Commiter明确指出pinpoint不提供认证,需要自己实现。 好吧,那我们就来自己造个轮子把。 改造过程 pinpoint-web 后端接口采用的是Spring MVC来实现。为了简单快捷的实现我们的要求,这里我直接采用了servlet中的Filter + Basic Authentication来实现。 前面提到的admin.password由于可能在后期版本中移除,所以我们还是新建用户名和密码两个配置吧。 通过在web.xml给Filter注入参数的方式注入进去。细节可以参考源码和下面的部署方式。 部署方式 方式一、 当然可以加入认证的Filter类后,完全编译pinpoint-web。 但是我相信研究过pinpoint源码的小伙伴都感受过那漫长的等待过程。所以建议使用方式二进行部署。 方式二 以将pinpoint

APM监控Pinpoint( 以集成springboot项目为例 )-搭建hadoop单机版+hbase单机版+pinpoint整合springboot

六眼飞鱼酱① 提交于 2019-12-17 06:40:36
Pinpoint是什么? Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoint支持的功能比较丰富,可以支持如下几种功能: 服务拓扑图:对整个系统中应用的调用关系进行了可视化的展示,单击某个服务节点,可以显示该节点的详细信息,比如当前节点状态、请求数量等 实时活跃线程图:监控应用内活跃线程的执行情况,对应用的线程执行性能可以有比较直观的了解 请求响应散点图:以时间维度进行请求计数和响应时间的展示,拖过拖动图表可以选择对应的请求查看执行的详细情况 请求调用栈查看:对分布式环境中每个请求提供了代码维度的可见性,可以在页面中查看请求针对到代码维度的执行详情,帮助查找请求的瓶颈和故障原因。 应用状态、机器状态检查:通过这个功能可以查看相关应用程序的其他的一些详细信息,比如CPU使用情况,内存状态、垃圾收集状态,TPS和JVM信息等参数。 架构组成 Pinpoint 主要由 3 个组件外加 Hbase 数据库组成,三个组件分别为:Agent、Collector 和 Web UI。 Agent组件:用于收集应用端监控数据,无侵入式,只需要在启动命令中加入部分参数即可

通过Docker方式安装配置Pinpoint

梦想与她 提交于 2019-12-17 01:40:30
一、安装配置Docker 1.1 安装docker docker-compose 1.1.1 阿里云: yum update -y yum install docker epel-release python-pip -y pip install --upgrade pip pip install docker-compose 1.1.2 腾讯云 yum update -y yum install docker epel-release python-pip -y pip install --upgrade pip yum -y install gcc yum -y install python-devel pip install -I requests==2.9 //可参考文章下方的参考链接 pip install docker-compose 1.2 配置daemon.json 让docker从国内的阿里云拉取镜像,提高下载速度. [root@test ~]# cat /etc/docker/daemon.json {"registry-mirrors": ["http://579fe187.m.daocloud.io","https://pee6w651.mirror.aliyuncs.com"]} 1.3 启动docker [root@test ~]# systemctl