Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

lorexxar.cn

LoRexxar's Blog

Get the latest updates from LoRexxar's Blog directly as they happen.

Follow now 89 followers

Latest posts

Last updated 11 months ago

PHP CGI Windows平台远程代码执行漏洞(CVE-2024-4577)分析与复现

11 months ago

在2024.6.6今天,@Orange在他的博客发布了他即将在2024年8月Black Hat USA公开的议题《Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server!》https://www.blackhat.com/us-24/briefings/schedule/index.html#confusion-attacks-exploiting-hidden-semantic-ambiguity-in-apache-http-server-40227伴随着议题的发布,今天在DEVCORE的官方博客发布了一个漏洞通报,也就是存在于windows特殊场景下的PHP...

从0到1的ChatGPT - 进阶篇(三)- ChatGPT+?

about 2 years ago

在我们对ChatGPT的基础能力有了一定的了解之后,我们就要开始在ChatGPT的基础上探索更多的可能性。而ChatGPT本身的问题也很多,ChatGPT在使用上最大也最明显的革命,其实是对自然语言的处理能力,抛开太多专业性的术语,你在使用的过程中也能明显感觉到,ChatGPT甚至在某些方面有着比正常人更厉害的解读能力,它可以把一段模糊的要求和文字解读成需求,最牛逼的是它还支持中文,毕竟理论上中文的自然语言处理难度是几个量级。拿下面这个图举例子,我感觉我都没说明白,但却获得了答案。除了强大的自然语言处理能力,以及大模型背景下庞大的数据以外。ChatGPT还有很多明显的缺点,其中最直白的问题就是数据的过时以及不联网问题。目前ChatGPT的训练数据集截止到2021年,而没有准确数据集的数据,ChatGPT就没有置信数据可以参考,而这类问题ChatGPT就会通过某种方式自我学习产生,而他的结果就会产生各种各样的错误。当然,为了避免大数据污染等等问题,ChatGPT目前公开对外使用的接口,最多只会参考部分上下文以及限定单个对话session中做学习优化,但不会对用户的输入做学习。为了解决这个问题,ChatGPT选择了用第三方插件作为媒介,让AI在比较安全的环境学习外界的数据,最早的合作公司由Expedia、FiscalNote、Instacart、KAYAK、Klarna、Milo、OpenTable、Shopify、Slack、Speak、Wolfram 和 Zapier 创建。https://openai.com/blog/chatgpt-plugins其中的各种插件可以覆盖大部分的场景,包括:检索实时信息:例如体育比分、股票价格、最新消息等;检索知识库信息:例如公司文件、个人笔记等;代表用户执行操作:例如,订机票、订餐等。除此之外呢,ChatGPT官方还提供了两个插件,一个是网络浏览器,另一个是代码解释器,并开源了一个知识库检索插件的代码。现在,任何开发人员都可以自行构建插件,用来增强 ChatGPT 的信息库了。从这里开始ChatGPT+的概念算是诞生。虽然目前这部分的插件还只是开放给了候补名单中的用户和开发人员,但计划中即将开放给部分ChatGPT plus的用户了。一些有趣的ChatGPT周边除了ChatGPT官方的插件以外,还有很多以各种各样的方案实现的ChatGPT衍生产品,其中有很多意思的东西,这里我就推荐几个比较有意思的WebChatGPThttps://chrome.google.com/webstore/detail/webchatgpt-chatgpt-with-i/lpfemeioodjbpieminkklglpmhlngfcnWebChatGPT是一款Chrome的插件,它可以用一个特殊的方案来实现ChatGPT的联网,来让ChatGPT的返回数据更准确更新。他的实现方案特别有意思,简单来说,他会先把你的问题拿去搜索引擎上搜,然后把结果喂给ChatGPT,然后让ChatGPT以搜索结果作为上下文学习,之后再回答你的问题。插件安装成功之后,你的对话框上多了很多的参数Web access(是否要开启联网功能)、X results(想要它列出几条来源)、Time(多久之前的资料)、Region(哪个地区的资料),以及最右边的Prompt(默认指令)通过配置参数并开启,你可以获取到非常有时效性的内容,比如说询问天气。因为正常来讲你询问chatgpt天气会返回这样的内容。但如果你使用这个插件,你就可以获取这样的结果。但要注意的是,由于插件的实现方式(通过输入搜索内容关联上下文),使用WebChatGPT会大幅度削减原本对话中的上下文关联度,所以一般来说只有特定的场景下才使用这个插件。Monicahttps://chrome.google.com/webstore/detail/monica-%E2%80%94-your-chatgpt-cop/ofpnmcalabcbjgholdjcjblkibolbppb这个插件是Google for ChatGPT的进阶,它集合了你在上网过程中会遇到的各种问题和场景,并通过chatgpt来辅助使用。当然,这个玩意现在越来越成熟了,所以它也开始收费了,大家可以自己感受一下这个插件最常见的功能就是搜索辅助,会直接对你google的搜索结果做优化,直接返回你i想要查询的结果。可以大幅度节省找到答案的时间。最牛的是,它还支持百度。除此之外,还有一些比较有意思的东西,比如说划词右键解释使用ctrl+m可以打开侧边,这里有两个功能,一个是聊天和写作辅助它还可以提供阅读功能,可以直接给它一篇文章,然后让他阅读,他会直接给你返回文章的摘要。你可以通过这个对话聊天功能来快速的阅读一篇文章???AutoGPThttps://github.com/Significant-Gravitas/Auto-GPTAutoGPT诞生没多久,比起这个东西本身的效果,AutoGPT本身的思路和理念很有意思,AutoGPT依托于GPT4强大的算力和思考能力,对你的需求进行解构深入。比较麻烦得是,AutoGPT对算力的依赖比较强,GPT3.5能用但是很难用。而且由于AutoGPT的理念AutoGPT就像一个不知疲倦的实习生,他会对你下的指令进行多重解构,并对当前的问题持续发散探索更多话题。这里有个小例子,假设我想要一个web扫描器但是没有指定任何要求(你可以通过增加要求来优化回答的导向auto-gpt在分析了我的需求之后,提出了一个计划,是先去找一个网上的扫描器然后再根据需求改进,还提醒我小心代码的安全问题,不要盲目的clone代码。如果我们继续让他分析,他会继续把分析的内容细化并深入,你也可以指定连续多步去分析。当然除了让他继续分析,你也可以给与一些人工的干预,比如我说我不想要别人的代码,我想要自己写,他指出我们需要好好分析需求。其实现在阶段的AutoGPT更多还是一个概念产品,使用上的体验更接近一个demo。比起实际意义,AutoGPT通过反馈较正的方式给我们呈现了一种机器思考的感觉,很有趣。写在最后这篇文章里我们讨论的大多都是现在已经成型的一些基于chatgpt的拓展,作为使用者我们能做的很多只有适应时代,下篇文章我们就讲讲,在chatgpt的基础上我们作为开发者能做什么?

