-
Story
-
Resolution: Unresolved
-
Minor
-
None
-
None
After CFE-81, we are able to detect multi-line certificates for example in configmaps and secrets. They need to be obfuscated:
requestheader-client-ca-file: |
-----BEGIN CERTIFICATE-----
MIIDJDCCAgygAwIBAgIIdhzKeBBDnCgwDQYJKoZIhvcNAQELBQAwMDESMBAGA1UE
CxMJb3BlbnNoaWZ0MRowGAYDVQQDExFhZ2dyZWdhdG9yLXNpZ25lcjAeFw0yMTA4
MDMwOTA3MTdaFw0yMTA4MDQwOTA3MTdaMDAxEjAQBgNVBAsTCW9wZW5zaGlmdDEa
MBgGA1UEAxMRYWdncmVnYXRvci1zaWduZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQC3r8YhcQ20LaeNi6BgpaHXOtiVhLmqaquIubP1K3rp0mqtPNGp
SLkC8asbnxC6dvz43hhTPMxuo7J0uc585RW+CUYSlFqAQKdD5bFMhYgAsIvWMwIu
38KU9+TM6cvDVGXcTBQY4wtCbABNSF+3BLvJdIZdH9M6zeswD2QWaoM9oIdunwSC
irN3onU8vCbL7pkEajZA8M0LuzBJVAKT2i5Y6LqKP3ImwFPf0A3EmX/VjpskVjal
NTjtKch/i8rXa27nIkDHsucQGv/qwIHskQYu1WpvfsZn7RS0uz8gDrg2XFCzm7D2
LQybSMBgsCQfUoLnnk9pEWxLJCW28HIMj04HAgMBAAGjQjBAMA4GA1UdDwEB/wQE
AwICpDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSmz0oom/IhzYnM0pvc3NyE
ejvmMDANBgkqhkiG9w0BAQsFAAOCAQEACxoUjjOzwUVB2OuPSCBlSTYc0WS40nyM
osu0Wv3uo3ue23XuovB9pUhTGw+Mh0GxzzlTvSCO+rPvaIyXjB3/wnOdkyldtNHu
57iNeU5i4MJrltLXHb8Tl5yPN3bHDK7c8ARR5hQIMZZDkeScZqAv88cp9gQpA5oa
JhsP/s4JbwCWiDu6zY5h7s76N37zbvYwBxMpJ62sMj8SnAF9fbVUNfcPTqzcdSi6
VDcgusj1jC7fEv9/mCDFS2frHRD6/U5uWakuthoDMrnhlcC52n/J2uFxLFF1MSMz
kSkcrM/mthUdN7gtEFHExHopmb6RagO05i/IBEBPCbXUs2ETekOi3g==
-----END CERTIFICATE-----
there are also harder to detect cabundles:
apiVersion: admissionregistration.obfuscated0038.ext/v1
kind: MutatingWebhookConfiguration
metadata:
annotations:
service.beta.obfuscated0037.ext/inject-cabundle: "true"
creationTimestamp: "2021-08-03T09:19:30Z"
generation: 2
name: machine-api
resourceVersion: "5946"
uid: 948036d9-cd95-41f3-953f-16d9baecad6f
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURVVENDQWptZ0F3SUJBZ0lJVGl1REdUdXRlV2d3RFFZSktvWklodmNOQVFFTEJRQXdOakUwTURJR0ExVUUKQXd3cmIzQmxibk5vYVdaMExYTmxjblpwWTJVdGMyVnlkbWx1WnkxemFXZHVaWEpBTVRZeU56azRNak16T1RBZQpGdzB5TVRBNE1ETXdPVEU0TlRsYUZ3MHlNekV3TURJd09URTVNREJhTURZeE5EQXlCZ05WQkFNTUsyOXdaVzV6CmFHbG1kQzF6WlhKMmFXTmxMWE5sY25acGJtY3RjMmxuYm1WeVFERTJNamM1T0RJek16a3dnZ0VpTUEwR0NTcUcKU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ2dUTWU2M054ekZ3TUdkNU12K2VpRDgxUjI4OHBkOXZPdQpWOGhNU3ZmTGFHT1FnZzc0ckZkamx4bmlTRDNjWUNuWXZmRDRaVXo4UEwrcTF0dUhUZ0Q5TXZ4MEkwcDdBWkRmCnYxRTNSZHM3eXVLN3Q4Mm1tVUFJU1NLU29ham01WnJMMGZPSzlIUU5LOC9hb2VHNU0xaDlrREtpTlFKdHliSFEKVjdhWk41T1N2cmNoZnhLcVJVVktQcVh5ZjhBQTd0NGZsM1NGNTJQcEM1Vnh4Q3IxUDRnbCt3dWNtdFRwMEZSdgpqUDlUSm1KUTNaZFJnZVQ3Znc1T0FhQmpxZ3UxRXJYNzBhTWVQVjdLZmdCdlc4QmltN1h6VzdVdXloMFB6RXRxCllpNmNLQzVoK012VUM4WDlaZzc1Q004U1FnLzJlRmI2cnNkNndsN1lVWE9BYi8vR3NGdFBBZ01CQUFHall6QmgKTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZERnUVdCQlN3cnFVNgpoZDZSTFE2NDdyM1E4Wk1JZlFib0ZEQWZCZ05WSFNNRUdEQVdnQlN3cnFVNmhkNlJMUTY0N3IzUThaTUlmUWJvCkZEQU5CZ2txaGtpRzl3MEJBUXNGQUFPQ0FRRUFCTDAyejZmdHZDcEFDTmdUYStqZnMvV1BPOWIwZ2Q3WFN5RisKcG4yajFBYk9CR01leDI3MmFManMzdCtmcU9tK1k4bmZOcFg1S1NkUFJpUWlDWkZ5a1pzbFhiVUJ5NHZML0JjSQpGK3MxT3haSmRjUE85dnhEMGRwWFlyMEhpOEhCQ2xOVFJzK1VsWUFYeTk0U2h5eXY3cW5ERzJndlN5eXhXR1BkClZMZEdKdldwZGk3TzBlMTVYdnF6T0dCM2pLRWxZMW1YVkJscVFabmdPWVZ6a0RJK0w4TDVUaFBBeHFiT2QrZnMKZ2x3WklqV05Ma0RrUHU3VXhVY25pYTdkRFpYZlNSU2JrbmJNOUJOVXJTdUxjMVFjc0JwSUJ4SThpUi9tc1lZaQpSMktHTzBoWVgwR09nQ04zUjZoaGFONEJJaEtPSjFSd3gxTzhVT2dOSUpRd0tSaUtNdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
service:
name: machine-api-operator-webhook
namespace: openshift-machine-api
path: /mutate-machine-openshift-io-v1beta1-machine
port: 443
failurePolicy: Ignore
matchPolicy: Equivalent
name: default.machine.machine.obfuscated0037.ext
namespaceSelector: {}
objectSelector: {}
reinvocationPolicy: Never
rules:
- apiGroups:
- machine.obfuscated0037.ext
apiVersions:
- v1beta1
operations:
- CREATE
resources:
- machines
scope: '*'
sideEffects: None
timeoutSeconds: 10
and CSRs
---
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
creationTimestamp: "2021-08-03T09:25:24Z"
generateName: csr-
name: csr-phwh8
resourceVersion: "17029"
uid: a448e758-1ba2-4c5c-9832-c1a949cd6949
spec:
groups:
- system:serviceaccounts
- system:serviceaccounts:openshift-machine-config-operator
- system:authenticated
request: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0KTUlJQkJqQ0JyQUlCQURCS01SVXdFd1lEVlFRS0V3eHplWE4wWlcwNmJtOWtaWE14TVRBdkJnTlZCQU1US0hONQpjM1JsYlRwdWIyUmxPbWx3TFRFd0xUQXRNalUwTFRJd05DNWxZekl1YVc1MFpYSnVZV3d3V1RBVEJnY3Foa2pPClBRSUJCZ2dxaGtqT1BRTUJCd05DQUFTSE9PMWlIOE1XOEZ0MVB0QmMwRkFVOEt6ai9uZFUvZWVEK2U3eTA2V3oKaVRaT2NaRVJ1cGoyZHArSDZqdy9xK1hrVDIwQXVuOVQzNmhjajZsQ1VMSlBvQUF3Q2dZSUtvWkl6ajBFQXdJRApTUUF3UmdJaEFNbEFQYnZrMHNTSGliOS9FVCtQdFJXTm9vZE9zWHJRNnF6NkhHRVVLL0FaQWlFQTFlOHQ5dFMrCktRWjB4WjVqVjBGYllPRGdObDQ1bGRMdENpWW1uaHlRdnBBPQotLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0K
signerName: kubernetes.io/kube-apiserver-client-kubelet
uid: 5a2ea421-7cdb-4fea-81c0-c2f6ec59676e
usages:
- digital signature
- key encipherment
- client auth
username: system:serviceaccount:openshift-machine-config-operator:node-bootstrapper
status:
certificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNoVENDQVcyZ0F3SUJBZ0lRYUtra0V1VEJXQkhtQlU0M09iWU9jVEFOQmdrcWhraUc5dzBCQVFzRkFEQW0KTVNRd0lnWURWUVFEREJ0cmRXSmxMV056Y2kxemFXZHVaWEpmUURFMk1qYzVPREl6TXpjd0hoY05NakV3T0RBegpNRGt5TURJMVdoY05NakV3T0RBME1Ea3dOekU1V2pCS01SVXdFd1lEVlFRS0V3eHplWE4wWlcwNmJtOWtaWE14Ck1UQXZCZ05WQkFNVEtITjVjM1JsYlRwdWIyUmxPbWx3TFRFd0xUQXRNalUwTFRJd05DNWxZekl1YVc1MFpYSnUKWVd3d1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFTSE9PMWlIOE1XOEZ0MVB0QmMwRkFVOEt6agovbmRVL2VlRCtlN3kwNld6aVRaT2NaRVJ1cGoyZHArSDZqdy9xK1hrVDIwQXVuOVQzNmhjajZsQ1VMSlBvMVl3ClZEQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3SXdEQVlEVlIwVEFRSC8KQkFJd0FEQWZCZ05WSFNNRUdEQVdnQlROTzlXQ01kUng3bU1iME13eUNRRi81dmZKUHpBTkJna3Foa2lHOXcwQgpBUXNGQUFPQ0FRRUFiZElhUEdNc0NmMnRIZzVzMFlOVkVkd3QzRTlIYkxuTWJUdnV3K0toVEs5L2JVUWMvd3RYClVsVlZqNUc0QzFNY3NYd2xNcGc0QUtwTCs5QjY0NkI5VXFKVlg5SUVqTFp0dGU2aHhUdUlraE5BeitXUWkzN2MKd0VDTmM3eUV6cWdKY3FLa1lzcHFLbG1Gbk9aOGt6WWFpdlBXZ1lVSGdFV3pEa0I2VEhETUhabEgzd2p0dXNOdwpqU21CWnByRngrcEhOa25kaG51RnZleUNKVFVqaTZ1cG5HS0JLL200cU92UzAxNzE1T0lRTEVqNGpMdXlZWVp0Cm9BN085c2xWUHVPRVFodG9vRzU2UWh6eVRTRWZpRWRQTzV2R00vN1NQM1FKMVI2SXhCQlJBZWJYUDcvS0dxMjAKTmRxaHF2NUUwMHJIbDdPQVZqbTFwc3FrWWRsSG1RZktEZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
conditions:
- lastTransitionTime: "2021-08-03T09:25:25Z"
lastUpdateTime: "2021-08-03T09:25:24Z"
message: This CSR was approved by the Node CSR Approver
reason: NodeCSRApprove
status: "True"
type: Approved
The obfuscation can be simply omitting the base64 hash in the middle.
AC:
- new type for obfuscation based on CFE-81 work
- detector and obfuscator for certificate data, including multiple certificates in cert chains
- unit testing