三毛和栈溢出有什么联系?
2023-5-31 08:53:0 Author: mp.weixin.qq.com(查看原文) 阅读量:5 收藏

简直莫名其妙的问题。女作家三毛和信息安全里经典的栈溢出能扯上什么关系?

非要牵强附会,那就是都和 🇮🇨 那利群岛有关。

这次是旅游博主上线。

读过三毛作品,或者听说过她和荷西的故事的读者应该马上就反应过来了。三毛和荷西在撒哈拉的阿尤恩曾定居过一段时间,并以这段经历创作了不少作品。后来他们因为战乱搬到了大加那利岛首府附近的 Telde。

一看我就不是什么读书的人。

毫不忌讳地坦白说,我登上这座岛之前并没有读过三毛的作品,甚至不知道她俩在这住过。加那利群岛,欧洲海南岛罢了。

直到第一天晚上查找附近的景点,发现三毛故居,突然想起这对灵魂伴侣的故事。耳边开始回响起童年听过无数遍的《橄榄树》。

不少人接触三毛的作品都是在中学。可惜我那时已经注定了码农的命运,连网文都不看,更不要说文学作品。高中在省城,周末没少去新华书店白嫖。那会就已经看 O'Reilly 的动物书了。完全不记得看了什么,至少品味还算在线。

所以怎样的牵强附会,才能让三毛和栈溢出有联系?

加那利群岛(Islas Canarias)是西班牙的自治区,摩洛哥以西 100 公里处。关于这个群岛的名字来历,有几种说法。

大加那利岛有一个拉丁语名字 Canariae Insulae,意思是“多狗的岛”。据说因为岛上有很多体型庞大的狗,所以被命名为 Canaria。岛上繁育出一种犬种叫加纳利犬,比比特犬还要凶猛。到底是狗因岛而得名,还是岛因狗而得名,似乎都说得通。

另一种猜想是僧海豹的拉丁语名 Canis Marinus,字面直译就是海狗。岛上曾经分布大量僧海豹,可惜现在生活在其他地区,已经成了极危物种。

最后一种说法是岛上的土著居民对狗很崇拜,于是罗马人给它们起名 canaari(和狗在一起的人

首府 Las Palmas de Gran Canaria,现代化程度很高,看上去就是一个海滨城市

说(抄袭)完了岛名字的来历,下面该讲讲金丝雀了。

金丝雀产地就在岛上,学名 Serinus Canaria 自然就是以岛来命名。英文 Canary 这个单词有没有让你想起什么……对了,stack cookie 也叫 stack canaries。

1996 年的经典文章 Smashing The Stack For Fun And Profit 针对栈缓冲区溢出这种未定义行为,总结出了一种固定的漏洞利用模式,启发了无数安全研究。

为了一定程度上限制栈溢出发生后被利用,一种简单有效的思路被应用到编译器中。

栈溢出最经典的思路就是覆盖返回地址,指向 shellcode 或者一连串 ROP gadgets,从而在函数返回的时候执行任意代码。

编译器在分配栈变量时预留一个 stack canary (cookie) ,在每次程序初始化时生成一个难以预测的值。如果再次尝试简单地线性溢出到返回地址,就会修改到这个值,让程序检测到溢出行为,直接退出。

当然这种防御也有被绕过的可能性,例如非线性的溢出漏洞,可以跳过 cookie 值;或通过特定条件信息泄露,导致随机的栈 cookie 被远程读取等。最令人啼笑皆非的是 2019 年盘古团队披露的一个 iOS 漏洞。由于编译器生成的布局有误,导致 stack cookie 完全失效,直接从 2019 年穿越回 1996 年。

Towards Discovering Remote Code Execution Vulnerabilities in Apple FaceTime

https://i.blackhat.com/USA-19/Thursday/us-19-Huang-Towards-Discovering-Remote-Code-Execution-Vulnerabilities-In-Apple-FaceTime.pdf

为什么起个鸟的名字?

很多人饲养金丝雀是因为这种鸟唱功了得,但煤矿不是。

曾经煤矿的工作条件恶劣,矿工时常有中毒的危险。金丝雀对毒气比人类敏感,工人便将鸟带到矿井下,一旦发现鸟出现异常就表明矿井里毒气含量超标,需要及时撤离。后来 canary in the coal mine 演化成了习惯用语,表示危机即将到来。

栈溢出保护的机制便借用了这个俗语,起名 stack canaries。

通过这个群岛,居然把三毛和栈溢出强行联系了起来。


这年头扮文青已经唬不了人了,我也大方地承认没看过她的书。既然都来了,就顺便去看一眼他们的房子。

地址 C. Lope de Vega, 3, 35214 Playa del Hombre, Las Palmas,从机场直接打车过去非常近。我住 Las Palmas de Gran Canaria 城里,推荐的路线是先坐公交车到 Telde,然后打车。

风景确实不错,出门就是大海。房子已经易主,我就不多做逗留。陆陆续续来参观的人太多,当地政府在墙上放了一块牌子。

荷西遭遇意外在一个岛,也葬在那边。这次不在我的行程里,不过我有别的动机想去。La Palma 岛上有一座天文台,也是知名的观星胜地。希望能早点考下来欧盟驾照,不然真没法去……

5 月 30 日还是 Fiesta de las Canarias 节,岛上有游行庆祝活动。当然规模远不如二月份的狂欢节。

最后彩蛋。

我选了个离海滩很近的民宿,第一天在楼下转悠就注意到一家名叫“金门饭店”的中餐馆。后来得知这家餐厅就是三毛生前的挚友 Nancy 张南施的那一家。

午饭的时候想着随便去打个卡看看,结果居然真让我遇到了 Nancy。她平时不经常在店里的。

想必这几十年来拜访的人很多。在我开口询问她是不是就是 Nancy 并得到确定答复之后,她拿出了和三毛的书信和照片。
网上看到的一些游记,似乎以前还能看到原件。现在为了保护,当然只有影印的版本。
我问她,这几十年一直都有陆续有陌生人来拜访,问同样的问题,会不会有点打扰。她表示不会有困扰,自己也很乐意分享故事。

El olivo y la flor del ciruelo: la estancia de San Mao y José María Quero en la isla de La Palma

(橄榄树与梅树花:三毛与荷西·马利安·葛罗在拉帕尔马岛的时间)

这本 2014 年出版的西班牙语的书,收录了不少影像资料。这两年顺带刷 Duolingo,虽然门都没入,能勉强看懂一些句子。我还发现了一些之前在网上从未看过的照片——我不是粉丝至少也是个搜索小能手。

参考资料

[1]. 加那利群岛- 维基百科
https://zh.wikipedia.org/wiki/%E5%8A%A0%E9%82%A3%E5%88%A9%E7%BE%A4%E5%B2%9B

[2]. Word origin: Canary
https://johnansell.wordpress.com/2010/04/06/word-story-canary/


文章来源: https://mp.weixin.qq.com/s?__biz=Mzk0NDE3MTkzNQ==&mid=2247484811&idx=1&sn=580ff3a8711ecc7dc6cab6a9d25162f8&chksm=c329fb7bf45e726d4f83764c457f421bb5845abe4d269b4c2c190f581a4a44e76f1b4ac5964b&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh