Paternity Leave: Month 2

Michael Lynch

育嬰假:第二個月

一句話總結

不工作比我想像的還要困難。

本月亮點

  • 意外發現,要我不工作真的很難。
  • 睡眠狀況稍微好轉了一些。
  • 我用 Nix 打造了一個俐落且可重複使用的 fuzz testing(模糊測試) workflow。

目標評分

每個月月初,我都會訂下想完成的事情。以下是這個月的達成狀況:

好好享受家庭時光

  • 結果:花了很多時間陪伴太太和剛出生的兒子,也常和親朋好友見面。
  • 評分:A

暫時不工作一下也沒關係

我從來不覺得自己是那種非得一直工作不可的人,但我發現要真正放下工作休息,其實很不容易。

回顧過去三個月工作上的進展少之又少,我就會感到焦慮:「要是這就是我的新常態怎麼辦?要是往後每個月都只有幾小時能工作,要怎麼謀生?」

我知道這些擔心大多是非理性的。很多人都有小孩——他們照樣正常工作,一切也都好好的。更何況,我附近還有很多家人很樂意幫忙照顧小孩。

當我回頭看看時間都花到哪裡去,就會覺得擔心沒時間工作更顯得可笑:時間都花在和親友的長時間聚會,以及和家人一起從事的有趣活動上。

如果情況是:「天啊!光是餵奶、換尿布跟補眠就已經沒時間了!」那也就算了。但實際上,我的反應比較像是:「天啊!昨天吃了三小時的早午餐、又跟朋友聚了七小時,結果沒時間寫部落格!」

另一個原因是,我招待客人與拜訪他人的時間,遠比平常多得多,所以部分的焦慮其實只是內向者在額外的社交時間後感到疲憊。

所以,我只能不斷提醒自己:暫時不工作一下也沒關係,等兒子再大一點,我就會有更多時間,而且我對時間的運用仍大致掌握在自己手上。

調整我們的新生兒睡眠策略

身為新手父母,談論睡眠感覺有點老套,因為所有新手爸媽似乎都莫名地執著於睡眠。但良好的睡眠對我們的日常生活影響巨大,我想這就是為什麼大家都在談這件事。

一開始,我太太負責所有的餵奶,我則負責所有的換尿布。我們很快就發現,這意味著到了夜裡,我們兩個每 60 到 90 分鐘就得起床一次,所以兩人都睡不好。

幾週後,我們改為輪班制,一個人同時負責餵奶和換尿布,另一個人則睡覺。我負責第一班,從晚上約 9 點到凌晨 2 點,我太太則在我兒子凌晨 2 點後第一次醒來時接手。這是一大進步,因為這確保了我們在輪休時都能獲得 4 到 5 小時不間斷的睡眠,輪班期間還能零散地睡上幾小時。

我們也發現,認真重視睡眠衛生後,兒子睡得更好。我們有時喜歡晚餐後看一小時電視放鬆,但我們注意到,沒看電視的夜晚,大家都睡得更好,尤其是兒子。我以前常在兒子睡著時,在客廳讀一、兩個小時的書,但我們讀到開著燈可能會干擾嬰兒睡眠,所以我已經不再那樣做了,雖然我很懷念那段安靜陪著他閱讀的時光。

整體來說,我們的睡眠策略運作得不錯,我大多數時候都覺得有充分休息。隨著兒子睡眠狀況的變化,以及我們發現新的技巧,會持續調整。

Nix 是用於 fuzz testing 的絕佳工具

大約十年前,我擔任資安顧問時,曾使用 fuzz testing在 VLC 中發現一個嚴重漏洞,也就是那個開源影片播放器

過去十年間,圍繞 fuzz testing 的工具已有大幅進步,所以我一直很想試試最新的技術發展。

我找到了 Antonio Morales(安東尼奧·莫拉雷斯)在 2021 年的 fuzz testing 教學系列。它使用 AFL++,我感覺它已經不再是最頂尖的 fuzzing 工具了,但我還是開始跟著做。第一個教學示範如何針對 xpdf 進行 fuzz,這是一套開源的 PDF 處理工具。我修改了步驟來針對最新版本的 xpdf,並發現了一個新的記憶體越界讀取錯誤,這讓人很興奮。

後來發現,早在 2024 年 9 月就有人發現了同一個漏洞,而那份報告被駁回了,因為更早之前就有人透過私人電子郵件向維護者回報過。我懷疑他們也是跟著同一個教學才找到的。在我發現這個系列幾週後,它登上了 Hacker News 首頁,所以似乎有不少人正莫名地偶然發現這個三年前的教學。

在所有 fuzzing 教學中,讓我印象深刻的一點是,光是建置環境就非常麻煩。莫拉雷斯要求讀者使用特定版本的 Ubuntu 從原始碼編譯 AFL++,但那些指示現在已經過時了,因為他提到的所有套件都已經改變了。

與其去追蹤莫拉雷斯提到的所有套件版本,我看到了使用 Nix 的機會。它讓我能在原始檔中固定工具版本,並確保它們未來不會在我不知情的情況下改變。

我成功用 Nix flake 建立了完整的 fuzz testing 工作流程,所以我只要輸入 nix run,Nix 就會下載初始語料庫、編譯目標程式並開始 fuzzing。我打算在本月稍晚發表一篇部落格文章來說明整個運作方式。

總結

完成了什麼?

  • 享受了家庭時光。
  • 擔心自己是不是享受了太多家庭時光。

學到的教訓

  • 對於休太多假的擔心,大多是非理性的。
  • Nix 是建立 fuzz testing 工作流程的好工具。

下個月的目標

  • 享受家庭時光。
  • 發表我用 Nix 進行 fuzz testing 的教學。

需要協助的地方

  • AFL++ 的現代替代品是什麼?是 honggfuzz 嗎?
    • 如果你從事資安工作,請告訴我現在最酷、最新的 fuzz testing 工具是什麼。

原文由 Michael Lynch 發布

本文章由 muse-spark-1.2-contributor 進行翻譯