CVE-Status und Sicherheitskorrekturen
Gepflegt von der BW-Tech GmbH. Stand: 28. Oktober 2026, owncloud.online 11.0.25.
Die Tabellen nennen die Schwachstellen mit CVE-Kennung, die owncloud.online behoben hat, und die Version, ab der die Korrektur enthalten ist. Sie dienen als Nachweis bei Sicherheitsprüfungen und erklären, warum Scanner bei einigen mitgelieferten Bibliotheken trotzdem anschlagen. Sicherheitskorrekturen ohne CVE-Kennung stehen im CHANGELOG unter „Security“.
Codebasis
Die Codebasis enthält alle Sicherheitskorrekturen des Ursprungsprojekts bis zum 17. Februar 2026. Spätere Korrekturen von dort werden regelmäßig gesichtet und einzeln übernommen. Im Git-Verlauf steht die Herkunft in der Commit-Nachricht („cherry picked from commit …“). Die übernommenen Korrekturen stehen unter Übernommene Korrekturen im Code.
composer audit --locked meldet für die PHP-Abhängigkeiten von 11.0.25 keine
Schwachstellen (geprüft am 28. Oktober 2026 für den Kern sowie die Apps
oco_mcp und market). Dieselbe Prüfung läuft in der CI bei jeder
Code-Änderung auf dem Hauptzweig und in jedem Pull Request und hält den Build
bei einem Befund an.
PHP-Abhängigkeiten
| CVE | Komponente | Schweregrad | Korrigiert in | owncloud.online ab |
|---|---|---|---|---|
| CVE-2026-40194 | phpseclib/phpseclib | — | 3.0.52 | 11.0.0 |
| CVE-2026-45065 | symfony/routing | — | 5.4.52 / 6.4.40 / 7.4.12 | 11.0.3 (routing 7.4.13) |
| CVE-2026-48784 | symfony/routing (Kodierung im UrlGenerator) | — | 7.4.13 | 11.0.3 |
| CVE-2026-45067 | symfony/mime (CRLF- und SMTP-Command-Injection) | hoch | 8.0.13 | 11.0.3 |
| CVE-2026-45070 | symfony/mime (Header-Injection) | mittel | 8.0.13 | 11.0.3 |
| CVE-2026-45068 | symfony/mailer (Argument-Injection bei Sendmail) | mittel | 7.4.12 | 11.0.3 |
| CVE-2026-49214 | guzzlehttp/psr7 (CRLF- und Header-Injection) | — | 2.11.0 | 11.0.3 |
| CVE-2026-48998 | guzzlehttp/psr7 (Host-Verwechslung) | — | 2.11.0 | 11.0.3 |
| CVE-2026-55767 | guzzlehttp/guzzle (eine Cookie-Domain aus nur einem Punkt passt auf alle Hosts) | mittel | 7.12.1 | 11.0.8 |
| CVE-2026-55568 | guzzlehttp/guzzle (HTTPS-Proxy fällt still auf Klartext zurück) | mittel | 7.12.2 | 11.0.8 |
| CVE-2026-55766 | guzzlehttp/psr7 (CRLF-Injection in der HTTP-Start-Line) | mittel | 2.12.1 | 11.0.8 |
| GHSA-m557-wrgg-6rp4 | phpseclib/phpseclib (SSRF über die X.509-AIA-Erweiterung, ohne CVE-Kennung) | mittel | 3.0.54 | 11.0.8 |
| CVE-2026-69246 | guzzlehttp/guzzle (nicht-kanonischer Host umgeht hostbasierte Prüfungen) | hoch | 7.15.2 | 11.0.12 |
| CVE-2026-69245 | guzzlehttp/guzzle (nicht-kanonische Cookie-Domain behält den Geltungsbereich für Subdomains) | mittel | 7.15.2 | 11.0.12 |
| CVE-2026-53965 | mcp/sdk in der App oco_mcp (Puffer im SSE-Transport wächst unbegrenzt; GHSA-7m52-jw36-44r3) |
— | 0.7.1 | 11.0.14 |
| CVE-2026-84308 | phpseclib/phpseclib (X25519 nicht in konstanter Zeit) | mittel | 3.0.57 | 11.0.21 |
„—“ heißt: kein Schweregrad angegeben. 11.0.25 liefert guzzle 7.15.2, psr7 2.13.0, phpseclib 3.0.57, symfony/routing 7.4.13, symfony/mime 8.0.15 und symfony/mailer 7.4.15 aus.
PHP selbst
CVE-2026-109618 und CVE-2026-109619 betreffen den PHP-Interpreter, nicht den Code von owncloud.online. Über sie können Angreifer ohne Anmeldung Code auf dem Server ausführen. Für PHP 8.4 sind sie ab 8.4.27 behoben. Seit 11.0.24 meldet owncloud.online eine betroffene PHP-Version in den Setup-Warnungen, siehe Sicherheit und Setup-Warnungen. Das Update selbst spielen Sie über die Paketverwaltung Ihres Systems ein.
Übernommene Korrekturen im Code
Diese Korrekturen stammen aus dem Ursprungsprojekt. Die meisten schließen Sicherheitslücken, einige beheben Fehler im Betrieb.
| Korrektur | owncloud.online ab |
|---|---|
| Gehärtete Auflösung entfernter Dienste (Remote-Service) | 11.0.0 |
| SVG-Inhalte werden bereinigt, bevor ImageMagick sie verarbeitet | 11.0.0 |
| Keine leeren Tokens beim Koppeln vertrauenswürdiger Server (Federation) | 11.0.0 |
| IDOR in der WebDAV-Schnittstelle für Kommentare | 11.0.3 |
| App-Konfiguration über den AppConfigController nur noch für volle Administratoren lesbar | 11.0.3 |
| Richtige Benutzerkennung bei der Änderung der E-Mail-Adresse, samt Folgekorrektur | 11.0.3 |
| Alias für Kennungen von Speicher-Backends | 11.0.3 |
| Warnungen von PHP 8 zu veralteten Aufrufen (Deprecations) im Federation-DbHandler und im Verschlüsselungs-Wrapper | 11.0.3 |
| Federation mit Instanzen in Unterverzeichnissen | 11.0.3 |
htaccess.RewriteBase blockierte API-Anfragen auf Dateien mit Endungen |
11.0.3 |
core/signature.json entfernt (siehe Integritätsprüfung) |
11.0.3 |
| Das Anmeldeformular verrät nicht mehr, ob ein Konto existiert | 11.0.12 |
Suchtreffer-Ausschnitte (search-highlights) werden kodiert ausgeliefert |
11.0.13 |
| Freigaben, die nur das Hochladen erlauben, ließen sich per WebDAV auflisten | 11.0.20 |
occ config:system:set und config:app:set gaben gesetzte Geheimnisse im Klartext aus |
11.0.20 |
| Die Bitmap-Vorschau gab den Dateizeiger nur im Erfolgsfall frei | 11.0.20 |
Anmeldeformular
Das Formular leitete den Verweis zum Zurücksetzen des Passworts aus
canChangePassword() ab. Ob er erschien, verriet damit, ob ein Konto
existiert. Dieser Teil der Korrektur ist übernommen, der Verweis erscheint
jetzt bei jedem Anmeldeversuch gleich.
Der zweite Teil der ursprünglichen Korrektur ist bewusst nicht übernommen. Er
löst den Anmeldenamen über userManager->get()->getUserName() auf. Weil
AccountMapper::getByUid() ohne Rücksicht auf Groß- und Kleinschreibung sucht,
würde das Formular für vorhandene Konten die kanonische Schreibweise
zurückgeben und für unbekannte die Eingabe (?user=fRANK ergibt frank
bzw. fRANK). Das wäre ein neuer, billigerer Weg, Konten zu erraten: ein
einzelnes GET ohne Anmeldung, das die Bremse gegen Passwort-Raten nicht
erfasst.
Suchtreffer-Ausschnitte
FilesSearchReportPlugin lieferte die WebDAV-Eigenschaft search-highlights
unverändert aus dem Suchergebnis aus. Der Ausschnitt entsteht aus dem
Dateiinhalt und trägt bewusst Markup (Zeilenumbrüche werden zu <br/>).
Ein Client, der ihn als HTML darstellt, führte eingeschleustes Markup also mit
aus: Stored XSS über einen geteilten Dateiinhalt.
Jetzt kodiert der Server den Ausschnitt zuerst mit
htmlspecialchars(..., ENT_QUOTES, 'UTF-8') und ersetzt erst danach die
Zeilenumbrüche, damit das beabsichtigte <br/> erhalten bleibt. Auf die
Reihenfolge kommt es an. Wirksam wird der Pfad erst mit einem Suchanbieter, der
Ausschnitte liefert. owncloud.online bringt keinen solchen mit, der
verwundbare Code war aber enthalten. Regressionstest:
FilesSearchReportPluginTest::testOnReportEncodesHighlights.
Frontend-Bibliotheken
Die Frontend-Bibliotheken liegen samt Korrekturen versioniert im Repository
unter core/vendor und werden genau so ausgeliefert. Die Korrekturen bleiben
deshalb über Updates hinweg bestehen.
| Bibliothek | Version | CVE | Status | owncloud.online ab |
|---|---|---|---|---|
| jQuery | 2.1.4 | CVE-2020-11022, CVE-2020-11023 | behoben: Die Erweiterung selbstschließender Tags (rxhtmlTag) in core/vendor/jquery/dist/jquery.js und jquery.min.js ist neutralisiert, wie in der Korrektur von jQuery 3.5.0 (htmlPrefilter); API-kompatibel |
11.0.8 |
| jQuery UI | 1.10.0 | CVE-2016-7103 | behoben: closeText wird auf beiden Wegen als Text behandelt, beim Aufbau der Titelleiste und beim nachträglichen Setzen der Option |
11.0.14 |
| jQuery UI | 1.10.0 | CVE-2021-41182, CVE-2021-41183, CVE-2021-41184 | behoben: Die Korrekturen aus jQuery UI 1.13.0 sind zurückportiert, auch in der Datepicker-Überschreibung von core/js/js.js |
11.0.20 |
| Select2 | 3.5.4 | CVE-2016-10744 | behoben: Ein eigener Formatierer darf nur noch DOM liefern, eine Zeichenkette wird entschärft (dieselbe Regel wie ab Select2 4.0.6). Das gilt auch für Erweiterungen Dritter | 11.0.20 |
| Bootstrap | 3.4.1 | — | 3.4.1 ist die Sicherheitsversion der 3.x-Reihe (behebt unter anderem CVE-2019-8331). Die Reihe erhält keine Updates mehr | — |
Die Versionsnummern bleiben unverändert. Scanner, die nach Versionsnummern urteilen, melden die CVEs deshalb weiter, obwohl die Lücken geschlossen sind.
jQuery UI
Die drei Schwachstellen von 2021 betreffen Optionen der Datumsauswahl und der Positionierungshilfe. Der ausgelieferte Code setzt keine davon: Die Datumsauswahl wird nur mit Format- und Grenzdatumsangaben aufgerufen, die Positionierungshilfe gar nicht. Für Erweiterungen Dritter galt das nicht, und das war das Restrisiko. Die Korrekturen aus jQuery UI 1.13.0 sind deshalb zurückportiert:
- CVE-2021-41182 (
altField) und CVE-2021-41184 (position({of})): Beide Optionen sind als Auswahlausdruck gemeint.$(x)deutet eine Zeichenkette, die mit<beginnt, jedoch als Markup und baut daraus Elemente. Beide Stellen gehen jetzt über$(document).find(x), das eine Zeichenkette immer als Auswahlausdruck nimmt, wortgleich mit 1.13.0. Eine Zeichenkette, die kein gültiger Auswahlausdruck ist, löst jetzt einen Fehler aus, statt still ein Element zu bauen. So verhält sich auch 1.13. - CVE-2021-41183 (Textoptionen des Kalenders): Der Kalender baut sein
Markup als Zeichenkette und setzte
prevText,nextText,currentText,closeText,weekHeader,appendText,buttonText, die Tages- und Monatsnamen, den Jahreszusatz und die Rückgabe voncalculateWeekroh ein. Alle werden jetzt entschärft, einschließlich des einfachen Anführungszeichens. Die Vorlagen schreiben ihre Attribute in einfachen Anführungszeichen (title='…'), ein doppeltes allein liefe daran vorbei.
Die mitgelieferten Sprachdateien von jQuery UI schreiben prevText als
<Zurück, also mit HTML-Entität. Nach dem Entschärfen stünde die Entität
wörtlich da. Das ist hier kein Problem, weil diese Dateien nirgends geladen
werden (core/js/core.json führt nur jquery-ui.custom.min.js). Monats- und
Tagesnamen kommen aus der Übersetzung von owncloud.online und sind reiner Text.
Ein Wechsel auf jQuery UI 1.13 ist nicht abwärtskompatibel: button und
buttonset entfallen dort zugunsten von controlgroup, und tabs ändert
sich. Die Bibliothek trägt deshalb weiter die Versionsnummer 1.10.0.
Select2
Select2 fügte den Rückgabewert von formatResult und formatSelection
roh in die Auswahlliste ein (select2.js:1123, :2650, :3254),
unabhängig davon, ob escapeMarkup abgeschaltet ist. Entscheidend war also,
was die Formatierer zurückgeben.
Die Lücke ist dort geschlossen, wo das Markup eingefügt wird, mit derselben
Regel, die Select2 ab 4.0.6 anwendet: An der Stelle, an der alle Optionen zusammenlaufen
(prepareOpts), wird ein vom Aufrufer mitgegebener Formatierer umhüllt.
Liefert er ein DOM-Element oder ein jQuery-Objekt, geht es unverändert durch.
Wer sein Markup über das DOM baut, hat die Fremddaten bereits als Text gesetzt.
Liefert er eine Zeichenkette, wird sie entschärft. Die eingebauten Formatierer
bleiben unberührt, sie entschärfen selbst und brauchen ihre Hervorhebung als
Markup. Damit gilt der Schutz auch für Erweiterungen Dritter.
Die sechs Formatierer im Bestand (systemtagsfilelist.js,
systemtagsinputfield.js, settings/js/settings.js,
files_external/js/settings.js) geben jetzt jQuery-Objekte statt
HTML-Zeichenketten zurück. Das ist zugleich die einzige Form, in der Select2 4.x
noch Markup annimmt. Die drei Überschreibungen escapeMarkup: m => m sind damit
überflüssig und entfallen.
Ein Wechsel auf Select2 4.x ändert die API an mehreren Stellen
(templateResult, ajax.processResults, initSelection,
.select2('val')). Die Bibliothek trägt deshalb weiter die Versionsnummer
3.5.4.
Nachweis im Browser
make test-js-browser prüft beide Korrekturen in einem echten Chromium, jeweils
gegen die normale und die minifizierte Fassung der Bibliothek
(tests/js/jquery_ui_xss_test.js mit 56 Prüfungen,
tests/js/select2_xss_test.js mit 26 Prüfungen). Ein Kalender, dessen
Textoptionen auf <img src=x onerror=…> stehen, und ein Schlagwort mit diesem
Namen erscheinen als Text. Es entsteht kein Element, und es wird nichts
ausgeführt. altField und position({of}) mit derselben Zeichenkette werden
zurückgewiesen. In der Gegenprobe mit der unveränderten Bibliothek läuft der
eingeschleuste Code tatsächlich (window.__xss === 1).
Die Tests prüfen zusätzlich, dass die Bibliotheken sonst unverändert arbeiten:
bei jQuery UI der Kalender mit eigenen Monats- und Tagesnamen, position mit
einem Auswahlausdruck sowie tabs, button, buttonset, progressbar,
autocomplete, draggable und droppable, also die Widgets, die das Produkt
tatsächlich nutzt.
Hinweis für Entwickler
Wer aus dem Quellcode baut: make clean-nodejs-deps (und damit make clean)
löscht core/vendor. Ein anschließender Neuaufbau über yarn holt die
Bibliotheken ohne diese Korrekturen. Das Make-Ziel warnt davor. Stellen Sie
core/vendor stattdessen aus dem Repository wieder her.
Selbst prüfen
Die Abhängigkeiten eines Release lassen sich mit Composer gegen die bekannten
Sicherheitsmeldungen prüfen. composer.json und composer.lock liegen nicht im
Release-Paket, wohl aber im Repository unter dem Tag der Version:
mkdir /tmp/oco-audit && cd /tmp/oco-audit
curl -fLO https://raw.githubusercontent.com/BWTECH-github/owncloud.online/v11.0.25/composer.json
curl -fLO https://raw.githubusercontent.com/BWTECH-github/owncloud.online/v11.0.25/composer.lock
composer audit --locked
Erwartet wird „No security vulnerability advisories found.“ Für die App
oco_mcp gilt dasselbe mit den Dateien unter apps/oco_mcp/. Die auf einer
Instanz tatsächlich installierten Fassungen stehen in
lib/composer/composer/installed.json.