从0到1的ChatGPT - 入门篇(二) - 如何与ChatGPT对话?

about 2 years ago

在上篇文章的结尾,我提到了ChatGPT其实更像是一把铲子,在拥有这把铲子之前,我们只知道可以把土堆成房子,但是不知道用什么把土堆起来,但在有了这把铲子之后,铲土只是铲子最直白的利用,如何用铲子堆一个又大又漂亮的房子可能我们还不知道,但至少我们现在已经开始尝试做这样的事情了。其实从ChatGPT诞生至今,所有从事相关研究的朋友都在努力的在ChatGPT上探索各种各样的使用方式,甚至现在已经诞生了所谓的prompt工程师。这篇文章就聊聊很多现在已有的关于ChatGPT使用的技巧。4A & 4W首先ChatGPT在自然语言的理解上虽然有着领先时代的表现,但事实上ChatGPT并不是你的蛔虫,你试图通过简单的问题获得准确的回答是不可能的,也不现实。这里我也用一下,在讲述这个问题时最常用的“如何减肥”的例子。如果你只是简单的问,那么chatgpt的回答就会模糊而概括。随着大家的探索,逐渐诞生了两种常用的扮演法指令模式,也就是4A & 4W。4A: Actor(角色) - Aim(目标) - Ask(提要求) - Addition(补充)4A模型是Prompt中比较典型的例子,晚上大部分流行的提问方式都是这个结构,还是拿减肥举例子,这一次我提供了我的身高和体重,并且给他赋予了角色定位。相比之前更简单的提问,ChatGPT给了更具体的回应以及更详细的范例,但实际上在这个范例中,虽然内容详细但事实上没有太具体的计划。在这个基础上,又有人提出了4W模型。4W...

从0到1的ChatGPT - 入门篇

about 2 years ago

