今年的 Code One,其中 Steve 參與 2 個關於 security 問題的 talk:
《A Modern Fairy Tale: Java Serialization》1
由來自 IBM 的 Steve Poole 講述了殘酷又血腥的現代童化:Java Serialization。由序列化的結構設計與它的運作方式詳細地解說,我們可以知道『壞人』是如何看待序列化中『可口的弱點』
在 28:03 開始介紹一些降低風險的做法 https://youtu.be/jiLk-5aK-0A?t=1683
[28:03] 禁止 readObject 的功能 (需要改原始碼,看起來是不切實際的建議啊。)
[29:17] 使用 jdk.serialFilter 設定黑、白名單
[30:15] 客製化 ObjectInputStream,不倚賴預設的 object graph,自己實作每一個 field 的讀寫。
[31:12] 使用 Java 9 的模式化功能,降低可利用的 class 數量
[31:56] 使用 DTO 簡化原本複雜到需要倚賴 Serialization 封裝整組 object graph 的物件(配合客製 ObjectInputStream,不倚賴預設的)
[32:40] 放棄 Java 預設提供的 Serialization,例如轉成 JSON 資料(但要注意 library 有沒有安全問題)
另一場的前半是由 Steve 講解,後半場開始聊 Container 環境下的 Security,特別是 Container 仰賴著 root 權限執行,當它被攻陷時,就可能拿到 root 了。
https://youtu.be/-6_wBlXuUkM?t=1150
- [19:08] 開始講解 Container 101,由 Docker 到 k8s
- [21:47] 『你如何看待 container 呢?』(小編不想破梗,但看到後來的圖笑到不支倒地)
- [23:26] Container Runtime Security 101 文章推薦
- [25:49] 注意你的 Container 供應鏈是否具安全意識並有能力及時安全更新。
- [26:37] 運用 labeling 的功能,幫你的 image 標上 metadata (編:一種食品成份標示的概念)
https://youtu.be/-6_wBlXuUkM?t=1963
- [32:39] 在 build pipeline 加掛 plugin 偵測問題
例如:
Clair Automatic container vulnerability and security scanning for appc and Docker * https://coreos.com/clair/ * https://github.com/coreos/clair * https://github.com/arminc/clair-scanner