Core: `SecurityUtils.createMtlsKeyStore` should use a fixed algorithm for creating the `PrivateKey`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Beginne bei SecurityUtils.createMtlsKeyStore und untersuche die aktuelle Behandlung von IllegalArgumentException rund um den im Issue gezeigten Aufruf von KeyFactory. Prüfe die Anleitung InsecureCipherMode von Error Prone und die API von InvalidAlgorithmParameterException, und führe den Build mit aktiviertem Error Prone aus. Fertig ist die Arbeit, wenn unsichere oder nicht unterstützte Schlüsselalgorithmen wie angegeben behandelt werden und die Warnung behoben ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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);
- Vorherrschende Sprache
- Java
- Sterne
- 1.4k
- Forks
- 476
- Ø Merge
- 10 Std. 47 Min.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus googleapis/google-http-java-client
-
Core: Validate header names and values to prevent CRLF injectionEvtl. vergeben @insaf021 hat das vor 106 Tagen übernommen. Offenpriority: p3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Core: XmlPullParser processes external DTD entities (XXE) — disable FEATURE_PROCESS_DOCDECL in Xml#createParser()Evtl. vergeben @insaf021 hat das vor 106 Tagen übernommen. Offenpriority: p3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
-
Core: LowLevelHttpResponse not disconnected when HttpResponse construction throws RuntimeExceptionEvtl. vergeben @insaf021 hat das vor 107 Tagen übernommen. Offenpriority: p3
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
-
type: cleanup
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
org.apache.http.conn.ssl.SSLSocketFactory is deprecatedEvtl. wieder frei Ein Pull Request dazu wurde ohne Merge geschlossen. Offenpriority: p2 type: cleanup
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
Alle Issues in googleapis/google-http-java-client
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
finos/fluxnova-bpm-platform#387 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
-
Schwierigkeit 2/5 Unter einer Stunde Anfängerfreundlichkeit 84/100
cpp-best-practices/project_validator#251 ·
Maintainer antworten meist innerhalb von 1 Tag
-
backend enhancement
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 70/100
damodharg6/payledger#16 ·
-
[Bug]: An initiative list with no current entry logs an error on every changeEvtl. vergeben @dwizard0 hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
Maintainer antworten meist innerhalb von 1 Tag