在2023年年初,ChatGPT像一颗流星一样突然出现在大家的面前,围绕ChatGPT的探索也以各种各样的方式出现在大家的面前。相比基于ChatGPT的探索,openai的平台和国内的对抗反倒在潜移默化的升级,我没有了解过openai到底有什么样的背景导致一直执着于国内使用者的封禁,这篇文章就先讲讲我在这个过程的所有探索以及相应的解决方案吧。IP限制这个东西是在使用ChatGPT过程中遇到的最大的问题,而且其中的相应策略极其复杂,这里只列举我撞到的策略和绕过方案。通过代理解决首先来源IP这块就不用多说了,你正常直接去访问openai.com都会撞到GFW的拦截,当然作为技术从业者有自己的科学手段自然不用多说了,但如果说GFW是你入门的门槛的话,那chatgpt使用的方案可以说是釜底抽薪。国内百分之90的科学手段大抵上都是利用国外的服务器来实现的,而且除开使用机场的朋友以外,大部分都是使用比较有名的各种云服务器,chatgpt搞得第一个门槛就是,封禁了大部分的云服务器ip以及网段。vultr,godaddyaws,oricle,linode阿里云、腾讯云这就直接导致了一个问题,就是在ip层面你就需要想办法绕过。根据我的了解,其实大部分人都使用了比较冷门的云服务商或者比较冷门的机场来解决,这样比较一劳永逸,而我选择了用另一个方案就是v2ray+cf wrap,这里我就不详细解释具体是怎么回事了,大概是用了CF推出的一个相对比较真实的ip来做代理,很多朋友会用这个方案来绕过Netflix的限制。具体可以参考这个链接来实现。https://github.com/willoong9559/XrayWarp配置warp1、参考CF的文档来安装warphttps://developers.cloudflare.com/warp-client/get-started/linux/2、注册客户端1warp-cli register3、设置WARP代理模式1warp-cli set-mode proxy4、连接WARP1warp-cli connect此时WARP会使用socks5本机代理127.0.0.1:40000 5、打开warp always-on1warp-cli enable-always-on6、测试socks代理,理检查ip是否改变12export ALL_PROXY=socks5://127.0.0.1:40000curl ifconfig.me7、修改V2ray的配置为inbounds启动sniffing1234"sniffing": {...

赛博偶像速成指南

about 2 years ago

随着ChatGPT的爆火,最近和人工智能有关的各个部分也有一次爆火起来,由ai制成的美少女也是最近的一个爆火的话题,花了一点儿时间了解了一下,感觉还挺有意思的,现有的工具已经是非常成熟可用的东西了,接下来简单介绍一下怎么玩Stable Diffusion WebUI这次我是用的是Stable Diffusion WebUI来生成ai图,这是一款现在非常流行的用ai来绘图的开源工具,给出一组描述词,ai就可以根据描述词画出你想要的图片。现在使用最多的是AUTOMATIC1111改进的图形化版本,支持Linux/Windows/MacOS系統,以及Nvidia/AMD/Apple的GPU,几乎没有门槛,装好即用。需要注意的是,这个玩意及其吃GPU以及显存,我的工作机跑这个一下就卡死了,很吃力。安装指南基础环境N卡或者A卡对应的驱动程序python3.10+,最好新一点儿Git环境Stable Diffusion模型Stable Diffusion生成图需要基础模型,主要有两部分脸部修复模型GFPGAN绘图使用的相关模型GFPGAN可以去https://github.com/TencentARC/GFPGAN/releases/tag/v1.3.4直接下载还有一部分是绘图相关的模型,这部分模型有很多,可以在很多不同的网站上搜索下载,比如https://huggingface.co/models或者https://civitai.com/都是比较有名的模型下载网站名称说明下载Stable DiffusionCompVis发布的基础模型,适合真人和动物。HuggingFaceChilloutmix写实风格的模型,融合真人和动漫风格HuggingFaceAnything适合漫画HuggingFaceWaifu Diffusion使用Danbooru图库训练而成,适合漫画HuggingFace你也可以选择在civitai上直接找自己喜欢的模型下载,ckpt后缀和safetensors后缀都快可以。在筛选中勾选Checkpoint对应的就是基础绘画模型。安装Stable Diffusion1、首先从github下载源码1git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git2、把前面下载的GFPGANv1.4.pth放在对应的文件夹下。3、下载相应的各种依赖库,windows执行bat,linux执行sh。12cd...

CS Xss2Rce CVE-2022-39197分析与复现

over 2 years ago

前段时间这个漏洞被挖掘出来之后的时候还是引发了很多关注的,但是最初一直都没有什么像样的分析文章出来,最早看@漂亮鼠的文章之后才大体上对这个漏洞有了一个基本的认识。https://mp.weixin.qq.com/s/l5e2p_WtYSCYYhYE0lzRdQ但是不知道是我的java水平真的不够,又或者说这篇文章中隐去的部分太多了,我顺着文章研究了一段时间但是几个点都串不起来。后来又接二连三的看了几篇文章,直到看完@pang0lin才算是把逻辑串联起来许多https://mp.weixin.qq.com/s?__biz=MzkzNjMxNDM0Mg==&mid=2247485450&idx=1&sn=5662a9f2c081fc8521eee651b357323f&chksm=c2a1dc83f5d655957cf2a1c88adf45cd0d028316f536e0a8a18c9e7cb0440869ed4077822ce8&mpshare=1&scene=1&srcid=1017PFOrquxivFM2ck4Prl9m&sharer_sharetime=1665993698480&sharer_shareid=8c0858e06fee9d607c68521b3949c3e9#rd这篇文章不知道什么时候发出来,主要是记录一下整个复现分析的心路历程,以便以后需要的时候没处看。漏洞原文https://www.cobaltstrike.com/blog/out-of-band-update-cobalt-strike-4-7-1/CVE-2022-39197An independent researcher identified as “Beichendream” reached out to inform us about...

SCA的困境和出路

about 3 years ago

