Hallo liebe Portalbetreiber,
habt Ihr diesen hier auf dem Schirm?
https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2023-0562
Viele Grüße,
Roland
Hallo liebe Portalbetreiber,
habt Ihr diesen hier auf dem Schirm?
https://wid.cert-bund.de/portal/wid/securityadvisory?name=WID-SEC-2023-0562
Viele Grüße,
Roland
Leider ist der jboss keycloak container aus unserem compose file offenbar out of maintenance (letzter Push vor einem Jahr). Ich denke nach kurzer Lektüre der CVE die Lücke ist nicht so, dass sie einfach automatisiert nutzbar ist, von daher haben wir einen Augenblick Zeit, das zu überlegen, aber wir sollten auf einen maintainedten Keycloak umstellen.
Ich kümmere mich gerne darum.
Hi,
wie bist du darauf aufmerksam geworden? Schwachstellenscanner oder einfach nen Alert auf „Keycloak“?
Danke und Grüße
Markus
Wir setzen in der Firma ebenfalls Keycloak ein und kriegen solche Infos aus unserem Information Security Office.
Unser ISO „scannt“ jeden Tag die Security Mailinglisten und Newsticker.
Ah! Sehr gut. Einfacher wärs evtl. mit einem Schwachstellentool, aber da muss man Kosten und Nutzen abwägen. Super zu wissen, dass jemand das Thema Schwachstellen auf dem Radar hat und die Community informiert. Ich bin leider noch nicht dazu gekommen mich damit zu beschäftigen.
Stimme @gluap zu. Die Lücke lässt sich nur von einem bereits authentifizierten User ausnutzen. Was sie nicht weniger schlimm macht, aber sie lässt sich eben nicht ganz so einfach ausnutzen.
Vielleicht sollten wir im docker-cmpose.yaml das Image jboss/keycloak
durch quay.io/keycloak/keycloak
ersetzen. (vorherige Funktionstests stillschweigend vorausgesetzt)
Es gibt im Docker-Hub das Image keycloak/keycloak, das auch auf der offiziellen Keycloak-Website verlinkt ist: Docker
Wenn man umstellt, dann vermutlich sinnvollerweise auf das offizielle.
Ich glaube mitbekommen zu haben, dass im Updatepfad ein paar Breaking Changes drin sind (macht Keycloak wohl gerne). Da müsste man wohl mal die Changelogs ansehen, ob uns das bertrifft.
Hatte zuerst auch keycloak/keycloak
gschrieben, dann aber gesehen, dass es auf Docker kein Verified Publisher ist und es dann auf quay.io/keycloak/keycloak
abgeändert.
Später habe ich dann nochmal genauer geschaut und gesehen, dass beide Repositories identisch sind. Haben beide die gleichen Digest.
Hier für den letzten Nightly build AMD64.
Also testweise mit dem Docker image bekomme ich es zum Laufen. Derzeit nur im (nicht für production empfohelnen) dev mode probiert.
Notes:
FROM quay.io/keycloak/keycloak:latest as builder
# Enable health and metrics support
ENV KC_HEALTH_ENABLED=true
ENV KC_METRICS_ENABLED=true
# Configure a database vendor
ENV KC_DB=postgres
WORKDIR /opt/keycloak
# for demonstration purposes only, please make sure to use proper certificates in production instead
#RUN keytool -genkeypair -storepass password -storetype PKCS12 -keyalg RSA -keysize 2048 -dname "CN=server" -alias server -ext "SAN:c=DNS:localhost,IP:127.0.0.1" -keystore conf/server.keystore
RUN /opt/keycloak/bin/kc.sh build
FROM quay.io/keycloak/keycloak:latest
COPY --from=builder /opt/keycloak/ /opt/keycloak/
# change these values to point to a running postgres instance
ENTRYPOINT ["/opt/keycloak/bin/kc.sh"]
Sektion aud dem compose file:
keycloak:
image: local_keycloak
build:
context: ./keycloak/
dockerfile: Dockerfile
ports:
- 3003:8080
- 8080:8080
links:
- postgres
environment:
KC_HOSTAME: localhost
KC_DB_URL: jdbc:postgresql://$OBS_KEYCLOAK_POSTGRES_HOST/$OBS_KEYCLOAK_POSTGRES_DB
KC_DB: $OBS_KEYCLOAK_POSTGRES_DB
KC_DB_USERNAME: $OBS_KEYCLOAK_POSTGRES_USER
KC_DB_PASSWORD: $OBS_KEYCLOAK_POSTGRES_PASSWORD
volumes:
- ./data/keycloak:/data
command:
- start-dev
Achtung: erstmal nur reingeschaut, weiß nicht wann ich dazu komme weiter zu machen -gern jemand anders übernehmen
Hallo @gluap,
habe gestern mal versucht das Docker compose zu starten. Leider schlägt es fehlt. Schaue heute Abend nochmal genauer nach dem Fehler.
Bist du bei den Ports sicher? 8080 vom Container soll an zwei Ports nach außen gegeben werden? Der obere Eintrag war schon im Compose YAML enthalten, der untere kommt von deinem Post.
GGF Müssen die ganzen $OBS_KEYCLOAK_XY ersetzt werden - ich hab auf dem testsetup noch ein älteres Compose file in dem die Variablen anders hießen und hab das on the fly übersetzt.
Mehr resultate:
Genau es gab mehrere größere Umbauten in den letzten Releases. Keycloak kann intern nun mittels (kc.bat/kc.sh) verwaltet werden und nutzt inzwischen unter der Haube Quarkus als Server (was z.B. unter Windows etwas herausfordernd ist).
Kein /auth hört sich komisch an, da KeyCloak doch Standard OAuth2 macht. Ich Keycloak bei anderen Projekten relativ problemlos hochziehen können, wenn man Version für Version updated.
Weil ichs oben nicht so klar geschrieben habe: folgende Änderung für den portal container in .env
war bei mir nötig, damit der die .well-known gefunden hat:
# OBS_KEYCLOAK_URL=https://login.example.com/auth/realms/obs/ # alt und gammlig aus der example config
OBS_KEYCLOAK_URL = "http://keycloak:8080/realms/obs/" # für mit neuem keycloak
Ich hatte mit dem neuen Keycloak Image folgendes (für das Developer Setup aus der README) versucht, was aber nicht startet.
docker-compose up -d keycloak
Hattest Du das examples/docker-compose.yaml
geändert?
Fehlrmeldung habe ich nicht parat, aber die ersten beiden angezeigten Punkte enden schon mit Fehler.
Ja, wie oben beschrieben:
Die Variablen, die keycloak/keycloak
im Environment erwartet heißen alle anders als die die jboss/keyckoak
erwartet hat.
keycloak:
image: local_keycloak
build:
context: ./keycloak/
dockerfile: Dockerfile
ports:
- 3003:8080
- 8080:8080
links:
- postgres
environment:
# kc_hostname ist der externe hostname - in meinem testsetup ist das localhost.
KC_HOSTAME: localhost
KC_DB_URL: jdbc:postgresql://${OBS_KEYCLOAK_POSTGRES_HOST}/${OBS_KEYCLOAK_POSTGRES_DB}
KC_DB: ${OBS_KEYCLOAK_POSTGRES_DB}
KC_DB_USERNAME: ${OBS_KEYCLOAK_POSTGRES_USER}
KC_DB_PASSWORD: ${OBS_KEYCLOAK_POSTGRES_PASSWORD}
KEYCLOAK_ADMIN=${OBS_KEYCLOAK_ADMIN_USER}
KEYCLOAK_ADMIN_PASSWORD=${OBS_KEYCLOAK_ADMIN_PASSWORD}
volumes:
- ./data/keycloak:/data
command:
- start-dev
Alte Variablennamen:
- DB_VENDOR=postgres
- DB_ADDR=${OBS_KEYCLOAK_POSTGRES_HOST}
- DB_DATABASE=${OBS_KEYCLOAK_POSTGRES_DB}
- DB_USER=${OBS_KEYCLOAK_POSTGRES_USER}
- DB_PASSWORD=${OBS_KEYCLOAK_POSTGRES_PASSWORD}
# admin user
- KEYCLOAK_USER=${OBS_KEYCLOAK_ADMIN_USER}
- KEYCLOAK_PASSWORD=${OBS_KEYCLOAK_ADMIN_PASSWORD}
Ich habe auf GitHub ein Issue dafür aufgemacht
Eine angepasste Docker Compose Datei ist in der Branch issue_322
.
Es sind noch Fehler vorhanden, die ich nicht fixen konnte.