这是我写年终的第六年,在一年的结束中去回看这一年已经成了我心中的一种仪式,没有年终总结的一年总感觉缺了点什么,仿佛新的一年只不过是去年的苟延残喘。

这篇的发布时间已经比较晚了,再在本地保留一段时间甚至就足以再凑一个年中小结,但思来想去还是发出来作为一个仪式,和2022做个了断。

换个花样

在过去的年终总结中,我总是习惯于按照不同的板块来分述这一年,如此做的人也不少,但老实说,这并不是一个好的选择,只不过算是在行文难度与叙述性间的折中。

生活本就是一团错综复杂、互相交织的乱麻,用条理清晰的结构去描述这一团乱麻,最后的结果必然是失真的,正如一团乱麻留在纸上的光影只不过是二维结构的堆砌。

所以今年暂且换个路子,试试唯心一些的写法。

世界总是随时间而变化,"变"仿佛也只是生活最为寻常的一个标签,但我想说的,又不只是随时间飘荡的感觉,总有些变化是超越时间的,我想说的便是那种无论你在何时想起,总能突然将你带回过去,仿佛时空穿越一般的变化,而这种变化在一个人的一生中应该也不会多见。

比较幸运,我在今年不止一次地遇见了它。

黑客与山

我是一个安全研究员,也可以叫做黑客,我其实更喜欢后者,因为听起来很帅。可惜,影视剧作品中的黑客形象似乎总是和兜帽、不修边幅、缺乏锻炼等刻板印象结合在一起,所以我又不那么喜欢被人叫做黑客。

今年以来的我可以再次被称作“一个喜欢运动的人”了,坚持了一年的跑步锻炼,成功地完成去年初定下的减重20斤的目标,这在我心中是今年所做的事中成就感的前三名。从这里看,我确实不是一个常规意义上的黑客,但这是影视剧作品的错,与黑客们无关。

黑客和跑步有什么关系呢?大概没有吧,我只是想扯在一起显得这一节看起来更有深度而已,顺便起个头,让文章转折的自然些。

那“山”又是什么?

“山”是我21年底接触到的一项极限运动——雪山攀登,这也是我起念恢复运动的源头。跑步和黑客或许没关系,但我想登山应该是有的,那种和安全研究一样要死不死、精疲力尽的感觉很是让人沉迷,进山以后绝大部分时候都是没有任何信号的,往日的所有噪声被一扫而空,在这个与世隔绝的环境下,我仿佛重获了兽性。

攀登的时候,全程只需要做好两件事:呼吸、抬腿。放空脑袋,尽情地去感受这种极致的专注。攀登是痛苦的,但过程中的宁静感,尤其是长达八九个小时的宁静感,又是足以击穿审美感知上限的。

极致的宁静感带来的就是在登顶时难以形容的满足感,我学过的诗中有一句“会当凌绝顶,一览众山小”,其畅快可见一斑。尽管我的才华并不足以让我写出这种诗词,但念一念还是会的。

而在此之前,我从来没有想过,有一天我可以在海拔五千米的地方硬生生地走上八九个小时,还全程活蹦乱跳毫无高反,尽管代价是全身散架一周加不同程度的晒伤。但和极致的感官冲击相比,这些又是微不足道的。

同样的,作为一个与代码打了七八年交道的黑客,独立挑战看似不可能任务的感觉也是令人着迷的。

今年,作为一个黑客,完成了一些让职业生涯稍显完整的事:挖到了一个代表作级别的严重漏洞、补上了BlackHat演讲的经历。尽管以前也一直在漏洞挖掘中摸爬滚打,但始终没有一个让自己满意的代表作,现在或算是有了一个可以说道说道的东西了。

Spring的缘起带点魔幻色彩。去年初在制定目标时,我们极其眼馋Log4Shell这种历史级的重量级漏洞。而最后的结果便是,我将自己的全年绩效梭哈到了Spring这个目标上,作为一个打工人而言大概算是不成功便成仁级别的决定了,尤其是在Spring核心框架已经十几年没有过严重漏洞的前提下。