SCA是什么?我想可能很多人都有这个问题。SCA的全称叫做Software Composition Analysis,有的朋友可能直接把他叫做软件成分分析,也可以叫他组件安全分析。现代的SCA大多数都是基于白盒的角度去做,也就是SAST中的一环,但是也有不少场景需求对二进制或者运行中软件做分析,当然这不是今天讨论的主要目标。这个东西最常见的地方就是github,github内置了一个简单的SCA扫描今天我们主要聊聊白盒角度的SCA,SCA这个东西听名字好像很复杂,但是实际上把它聊的简单一点儿可以拆开两部分,一个是组件数据,另一个是漏洞数据,我们分开聊聊这两个部分。组件数据部分其实组件数据对于现代的各种Web开发语言、框架啊没什么花头,每种语言都有自己的包管理工具。甚至里面的大多数语言依赖关系获取相当简单,比如php的composer.json,node的package.json,仅仅解析静态文件就可以获取非常完整的依赖关系。其中可以说问题最大的无非就是java的maven和gradle了,倒也不是说pom.xml获取不到相应的依赖,而是说java本身的组件体系完整而普适度高。这直接导致了,java当中频繁的使用了依赖引用链,这种引用关系往往可能存在2-3层以上,而这种依赖关系仅从静态的pom.xml中是没办法获取的。这个问题在我之间做java的sca时,困扰了我相当一段长的时间,主要是我对SAST的很大一个理念和现在主流的SAST工具不同,我认为纯静态对于SAST来说是一个相当重要的点,包括白盒的工具,我也是在力求纯静态的扫描,这点和CodeQL、Sonarqube都不同,反而是Checkmarx和我的思路比较接近。但是可惜的是,没有经过编译运行的java代码,一个是不会下载相应的组件包,你没办法通过解包jar的方式获取数据。另一个问题是,除了maven公开源的包,很多公司都会自建自己的artifactory,这样一来即便你本地已经存了数据量高达几十T的公开源依赖关系,你在公司中使用,也会出现大量的公司内部包,这样一来效果非常差。所以,关于这个依赖获取的东西,现在普遍都是使用动态获取的方式,其中陌陌安全公开的就是这类工具的一个典型。https://github.com/momosecurity/mosec-maven-plugin可以说,除了hook maven以外,可能大多数办法都不如一句简简单单的**mvn** dependency:tree来的更直白。其实抛开静态分析的角度,我们也可以把这个事情想的多元一点儿,前面的很多困扰都来自于静态的角度,我们总是在试图避免编译这个又浪费时间,又繁琐的步骤。但是换个角度去做,也许我们可以把脚本直接塞在CI/CD的流程中,甚至直接塞在Hids中,这种方案呢,在自动化程度比价高的公司非常好用,这本身也是DevSecOps中的一环。一个是避免代码库中的代码和实际运行的代码有差异(这个问题相当普遍),另一个是,这种方案本身对CI流程的干扰度也很低,因为编译本身就是流程的本身。好了,现在我们有了组件数据这个东西,有很多人会好奇,他能干什么呢?这里我拿个最简单的例子来说,你们公司的Log4j2影响范围是怎么排查的呢?组件数据作为DevSecOps中的一环,是相对更底层的部分,你可以把它构建在白盒中,也可以把SCA相对独立,接入Hids以及更多来源的数据,这个数据本身就是意义,以后在聊到DevSecOps的时候,我可能会着重聊聊流程相关的东西,这里暂时先不提。漏洞数据部分在我们有了足够的组件数据之后,我们要开始和安全结合了。其实漏洞数据库可以说是SCA的核心技术了,这本身是一个数据驱动的玩意。其实相对安全问题本身来说,合规可能是大多数SCA的主要目标,在国外,很多软件上市之前,都需要通过安全合规扫描,这个安全合规扫描一般来说是黑盒的,但是你很难估计到底有什么样的问题。而国外最有名的SCA就是BlackDuck,是新思做的一个东西,他本身其实安全的成分非常低,如果使用的朋友应该都知道,blackduck的扫描结果一个项目就有上千条,其中大多数都是那种毛用没有的问题。但是他最牛的地方就是,国外的很多检测机构使用的就是blackduck,所以很多厂商呢,也没有办法,为了通过安全合规扫描,就必须采购blackduck,为了这个简单的检测,blackduck的授权价往往有1年几百万,可以说是相当不讲理了。我们说回技术本身,实际上在安全圈内,每年爆出来的组件漏洞不能说很多,关键是大部分都是特殊配置,实打实正儿八经能用的,都是那种要不就是默认配置,要不就是常用配置,像log4j2这种级别的漏洞我估计每5年能出一次都是很厉害了,上一次出这类漏洞已经是很多年前的fastjson了。所以现在很多公司的自建安全SCA中,漏洞数据库都是自己构建的,漏洞数据由安全运营中心负责,一个是来自于安全情报,另外一个是来自于SRC收集或者黑盒扫描后的排查,可能这个漏洞数据库常年也就维护20、30个漏洞,反而是DevSecOps中补足不足的好办法。当然,你也许会问,会不会有那种有安全公司维护的API,可以提供有效的安全漏洞数据,目前我自己写的Kunlun-M中也是用了类似的方案,其中有两个API比较好用,一个是google的,另一个是osindex的,大家可以自己了解一下。https://deps.devhttps://ossindex.sonatype.org在这个网站中,你可以通过api查询提供对应的组件版本,他就会返回这个版本的所有漏洞列表。在之前的<DevSecOps 究竟需要怎样的白盒?>这篇文章中,我把SCA分成了3个阶段。第一阶段 - 漏洞数据库最早期的SCA主要构成是漏洞数据库,一般来说,SCA开发者会通过爬虫去爬取CVE等各种漏洞公示网站,其中最重要???是如何将漏洞关联到组件以及版本中。这个阶段就是我们现在的大多数SCA阶段,一个是漏洞数据没有特别好的办法精细化,另外一个是,乙方公司的工具大多都需要应对更多场景,所以漏洞数据库不免就会大而全,使用起来效果就会非常差了。第二阶段 - 函数级漏洞数据库第二阶段的SCA就是为解决第一阶段的问题而诞生的。一般来讲,如果仅靠对比版本,业务开发人员会在短时间内收到大量的漏洞报送,其中甚至会包括大量没有修复版本、更新成本高的组件。而这时候大多数的业务反馈都会是“我写的那个地方会有安全问题?我该怎么办?”。而这时候,如果可以将漏洞数据库至少细化到某个类/函数级,将会大大提高漏洞的有效性,也能为无法通过版本更新修复的漏洞提供解决方案。第三阶段 - 代码片段级漏洞数据库第三阶段的SCA,在第二阶段的基础上,将漏洞数据库进一步细化到代码片段级。一般意义上来说,这个级别的扫描主要解决的是大量项目中通过复制、二次开发的安全问题,而相应付出的代价可能是成几何级提高的数据库量以及扫描压力。到这个阶段的投入是否值得可能还有待考量。现在主流的SCA大部分还停留在第一阶段,部分商业的SCA开始逐步探索第二阶段、第三阶段,但真正将SCA完全自动化接入到DevSecOps流程中,我想还有很长的路要走(找10个“人工”智能审核...

