現在是 2021-03-03,剛做完決定的一週後。雖然說要到五月才會正式轉職,但想說在這個時刻先把當下的心情寫下來,否則再等兩個月心得感想就都從海馬迴消失了。

從五月開始,我暫時不寫前端了,我要內轉去公司做資安的部門當資安研究員。

我是做完這個決定之後,才突然意識到這其實是職涯上的一個滿大的轉變。在前端的經歷其實對於這個新的領域來說幾乎完全不適用,我可能就是一張白紙,一張,還很菜的白紙。

如果我哪天想回去做前端怎麼辦?會不會到時候怎麼寫都忘記了,自斷前端職涯,到時候回去又要從頭再來?如果我資安做出興趣來了,可是沒辦法留在原公司要到新公司,那是不是整個經歷重算?資安菜雞的重啟人生。

但這些其實都是我做完決定之後才想到的事,是我跟新部門主管表達意願,談好之後的工作內容,再跟原主管以及大主管確認完可行性跟時間,等一切都塵埃落定之後,我才想到的事。

對於職涯,我本來就沒有想這麼多,我抱持的信念是有能力的人自然能找到出路,如果找不到,是我能力不足。

會想轉去資安部門的原因有幾個,其中一個原因是,這本來就是我很想補齊的一塊拼圖,而另外一塊是演算法。

為什麼會是這兩塊?因為這兩塊是我曾經有機會學好,有機會做好,但我卻沒有做到的事情。我接觸這兩個領域的時間其實都很早,但自己沒有把握住,所以成了心中的一個小小遺憾,更詳細的故事可以參考:自學、哲學、講學:我的程式之路

再來就是對這個領域是真的有興趣,一直都滿有興趣的,不過我的時間大多數都拿來上班跟下班後的教學了,所以有興趣歸有興趣,不一定會付諸行動。真的比較接觸這領域是來這間公司之後,有同事跟我分享他正在修的資安相關課程,我就跟著他加減看一下,看一看解了課程的題目,發現真的很有趣。

後來參加了一兩場線上的 CTF(Capture The Flag,一種駭客解題的比賽),因為對網頁最熟所以只打 web 題,覺得有些題目出得真的很巧妙。我已經很久沒有因為什麼事情而熬夜了,但某一個我覺得我應該可以解出來的題目,讓我熬夜到快凌晨四點,拿到 flag 解出來之後才安心入睡。

而就是發現了(與其說發現,其實不如說是想起)這種對題目的執著、興趣以及熱情,讓我決定轉到資安團隊去。

這是 2021–06–05,寫了上面那段以後已經過了三個月,也在前陣子正式加入了公司的資安團隊。上面原本應該要寫更多的,但那天晚上寫那一段之後好像就有點晚了,就跑去洗澡睡覺了,於是後面都沒有寫到。

總之呢,就是在打 CTF 的時候讓我想起了解題的快樂跟對攻擊的熱情,再加上剛好有這個機會,沒有想太多就直接轉過去了。我並沒有先想好我的職涯發展要怎麼走,是要把自己定義成比較懂資安的前端工程師呢,還是專門研究前端相關的資安研究員,這些我都不知道,但就先試一陣子吧,看看狀況怎麼樣再來決定。

我知道真正轉去做資安其實跟 CTF 滿不一樣的,例如說 CTF 可能頂多就是兩三天,然後問題一定會有解答,通常方向也比較單一,說是 web 就一定是 web。可是在真實世界找漏洞的時候並不是這樣,是不一定有解答的,有可能走的那一條路是死路,也有可能會有需要的知識超出 web 的時候。

再者,資安也不是只有找漏洞,例如說有人往合規走,有人往偏向防禦的藍隊走,也有人轉成資安顧問。其實還有很多分得比較細的職缺,都屬於資訊安全的領域。而我喜歡的,可能只是這麼多裡面其中的一種。

目前為止轉 team 大概過了快一個月,剛開始在支援 team 裡面的一個暫時的系統的開發,能用熟悉的前端來幫助團隊達成目標,感覺還是挺不錯的。後來就是研究一些自己有興趣的題目,還有去試著找一些網站來打(有 bug bounty 的那種)。

這段期間時不時都會有種眼界大開的感覺,而且我覺得厲害的是,這並不是因為「知道了一個不知道的東西」而感到驚訝,而是「知道了以為自己知道的東西」。寫了幾年前端,看過的東西其實不少,比較沒有什麼會讓我「哇!」出來的東西,或者換個角度講,應該是我對那些東西也沒有太大的興趣。

比如說一些新的架構、新的框架或是語法,看到之後頂多就是「嗯嗯」,不會有太多的情緒起伏,而熟悉的 JavaScript 除了偶爾會碰到一些 edge case 讓我感興趣以外,其他狀況我都自認跟它很熟了。

但在資訊安全的領域就完全是另外一回事了,我從我自以為熟悉的前端領域中,得到了很多新的知識。這感覺就像是別人如果跟我說飛機的知識,我會覺得哇好酷,以前都不知道,但如果別人跟我說 JavaScript 其實可以這樣運用來達成攻擊,我就會覺得「哇操勒,居然可以這樣嗎!!太屌了吧!!我寫這麼久怎麼完全沒想過!」

像我前陣子看到的這一篇:An XSS on Facebook via PNGs & Wonky Content Types

這篇真的很讚,先發現了一個可以把 PNG 當 HTML 來 render 的 bug,然後在 PNG 裡面塞入資訊,讓它用文字顯示時可以順利轉成 script tag,就得到了一個 CDN domain 的 XSS。

但在 CDN 可以 XSS 沒什麼用,於是就找了有哪些 subdomain 有指到 CDN 去,成功找到一個,再來利用 document.domain 以及 Page Plugin 讓兩個網址變得同源,就可以偷到 CSRF token,然後對主站做操作。

就是這些小漏洞一步步串起來然後變成最後這個樣子。

還有這篇:Attacking SSL VPN - Part 3: The Golden Pulse Secure SSL VPN RCE Chain, with Twitter as Case Study

原本以為繞不過的限制,換個角度去思考,把錯誤訊息當作程式碼來執行,就能順利繞過,真的很強!

上面這些 writeup 都是我看到的時候會不自覺地驚嘆的那種,因為這些都突破了我對現有知識以及領域的想像。

在前端的世界中,XS-Leaks wiki 也是突破了我的眼界,讓我吸收了很多新的知識,而且也開始對這類型的攻擊方式產生興趣。

講到 writeup,這也是我很喜歡這個領域的一點,那就是通常漏洞的發現者都會把發現的過程寫成 writeup,而寫得好的文章,真的會讓讀者很享受在那個過程,感覺好像就是自己在解問題一樣。對於一個本來就愛寫的人來說,這確實也是很吸引我的一點。

今年對我來說是個「放下」的一年,要放下一些陪伴了自己好一段時光的事物,前端是第一個。

雖然說暫時離開了前端相關的工作,但其實平時常關注的漏洞還是跟 web 有關,我也希望能把這些前端資訊安全相關的概念,再帶回去給前端工程師們,讓他們也體驗一下我當初的那種驚奇之感。

前端掰,資安嗨!