面对这种重量级的目标,很多时候心态反而是最重要的。在此之前其实我已经历过好几次针对超大型目标的挖掘任务:长达三四个月的毫无产出、毫无进展也看不到任何希望。直到现在,这些让我无比痛苦的目标仍然是无解的。即使是此时此刻,我相信一定还有其他人也正处于这种折磨的状态中,苦苦寻找那一丝突破的可能性。

漏洞挖掘,是一件0或者1的事,与学术不同,人们关注的点只有一个:“这个洞能不能打”,“能打”就是一切,“不能打”就是零。针对超大型目标的挖掘,我可以下个定论,这就是一场彻头彻尾的赌博。以操作系统为代表的目标称得上“大型”二字,但每年总会有不少的洞爆出,从事这个方向的人是心里充满希望的。而我所指的超大型目标是应用生态地位与历史安全水位的双重标准,纵观这些目标的发展史都没有过像样的漏洞,在开始之前,挖掘者的心中已经偏向于放弃了,剩下的只不过是一个无情的审计机器,而绝大多数情况下都直接夭折于开始这一步。

带点自嘲的说,和许多同行相比,我的成果不算显著,但心态我自认是毫无疑问的顶级,划重点,这里不需要加“应该”二字。

所以如果有人问我自认的最大优势是什么的话,我的答案绝不会是技术相关,一定是心态,一定是这个被折磨多次才练出来的心态。这也是一个很简单的问题,毕竟又有多少人敢将全年的绩效与一个不可能的任务对赌呢?可我敢。

但很幸运,这次我终于赌赢了。

事后很多人的分析文章从结果出发,认为我是从2010年的洞出发反推出来的,但现实的发展截然相反。直到挖到这个漏洞后,我才查到了2010年发生的事情。那怎么在不借助2010年洞的前提下去挖呢?说起来其实很简单,将Spring的文档从头到尾看上几遍,再把Spring所有的功能模块与机制拆解、重组、列清单挨个构造场景分析过去,如果有耐心的话,就有几率能重现这个过程。当然,前提是你已经做好了一切为零的准备。

从我开始挖掘,到实际产出,大概用了小两个月的时间。毫无意外,这是无进展、无产出、无希望的两个月,直到峰回路转。

现在说起来很轻巧,但只有真正经历过这种长期毫无希望的挖掘过程的人才能理解,心态,永远大于技术,某种意义上我认为心态才是决定性的。心态还在,再不济就只是一次失败的挑战;心乱了,那就不过是尸体在敲键盘。那段时间基本每天都要小坐一会喝杯咖啡换换思路,否则心态可能先一步撑不住。

所以我从不认为这个洞是巧合,这是我应得的。说句自大的话,我不认为给相同的时间,其他人就能挖到,毕竟它已经躺在那里12年了,要被发现也早应该被发现了。

正如登山,谁也不知道,翻过这个绝望坡后究竟是另一个绝望坡还是顶峰已在眼前。

这就是“黑客与山”的意义:“黑客”是我,“山”也是我。所谓变化,说到底也只不过是我的变化。

但如果你问我是否还想再次尝试这样的豪赌,我的答案是不愿意。扛得住和愿意扛是两件截然不同的事,“赌”并不是一个好习惯,我赌了很多次,才中了这一回,那么下一次又要多久呢,没有人能回答这个问题。而我也已经对这种无可奈何的豪赌厌倦了。

按部就班

选义案部,考辞就班

除了稀有的“变”之外,生活还是由大多数的“不变”组成,并非一成不变,而是按部就班。

小到晚上几点丢垃圾,大到何时结婚生子,这些事情本身并不是如陨石般突然降临,而是早已有了计划,只不过随时间逐渐逼近。所以我更喜欢将这种“按部就班”看做一种生活的自然流转。