人生的第二个可能~

about 3 years ago

新建这篇文章的时候,是我离开小米的倒计时7天,也是我加入小米的第289天。这篇文章发出来的时候,是我离职的最后一天,实话讲10个月的时间对于一段工作经历来讲显得好像特别短,显得不止一提。但是对于一段人生经历来讲,貌似足够做很多事情。1年前我在离开知道创宇的时候曾写了一篇万字长文,聊了聊毕业之后的一些经历,很多朋友从那篇文章认识了我。那个时候的我决定离开舒适圈,去尝试生命的更多可能。289天后的今天,我又一次做了同样的决定,这一次我决定做一个自由职业者。其实实话讲,离开一家公司的原因大可不必说的那么高尚,无非就是钱不够、事太多、不想干3种原因中的一个。很显然,结合我的性格,我自然是因为不想干所以选择离开小米,所幸的是也有一些能力支撑我探索下一阶段的方向,在正值结婚的节骨眼,面临生活的很多未知的压力,我女友也愿意相信我的选择。关于离职原因中和公司有关的部分以后有机会再说,今天想给大家分享几个故事。KunLun-M我估计很多朋友都知道星链计划,感觉应该有不少人是从这个渠道认识我的。这是一个当时由我发起的开源计划,现在已经超过2600的star,在安全圈应该有相当的体量了。不过今天我们要说的不是这个,是和这个项目息息相关的另一个项目 - KunLun-Mhttps://github.com/LoRexxar/Kunlun-M看过我之前的文章的朋友应该知道,这个项目是我阴差阳错做起来的一个白盒代码扫描工具,得益于这个工具,我被很多朋友认识,也得到了小米的这份工作。也正是出于想要探索白盒落地的真实场景,我才来到了小米。在小米的工作经历中,收获很多,很多理论之前还是懵懵懂懂,现在开始觉得有很多想法,想要去付诸实践,很可惜,我没能力在工作之外腾出足够的时间来做开源的开发。如果关注这个工具的朋友应该知道,上一次在10月我更新了一个简单的组件扫描功能之后,已经4、5个月没有正儿八经的更新了。我被迫让工具进入了弱维护阶段。但在这个过程中,star从900,慢慢涨到了1400+。这件事情的发生,让我开始反思,我是不是没有找到开源真正合理的方式。在我还在玩知乎的时候,我在知乎上曾经回答过一个问题,这个问题是为什么程序员们愿意在GitHub上开源自己的成果给别人免费使用和学习?而那个时候我的回答是现在我开始逐渐有了一些感觉,我慢慢觉得,免费开放的开源项目换来的可能只是一个玩具,我开始觉得应该要有更合理的方式(这也是我后面一段时间的一个计划)足以支撑开发者让开源项目变成一个可能性。这里我先不继续聊这个想法,我会在有一定的收获之后再和大家分享~Log4j22021年后半年我相信最大的事情就是log4j2了吧,一个漏洞直接席卷了整个世界,其实在最早刚刚issue提交的时候我就看到commit了,但是我java水平有限,能看明白怎么回事,但是调不出来,当时一厢情愿的以为这个漏洞对log的格式配置有要求,就没记着去跟漏洞,毕竟我本职工作不是做安全应急。结果回家吃了个饭,突然exp就泄出来了,当时第一反应就是完蛋了,这下搞不好又要熬夜应急了。后来的结果也证明小米事实上没有准备好应对这样的灾难,我们选择了第一时间升级waf。而后推进白盒扫描、黑盒扫描配和HIDS的方案来清理存量,所幸的是小米安全部门还有一定的话语权,初期升级推动还是比较顺利。而且我的工作比较尴尬,由于白盒扫描只有纯静态的数据,有效性很差,临时整了一个动态扫描去扫所有的存量项目。我则是闷头去调了一下代码,找到了很多绕过waf的办法,也正儿八经的逼疯了我们负责维护waf规则的同事,当时的感觉还是很有意思~为什么提到这个事情呢,主要是因为,我小米之后主要负责的是白盒,已经很久很久没有正儿八经的跟过新漏洞了,从我的博客也能看出来,我已经很久没有跟过漏洞了,当时分析的那两天感觉还是很快乐,有点儿废寝忘食的感觉,那段时间正赶上我怀疑人生的时候,我忽然觉得我有点儿忘记初心的味道,这件事也直接影响到了我的决定。up主在去年的年中,我正沉迷玩wow(魔兽世界),认识我的朋友应该都知道我是一个老游戏玩家了,steam库存超过250+,连自我介绍里都不忘记加上这个。一次偶然的巧合呢,我开始在B站制作简单的攻略视频,最开始比较随意,我也懒得剪辑,直接OBS一开就录,内容全靠现想,一录就是40分钟,设备也不好,内容也没逻辑性。但是依赖于内容比较好,在B站收获了上万播放量。当然,虽然因此受到了激励,但是最开始我还是当个玩玩的东西做的。直到去年的后半年,具体什么原因我已经回想不起来了,但是我突然开始反思,我是不是,有可能探索人生中的第二个可能。这种感觉就好像是我一直刻在博客的一句话。“当你老了,回顾一生,就会发觉。什么时候出国读书,什么时候决定做第一份职业,何时选定了对象而恋爱,什么时候结婚,都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你做出选择的那一日,在日记上,相当沉闷和平凡,当时还以为是生命中普通的一天。” 摘自陶杰《杀鹌鹑的少女》会想起我当年,在报考志愿的时候,在985+211内大计算机专业,和双非杭电信息安全中做选择一样。就好像命运中的弦被拨动了一下,我意识到,我可能正处在人生的三岔路口。在深思熟虑之后,我决定把做up主正经的做下去,不敢说人生转向,只是说对得起自己的每一个想法,起码不会在老了之后后悔,我开始每个视频写文案,剪视频,用我的全力去应对这一次人生的可能。在写这篇文章的前一周,我为了剪一个攻略视频,连续3天3点睡觉。值得庆祝的是,我确实收获了一些东西。或许大家可能觉得这个8000粉没什么想法,但是拿我在安全圈举例子,早期我在知乎开车,知乎的粉丝是后来我逐渐不玩知乎了,用的比较多的是github和twitter,这两个站的粉丝分别是)简单来说就是,我花了半年时间因为玩游戏而被人认识的数量,已经超过了我在安全圈混的5、6年。这是一种很新奇的体验,最近也在尝试做直播。不敢说一定要做成什么样子吧,但是我已经正式把这件事当作了我的第二职业,不为别的,只为了探索自己的可能性。一件特殊的事情如果说问你,你2021年经历过的一件最激励你的事情是什么?你会说什么?亚运会女足夺冠?十年淀粉见证EDG夺冠?还是说看到LGD.ame再一次倒在了2:3巅峰面前?也许这几个圈子里的朋友都不太能互相理解,但我必须得说去年真的是发生了很多事情的一年。但最激励我的事情,可能对于一些朋友来说有些冷门。如果觉得我转述的不清楚的朋友,可以看这篇文章。https://v2r.cn/77a1443a0090dd44/其实事情的起因相当简单,dota2最受期待的队伍LGD又一次倒在了世界之巅的面前,那段时间大家都心灰意冷,很多刀斯林都卸载了游戏,偷摸埋葬自己的热爱。这个时候有一个主播叫zard,发起了一个刀塔101的活动,在线召集爱玩dota2的新手们,通过筛选的朋友会拉到一个群里,大家可以一起开黑,避免在天梯中遇到数不胜数的炸鱼玩家。事情的开始没人想到故事的发展会是这个结局,在活动中,一位48岁老阿姨的出现,动摇了很多人。https://mp.weixin.qq.com/s/E2dwMiM2FvOuSfcTcO66cQ我不知道看到这篇文章的朋友有没有可能感受到游戏最开始的那份纯粹,但是因为这件事情,很多朋友都重新燃起了对dota2最原始的热情,之后在一个在腾讯上班办dota2比赛朋友的故事下,zard发起了第一届互联网Dota2邀请赛,并找了一共16个互联网大厂组建战队。在看到比赛有小米参与之后,我还专门去找了小米内部的dota2群,每天看大佬们内战准备比赛(RUOK的队名来自于雷军最经典的那句梗are you ok?),小米在接连诛杀手游厂商(米哈游、莉莉丝)之后倒在了最终冠军网易的手下。在断断续续的比赛了一个月之后,最后的比赛在腾讯和网易进行,一边是Dota新正统原班人马(Dota的创始人羊刀创造了LoL),也是整个比赛的所有队伍中最高平均天梯分,胜者组一路连胜等着别人挑战的腾讯大魔???。另一边是Dota旧正统原班人马(网易运营着国服原版魔兽争霸),第二轮掉进败者组之后,一串6来到决赛,像极了小说里打不垮的男主角。其中网易的1号位,在决赛的前一天,发出了这条朋友圈胜利的那一刻,每个黑豚队员在采访里都没忍住彪出了消音词,尤其程序员兄弟的那句“码农工作太XX忙了,每天到家10点才能开始训练,还有可能凑不齐人”,老干杯兄弟表示赞同,最后生死战直接2名直播运营队员因为加班来不了,但毕竟工作是工作,生活是生活,正是每一个人的用爱发电,让这次比赛显得无比纯粹。我不知道你们看到这段文字能不能感受到这个故事的魅力,但我看着比赛结束后满屏幕的“为热爱全情投入”,我开始思考,我是不是也能做点儿什么呢?https://www.bilibili.com/video/BV1au411Q7qT?spm_id_from=333.851.b_7265636f6d6d656e64.7也就是在这一天之后,我正式做出了离职做自由职业者的决定。成年人可能就是这样,即便你不着急用钱,有能力为自己的决定买单,你也会在每个深夜思考自己是不是不应该那么冲动。所以这件事拉拉扯扯到现在才结束,离职的事情就说到这里,以后我也会在公众号写故事,分享我离职后的故事,这段时间产出的技术文章我也会在博客和公众号同步说不定再过3个月我就吃不起饭进厂上班了也不一定说起来,当我做出正式想要离开小米的决定的时候,我第一个感到可惜的是,我在小米参与了好几个内测项目,还包括手机、耳机,那个新的耳机特别好用,测试过程中和相应工程师的沟通能感觉他们是有想要把产品做好的耐心,这刷新了我对小米工程师文化的理解,算是满新奇的体验吧~可惜犹豫时间太短,没机会测我最想参加的新款折叠屏测试,太可惜了。最后送大家两句话,一句来自于网易游戏,叫做“为热爱全情投入”。另一句来自于小米,叫做“永远相信美好的事情即将发生~”,大家江湖再见~

