這篇文章有點算是延續我之前寫的 ISC2 CC 心得,來分享我這次準備 CSSLP (Certified Secure Software Lifecycle Professional) 的心得與經驗。不過先講在前面,這次準備時間其實非常短,只有六天,所以與其說是「完整準備指南」,更像是我在有限時間內,怎麼用既有經驗去快速對齊這張證照在考什麼。
當然這個前提也是建立在我自己本身具有滲透測試、攻擊面服務、以及具備 DevSecOps 的經驗。(這邊附上我的 LinkedIn 給大家參考)
在準備 ISC2 的 CSSLP 時,因為是第一次考 ISC2 的考試,多少還是有一點「第一次」的緊張感。所以我先是去考了ISC2 CC來體驗一下,然後考完CC的隔天就去考了CSSLP。
關於 CSSLP (Certified Secure Software Lifecycle Professional)
CSSLP 是由 ISC2 推出的證照,主軸很明確,就是 Secure Software Development Lifecycle,談的就是安全軟體開發生命週期,目的是培訓與鑑定你是否為安全軟體開發專家。換句話說,它在意的不是你會不會打漏洞,而是你能不能了解軟體開發的每一個階段,並且在開發階段把「不安全」這件事提前消滅或降低。
我自己的角度來看,他不是一個很技術的認證,但如果從管理與治理的角度來看,裡面的內容還是會有不少的技術知識是需要掌握了解的。你可能需要了解一些的技術實作觀念,例如漏洞的成因、實作上最佳修補建議,但這樣的內容還是偏少的。主要還是在於在了解開發的每一個階段,從需求開始,一路到設計、開發、測試、部署與維運。每一個階段都有一些它「應該做的事」,那這些事情是甚麼,還有做這些事情的正確流程與決策。像是考題會出現一些陷阱,就是把不同階段的作法混在一起,讓你選出一個看起來也合理,但其實發生在錯誤時機點的答案。
如果在準備這張認證時,沒有先把這條流程在腦中建立起來,好好搞懂的話,單純靠刷題或背名詞,很容易就會選到「看起來沒有錯」,但實際上可能是流程錯誤,或者是非最佳解的答案。
👉 CSSLP 雖然不像 CISSP 那麼知名,但我認為 CSSLP 絕對也是一張進階的資安專業認證
CSSLP課程大綱分成八個Domain,分別為:
- Domain 1. Secure Software Concepts
- Domain 2. Secure Software Lifecycle Management
- Domain 3. Secure Software Requirements
- Domain 4. Secure Software Architecture and Design
- Domain 5. Secure Software Implementation
- Domain 6. Secure Software Testing
- Domain 7. Secure Software Deployment, Operations, Maintenance
- Domain 8: Secure Software Supply Chain
CSSLP(Certified Secure Software Lifecycle Professional)照 ISC2 官方的說法,是一張專注在「安全軟體開發生命週期」的專業級證照,用來驗證你是否具備在軟體開發各階段中整合資安的能力。以官方角度來說,它也不是偏入門的觀念證照,並且是更著重在開發流程、設計思維與實務決策,強調你能不能在對的時機點做出正確的安全判斷,不是單純的技術操作或攻擊能力。考試為 125 題選擇題,考試時間 3 小時,滿分 1000 分,700 分通過。
關於 CSSLP 的準備與考試
這次我總共準備六天,第七天就去考試了。會這麼做,不是因為我覺得 CSSLP 很簡單,而是因為它考的內容,剛好和我過去累積的經驗高度重疊。我平常做滲透測試,會需要了解風險與漏洞的原理,也會接觸到弱點修補、架構問題。然後之前有實作 DevSecOps 的經驗,還有出書。
很多東西如果換個角度來看,其實就是在不同階段處理安全問題,只是平常不會用「Domain 1 到 Domain 8」這種方式去分類而已,根據這個考試的大綱換個模式整理一下想法,大概就通了。所以在準備的過程中,我做的事情比較像是把這些零散的經驗,重新對齊到 CSSLP 的框架裡。
- 第一天我花時間看了一些別人的心得、網路上 cheat sheet 小卡片、還有看官網的整個 CSSLP Outline 看有沒有甚麼我不知道的名詞就查一下。重點不是背,而是確認每個名詞我是否真的理解它在實務上的意思。
- 第二、三天主要看了網路上一個joeyhage整理的筆記教材,把八個 domain 大致都看過,有遇到不熟悉的地方就會去搜尋,或是跟AI討論。也寫了一些題目,ISC2官網有很簡單的模擬試題,但題目很少,後來就是請ChatGPT出題目給我寫。
- 第四天,看我自己的書XD,好好複習一遍。其實當初想考CSSLP的部分原因,就是有好幾個人跑來跟我說我的書對他們考CSSLP有幫助,或是跟我說看完書的內容,建議我可以直接考CSSLP了。然後花了滿多時間都在跟AI討論一些想法。然後還有翻一下一些國外 CISSP 整理筆記,比對一些觀念。
- 第五、六天,本來已經有點不知道要看甚麼了,意外得到朋友的支援,有 CSSLP Certification All-in-One 這本書可以看,這兩天就都在看這本書。還有請 AI 幫我整理一下流程順序、和 AI 討論一下相近的名詞的差異。
其實越後面幾天,就有點像在補洞,看到哪裡不熟就補哪裡,甚至還稍微翻了一點 CISSP 的內容,因為有些概念是共通的。整體來說… 這六天沒有什麼很系統化的讀書計畫XDDDD。一部份的我,感覺比較像是快速把「已經會的東西」整理成「考試能用的形式」。當然另一部分,還是學到了很多很多的東西。
真正進考場之後,感覺題目幾乎都不難,但許多題的選項確實會讓你猶豫。很多時候你會看到兩個甚至三個選項都覺得合理,這時候就要謹慎思考,流程與決策的正確性,每個選項是不是有少提到的東西,或是非該階段的最佳實務。
舉一個很典型的情境。假設題目描述你發現一個漏洞,直覺上很多人會選擇通報或修補,因為這在實務上確實是你會做的事。但從流程角度來看,第一步其實應該是確認這個問題是不是誤判,因為如果連問題本身都還沒被驗證,就直接進入修補或通報,反而會造成額外的混亂。
這種題目之所以容易錯,是因為我們在工作中,很多步驟已經被「內化」了,你在腦中其實已經做完驗證,只是沒有意識到那是一個獨立的步驟。但在考試裡,它會被拆開來問。
其實有些題目也是因為這樣的緣故,導致坊間有些謠言,說技術人或是實務經驗比較豐富的人,考這種類型的考試反而比較難過,說是因為考試題目不符合實務。其實完全沒有這回事,考試內容觀念都是正確,其實就是你平常忽略了許多東西,或是你遇到了一些特別案例(不過確實民間有很多特別的個案XD),更嚴重也不罕見的,就是你觀念錯,而且可能是你們公司的規範就是錯的。
考試當天:考試搭車到市政府捷運站,下車走短短幾分鐘就可以到考場大樓(Pearson VUE 授權考試中心)(聯合世紀大樓),進去後會檢查護照,確認基本資訊,然後東西會鎖在置物櫃,外套跟水還有雜物都是放在外面。接著會進到一個小電腦教室(有隔板,大家有點像是背對背的),進去用電腦作答選擇題。考試時間是三個小時,這次的考試,我記得我最後剩餘的時間約40分鐘,整體來說考試時間應該還是算充裕的。考完當下就會拿到一張紙,知道考試測驗結果。
CSSLP 一些我覺得值得注意的提醒
最後整理一些我的經驗和提醒分享,這部分我會用條列,有的比較簡單理解,有的會稍微補一下背後的想法。
- 考試是英文,所以英文很重要,真的很重要。
- 熟悉安全軟體開發中的基本名詞、縮寫是必要的,但重點不在背誦,而是你看到題目時,能不能立即理解它在講什麼。
- 觀念類例如像 CIA、AAA、最小權限、Fail-safe 這些概念,其實都很基礎,但如果沒有內化,在題目裡會變成干擾。
- 然後像是縮寫 ATO、GRC、RTI、JIT 這些,如果你連縮寫都不知道甚麼,會完全無法作答。
- 其實每個 Domain,就是照階段,回到一個標準的SDLC,了解每個階段的目的與精神是甚麼很重要,基本上這個理解,就不會掉入一堆陷阱題。所以在準備的時候,腦袋中一定要建立 SDLC 的「階段感」。很多題目本質上是在考你現在處於哪個階段,然後選出該階段應該做的事。
- 需求 → 設計/架構 → 實作/編碼 → 測試/驗證 → 部署 → 維運/維護
- 不同階段,單看回答的內容,答案看起來都是對的,但是它問的是需求,你就不能回答實作的選項
- 例如題目問 What is the BEST for security requirement? 你要使用標準演算法 vs 使用sha256+salt,前者才識需求,後者是實作
- CSSLP 的一個核心精神是以風險為基礎(risk-based),可能要好好理解甚麼叫做Risk-based。不然可能會很辛苦。
- 有實務經驗的人不一定比較吃香,關鍵在於你的觀念是否正確。我以前也聽過有人說,有經驗反而不好考,但我現在覺得,真正的問題不是經驗,而是很多經驗其實建立在錯誤或不完整的理解上。如果你能把經驗轉換成正確的流程與原則,那當然會變成優勢。
- 這個也是考完後剛好跟大神吃火鍋聊到的,我說其實考CSSLP我不太擔心,畢竟有很多實務上累積的經驗、知識跟觀念,所以考試滿簡單的。他說「那還好你過去的經驗是正確的觀念」。說真的~這個真的是滿重要的,也是滿有道理的。許多學生或非資安人,可能會意外,業界其實還是有不少人,即使有多年工作經驗,但可能都還是帶著錯誤觀念。
- 有時候不能怪大家,因為許多工作上的因素、甲乙方的問題、甚至連監管單位或規範都一堆問題與錯誤觀念。所以大家在實務上執行時,當然做還是可以做,可是就有很多做法都是不太正確地而已,只是你自己有沒有認知到這件事情。太多人在實務上遇到不正確觀念,卻沒有好好理解,或是腦袋轉不過來而已。
- 舉幾個比較好理解的範例好了,例如先前在貼文提到的OWASP TOP 10情況,我知道OWASP TOP 10不是用來做滲透測試的標準,但甲方會要求、監管機關可能也會問,反正我報告寫就我們會依循OWASP TOP 10,但我是知道這個不是最正確的,所以考試的話我不會掉入這種陷阱。
- 還有遇過有單位內規規範還是流程,是「不能有漏洞的」。我還真不瞭解甚麼叫做不能有漏洞XD。所以那個單位裡面的人可能就會認為,今天有漏洞是不是就沒辦法通過ISO 27001,或是弱點處理方式就只有把弱點修補到好這一種方法。但你要知道這不是正確的觀念,不管你的公司是不是這樣做。
- 不要過度解讀題目,也不要自己腦補情境太多。CSSLP 的題目通常會給你足夠資訊,如果你開始想「現實中可能還有別的狀況」,反而會把自己帶偏。當然也有題目或選項給的資訊看起來非常不足夠的,這種情況也不要去往現實中奇怪的狀況去想,而是回頭去思考整個標準流程與決策。
- 可以多跟AI討論,尤其是一些名詞接近,或你無法區別差異的東西。
- 例如 Risk Assessment / Risk Management / Vulnerability Assessment / Vulnerability Management,如果選項跳出這四個選項,至少你心中要有底每個項目的本質差異是甚麼。
- 可以請AI問你一些問題,針對自己的弱點或不熟悉的地方多出題多討論。
整體來說,我覺得 CSSLP 是一張很棒的證照,它涵蓋了許多資安流程與決策觀念、安全軟體開發每個階段流程、也具有一點技術能力的考驗。雖然它不像 OSCP 讓你變成會打 exploit 的人,但會讓你更清楚在整個軟體生命週期中,每個安全活動應該出現在哪裡,讓你從開發就降低整體安全風險。不管是對於甲方要顧好自己公司的安全開發,還是乙方要協助客戶導入安全技術與流程,都是非常有幫助的。只是肯定這之間還是會有一段 Gap,要如何把這些偏理論與最佳實務的內容,去套用到實際的企業環境當中。