那具体的呢?今年看过的书、处理过的工作任务、做过的饭、跑过的步我认为都属于这一类。为什么登山不算呢,因为每次进山便感觉是一场赌局,赌自己的体力、高反状况、天气状况等等要素足以实现登顶,天时地利人和,一样不足便是下撤,意外性之大远称不上按部就班。

而每年的书依旧顺着书单挨个看过去,关注的领域也依旧不那么的“技术”。也发现了自己的几个坏习惯,看书笔记很少、勾画更少,很多书看过之后随着时间推移,精华反而逐渐遗忘。虽说一直都有种“尽管你记不全你看过的书,但正是它们塑造了现在的你”这种说法,可是这种大脑光滑的状态属实是令人难受,来年要养成及时温习的习惯,哪怕少看几本也是可以接受的。

其余的似乎就是日常琐事,还是少谈为妙。

不过现在看过去也属正常,22年的疫情局势以一种超出所有人想象的速度滑坠,又以超出所有人想象的转折触底反弹。一年似乎总是在“封控”——“核酸”——“封控”的链条中无限循环。这种状态下若是有太多的可说反而显得不太合理。毕竟作为一个合格的打工人,要有良好的自我管理意识。

只是没想到如此按部就班一年,却在尾巴上来了个银瓶乍破。一切事情仿佛被按下无限倍快进按钮,从全民感染到康复,再到逐渐遗忘,一共也只三个月出头,恍如隔世不过于此。作为至今未感染的幸运儿,有时候也会不禁怀疑一切只是场梦,还好偶尔出现的防疫余音能将人的思绪拉回来。

荒谬的其乐无穷

以前不知道从哪儿看过一个说法,要趁着年轻多去尝试一些疯狂的事情,这样等你老了,才能在壁炉旁与你的子孙回忆青春。这话不能细品,只能大概尝尝,其来源大概是某个鸡血文章。

不过我在某种程度上是认同这句话的,很早我便想过一个人到这世上走这一遭是为了什么,说的高级一点便是“人生的意义是什么”。这个问题一直困扰着我,只是此前限于学识、人生经历,始终无法给出一个让自己信服的答案。

大学时曾为此专门买了本胡适的《人生有何意义》以及一些哲学领域的书。《人生有何意义》这本书的意思大致是说:意义是由自己决定的,人生并不存在一个内置的意义,需要人去创造生活的意义,那么多活一日便多一日的意义,生命无穷,意义无穷。初看时以为找到了答案,后来再想却觉得难免有些诡辩的感觉,循环论证的既视感太强,越读越像是无可奈何的自我安慰。

因此决定看书,多看看跨领域的书,看看其他人是不是有更好的答案。结果书看的多了却发现这指不定本身就是个不存在的问题。于是,对于一个不存在的问题,很难再去讨论如何给出一个满意的答案。

我自小在农村与城市的往返中长大,往往每隔几年就会前往另一边,中国改革浪潮中曾经流行过的诸多标签都可以在我身上得到印证,也因此深入地感受过这些不同标签之间的割裂感。

感谢割裂感,让我脱离开现实的处境开始去思考一些形而上的问题,应该如何过完我这一生,这个问题也从此开始陪伴我。

直到现在,我仍然记得在小学四年级时,乡镇小学的老师提的一个问题:哪些同学到过县上或者出过县的。全班总共超过50人,只有三个人举了手。后面他又说了什么我已全然记不清了,但这个数字我记到现在,并将永远记下去。对于年幼的我来说,那是第一次感受到城市与农村的撕裂感,也是第一次明白人并不是必须要去大城市的,原来人也可以在农村一直生活下去,世界并不是一个单行道,无论是城市又或农村,我似乎从来都没有进入且理解过它们。一种突然而至又难以言喻的冲击抵达我心里。后来我知道,这种感觉哲学里将其称为“荒谬”,又或是“荒诞”。此荒谬非指文学中的极端错误毫无道理,而是一个哲学中的特有词,加缪如此形容它:

在一个突然被剥夺掉幻象与光亮的宇宙里,人觉得自己是一个外人、一个异乡人,既然他被剥夺了对失去家园的记忆或对已承诺之乐土的希望,他的放逐是不可挽回了。这种人与生命以及演员与场景的分离就是荒谬的情感。

于是我开始尝试另一种思路,不再从别人的嘴里、书里去寻找意义,而是彻底的否定它,否定所谓的人生意义。我所想要的绝不是一种终极的、至高的、不变的神性般的意义,而是我这个自由个体的自由意志之体现,这也可以套用哲学中的一句话来表述:我的存在先于我的本质。

什么叫我的自由意志?即是我对于不同选择经过郑重思考后的结果,正是这些与我自由相关的郑重选择构成了我,所以并不存在一个所谓的终极人生意义。郑重地活着即是生命本身,某种程度上,我是赞同存在主义的,人生的本来面目就是荒谬的,而我是自由的,接受荒谬但又反抗荒谬,或许我也从未被荒谬所驯服。

就此,对于“人生的意义”这一问题暂且有了一个粗浅的答案,答案便是:意义本不存在,存在的只是我而已,我的生命并不需要依附于一个所谓的意义而存在。去年的年终总结“今日方知我是我”出处也正在于此。

这看起来又似乎和胡适的观点是一致的,只不过我反对他所谓的“创造自我意义”罢了,无论这个意义是永恒的还是暂时的,无论是内置的还是人为的,我都反对,没有意义便是没有意义,无需加上一个转折在没有意义的前提下再去尝试赋予一个人造的意义,因为当下只有我,而永无意义。

我时常会思考什么才是我这个自由意志之追求,这个对大部分人虚无缥缈的词却是我真实的决策依据。教员有一句广为流传的句子,原句是:

与天奋斗,其乐无穷;与地奋斗,其乐无穷;与人奋斗,其乐无穷。

雪山可以算是与天、与地的“奋斗”,安全研究可以算是“与人”的奋斗。于我,这些本质上都是我自由意志的选择。我喜欢挑战,挑战可以让人忘记内心的烦恼,也可以带给我极度的充实,正如大学时痴迷CTF熬的无数通宵一样,只不过现在将挑战的范围再次拉大。

至于失败,是无所谓的,毕竟无论是攀登雪山,还是漏洞挖掘,我都失败了许多次。只要“挑战”本身还在,我想我就是兴奋的。四个月前的元旦,挑战的便是去年元旦折戟的四姑娘山,只不过目标从大峰换成了难度更大的二峰,最后幸运登顶。而今年的五一,我也准备再次挑战去年五一因暴雪而失败的乌库楚,这次不成、那便下次,总有功成时。

作为公司的一员,特定的工作岗位能接触到的面是有限的,工作的意义也是由他人赋予的,许多工作内容时间久了后也成了按部就班,而我喜欢做出自己的选择以面对挑战。如果想不断尝试新的挑战,如果想由自己来决定意义,对于一份工作而言这几乎是不可能的。因此熟悉我的人大概会经常听到我调侃着说“开摸”,且收获了一些“他驱力极弱”的评价,我个人对此也是比较认可的。

每每想到在一个岗位上待个三五年便会感到窒息,其原因就在于此。

于是决定创业去吧,这就是最原初的动力。

为什么是现在呢?因为别人所赋予的意义已经无法再令我兴奋,也因为有了愿意追求的、属于自己的选择,并且也做好了面对新一轮挑战的准备。关于这几年工作的感想,有时间的话,我准备单独用一篇文章胡扯胡扯,还是感觉有很多想要倾吐,而这篇文章就留给年终吧。

今年的最大收获,大概就是想清楚了很多事,包括自己想要什么、想做什么、不想做什么等等。无论是从心理,又或是现实看,一定都是收获颇丰的一年。

如果要从这些收获里总结出一句话来收尾这篇年终,那我想应该是:上帝已死,而我存在。