log4j2 JNDI注入漏洞速通~

over 3 years ago

2021年12月9日,一场堪比永恒之蓝的灾难席卷了Java,Log4j2爆出了利用难度极低的JNDI注入漏洞,其漏洞利用难度之低令人叹为观止,基本可以比肩S2。而和S2不一样的是,由于Log4j2 作为日志记录基础第三方库,被大量Java框架及应用使用,只要用到 Log4j2 进行日志输出且日志内容能被攻击者部分可控,即可能会受到漏洞攻击影响。因此,该漏洞也同时影响全球大量通用应用及组件,例如 :Apache Struts2Apache SolrApache DruidApache FlinkApache FlumeApache DubboApache KafkaSpring-boot-starter-log4j2ElasticSearchRedisLogstash…下面我们来一起看看漏洞原理漏洞分析搭建环境这里选用log4j-core...

从0开始入门Chrome Ext安全(三) -- 你所未知的角落 - Chrome Ext安全

over 3 years ago

在2019年初,微软正式选择了Chromium作为默认浏览器,并放弃edge的发展。并在19年4月8日,Edge正式放出了基于Chromium开发的Edge Dev浏览器,并提供了兼容Chrome Ext的配套插件管理。再加上国内的大小国产浏览器大多都是基于Chromium开发的,Chrome的插件体系越来越影响着广大的人群。在这种背景下,Chrome Ext的安全问题也应该受到应有的关注,《从0开始入门Chrome Ext安全》就会从最基础的插件开发开始,逐步研究插件本身的恶意安全问题,恶意网页如何利用插件漏洞攻击浏览器等各种视角下的安全问题。从0开始入门Chrome Ext安全(一) – 了解一个Chrome Ext从0开始入门Chrome Ext安全(二) – 安全的Chrome...

