Core: `SecurityUtils.createMtlsKeyStore` should use a fixed algorithm for creating the `PrivateKey`
還沒有人認領這個 Issue。
評估
研究方向
從 SecurityUtils.createMtlsKeyStore 開始,檢查 issue 中所示的 KeyFactory 呼叫周圍目前對 IllegalArgumentException 的處理。查看 Error Prone 關於 InsecureCipherMode 的指引以及 InvalidAlgorithmParameterException API,然後在啟用 Error Prone 的情況下執行建置。完成的標準是:不安全或不受支援的金鑰演算法依照指定方式處理,且警告已解決。
由索引模型根據 Issue 內容生成。
描述
Callers of SecurityUtils.createMtlsKeyStore can direct the use of insecure algorithms in the construction of the mTLS connection. In general, we attempt to affix the algorithm used to inhibit use of algorithms with known vulnerabilities.
Personally, I would be fine with denying provided certs whose cert.getPublicKey().getAlgorithm() was DH or DSA, but in lieu of blocklisting known bad algorithms, perhaps it'd be more security affirmative to allowlist currently-OK algorithms, so we only ever use good versions, and suffer toil later if we have to retrofit additional entries.
My suggestion is to create a case statement just below where the method currently throws IllegalArgumentException for various cases, and add the set of known good algorithms, and throw an InvalidAlgorithmParameterException if it is not one of those. In addition, special case DH and DSA to give references to their vulnerabilities as described in InsecureCypherMode.identifyDiffieHellmanAndDsaVulnerabilities.
/cc @sophieschmieg, as her guidance/requirements will be canonical for importing whatever changes are made here into the monorepo.
Environment details
- API: Core
- OS type and version: 5.17.6-1rodete1-amd64
- Java version: OpenJDK Runtime Environment (build 11.0.13+8-google-release-451398016) OpenJDK 64-Bit Server VM (build 11.0.13+8-google-release-451398016, mixed mode, sharing)
- version(s): ~head (with local patches)
Steps to reproduce
- Add errorprone warnings to the build
- Build.
SecurityUtils.createMtlsKeyStore will generate an InsecureCipherMode warning.
Code example
PrivateKey key =
KeyFactory.getInstance(cert.getPublicKey().getAlgorithm()).generatePrivate(keySpecPKCS8);
- 主要語言
- Java
- 星號
- 1.4k
- 分支
- 476
- 平均合併
- 10 小時 47 分鐘
- 30 天內合併 PR
- 3
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
googleapis/google-http-java-client 的其他 Issue
-
Core: Validate header names and values to prevent CRLF injection可能已有人在做 @insaf021 於 106 天前認領。 未關閉priority: p3
難度 2/5 1-3 小時 新手友好度 78/100
-
Core: XmlPullParser processes external DTD entities (XXE) — disable FEATURE_PROCESS_DOCDECL in Xml#createParser()可能已有人在做 @insaf021 於 106 天前認領。 未關閉priority: p3
難度 2/5 1-3 小時 新手友好度 84/100
-
Core: LowLevelHttpResponse not disconnected when HttpResponse construction throws RuntimeException可能已有人在做 @insaf021 於 107 天前認領。 未關閉priority: p3
難度 2/5 1-3 小時 新手友好度 84/100
-
type: cleanup
難度 2/5 1-3 小時 新手友好度 68/100
-
org.apache.http.conn.ssl.SSLSocketFactory is deprecated可能重新可做 關聯的 PR 已關閉且未合併。 未關閉priority: p2 type: cleanup
難度 2/5 1-3 小時 新手友好度 65/100
查看 googleapis/google-http-java-client 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 80/100
finos/fluxnova-bpm-platform#387 ·
維護者通常 4 天內回覆
-
難度 1/5 1 小時以內 新手友好度 88/100
-
難度 2/5 1 小時以內 新手友好度 84/100
cpp-best-practices/project_validator#251 ·
維護者通常 1 天內回覆
-
backend enhancement
難度 2/5 半天 新手友好度 70/100
damodharg6/payledger#16 ·
-
[Bug]: An initiative list with no current entry logs an error on every change可能已有人在做 @dwizard0 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 75/100
維護者通常 1 天內回覆