DevSecOps 究竟需要怎样的白盒?

over 3 years ago

前一段时间刚到小米,由于一直以来都没从事过甲方安全,在熟悉工作的过程中慢慢有很多感触。于是就写下了这篇文章,其中的一些观点来自我个人的理解,如果有错误的话,麻烦联系我指出~如果你在甲方从事安全行业,那我想DevSecOps是一个你不得不听说过的一个词语。从几年前甲方安全一直推行SDL开始,这几年DevSecOps又成了当前安全践行的主流方向。今天的文章我们就从DevSecOps开始,探讨在这个环节下的白盒究竟需要怎么样的形态。什么是DevSecOps?在聊DevSecOps之前,首先我们需要了解什么是SDL?SDL全程安全开发生命周期,理论上讲是指一个帮助开发人员构建更安全的软件和解决安全合规要求的同时降低开发成本的软件开发过程。简单来讲,就是指将安全集成到软件开发的每一个阶段。在SDL中,安全的重点在于安全左移。它的原理基本上来源于安全的修复成本。而DevSecOps之于SDL,有点儿像是CMMI和敏捷开发。大致上我们可以将前者认为是基于自动化的流程,将安全和运维集成在一起。将安全渗透到开发流程的每一个阶段。这是一张特别经典的DevSecOps流程图,在这个基础上,我们可以简单的认为,DevSecOps之于SDL最大的特点,就是自动化。而涉及到自动化扫描的环节中,白盒和黑盒就是不可或缺的两个部分。而白盒部分一般主要有SAST/SCA 2个部分。误报率/漏报率一般来讲,我们会倾向于用误报率和漏洞两个概念来形容白盒和黑盒的扫描效果。漏报率: 没有发现的漏洞/Bug误报率:发现了错误的漏洞/Bug在以前的文章中,我把市面上常见的安全工具大致分为高漏报低误报和高误报低漏报两类,在甲方的安全体系中,高漏报是无法接受的,所以大部分软件会采用高误报的解决方案,并逐步优化误报问题。但在实际的甲方白盒实践过程中,我突然意识到,高误报带来的后果是不可逆反的。安全工程师在面对大量的误报会造成“警报疲劳”,这个结果在某公司的一项内部调查中也可以发现,对于业务人员来说,如果误报超过20%,那么业务人员处理报警的积极性就会大大下降。而对于大部分白盒系统来说,这个数字会远远大于20,甚至超过50。而对于DevSecOps成熟流程来说,白盒的扫描结果应直接反馈到业务面前,一个安全人员都不愿意处理的结果又怎么谈得上业务开发会处理呢?这样一来,误报率对于白盒来讲就变成了重要的指标了。相比误报率,漏报率对于白盒来讲却是一个更特殊的评价标准。在白盒中,我们大体上可以把漏报率定义为白盒检出漏洞/白盒应检出漏洞。而白盒应检出漏洞该怎么定义呢?熟悉白盒的小伙伴一定会感同身受,就是白盒有许多力所不能及的范围,这里我举几个简单的例子:与运行环境有关的安全问题(redis/tomcat漏洞)业务逻辑漏洞(刷单,弱口令,越权)多个系统联动导致的漏洞(由A控制B)跨多个壁垒的漏洞(二次注入/二步XSS…)没有代码的二进制导致的漏洞这样的例子数不胜数,甚至我相信在安全流程推进比较成熟的公司中,甚至大比例的安全漏洞都是类似的问题。在这个基础上,白盒检出漏洞 = 黑盒扫描漏洞 + SRC上报漏洞 - 白盒不可检出漏洞。但是新的问题又出现了,在大部分的安全公司中,如何将这部分漏洞与白盒关联起来呢?常规意义上的安全测试/修复流程,能将一个漏洞直接关联到白盒层面吗,如果代码是第三方的又该怎么办?在很多DevSecOps还在建设期间的公司,我相信漏报率都还是一个不可参考的数字,如何在流程上让白盒的参与度更直接,也是很多DevSecOps的一大挑战。SCA - 组件安全扫描SCA,Software Composition...

区块链安全罪与罚 -- 浅谈区块链与安全发展史

almost 4 years ago

发现最近已经有一段时间没有产出新的文章了:<,最近刚入职新公司,有很多东西在感受学习,所以博客也开始难产啦,后续会慢慢写一些最近一段时间关于白盒的很多新感受。今天正好赶上内部分享,也就炒个冷饭,这是我在内部分享的一个PPT,因为内容偏简单,算是一个区块链的科普文章,所以觉得发出来也不错,为了面向新手,其中很多内容做了删减,毕竟已经不从事区块链安全研究很多年了,很多事情确实也是一知半解,如果有错误,欢迎朋友在twitter上联系我~