Skip to main content

Dateisystem

Globale Konfigurationsdateien vor unberechtigtem Schreibzugriff schützen

Zielgruppe: Systemadministrator

Beschreibung: CODESYS 4 legt globale Konfigurationsdateien in einem systemweiten Konfigurationsordner ab. Unter Linux liegt dieser Ordner unter /etc/CODESYS-4; er wird bei der Installation über das .deb-Paket angelegt und ist standardmäßig nur von Administratoren beschreibbar. Unter Windows legt CODESYS 4 einen gesicherten Unterordner in %ProgramData% an und verweigert den Betrieb, wenn dessen Zugriffsrechte nicht angemessen gesetzt sind. In den globalen Einstellungen werden keine Zugangsdaten gespeichert.

Maßnahme: Stellen Sie sicher, dass der globale Konfigurationsordner ausschließlich von Administratoren (oder vom Paketmanager c4-pkm) beschreibbar ist und die Zugriffsrechte korrekt gesetzt sind - andernfalls verweigert CODESYS 4 unter Windows den Start.

Begründung: Könnten normale Benutzer die globale Konfiguration verändern, ließe sich das Verhalten von CODESYS 4 für alle Benutzer des Systems manipulieren. Insbesondere könnten auf diesem Weg Extensions - und damit auch kompilierte Bibliotheken - eingeschleust werden, ohne dass dies bemerkt oder nachvollzogen werden kann. Zudem könnten Extensions arbiträren Code als der aktuelle Benutzer ausführen, siehe auch: Nur vertrauenswürdige Extensions installieren/verwenden.

Zertifikatspeicher und Trust-Anchors härten

Zielgruppe: Systemadministrator

Beschreibung: Für die Signaturprüfung von Paketen und Bibliotheken nutzt CODESYS 4 den Zertifikatsspeicher des Systems oder die dort hinterlegten Vertrauensanker (Trust-Anchors). Unter Windows wird standardmäßig der System-Zertifikatsspeicher verwendet.

Maßnahme: Schützen Sie den Zertifikatsspeicher und die Trust-Anchors über Dateisystemrechte vor Veränderung durch lokale Benutzer und aktualisieren Sie die Vertrauensanker regelmäßig - vergleichbar mit der Pflege der ca-certificates unter Linux.

Begründung: Wenn ein lokaler Benutzer die Trust-Anchors verändern oder eigene hinzufügen kann, können Signaturen bösartiger Pakete oder Bibliotheken bei der Prüfung als vertrauenswürdig akzeptiert werden. Zuvor aufgrund der Signaturprüfung blockierte, bösartige Extensions ließen sich auf diesem Weg installieren. Dabei wird lediglich die Installation selbst protokolliert, nicht jedoch, dass die Signatur auf einem nachträglich eingeschleusten Vertrauensanker (beispielsweise einer selbst-signierten Root-CA) beruht.

Logverzeichnis mit restriktiven Zugriffsrechten versehen

Zielgruppe: Systemadministrator

Beschreibung: CODESYS 4 schreibt Debug-Logs unter Windows standardmäßig in den Ordner %APPDATA%\CODESYS-4\logs, unter Linux in den Ordner ~/.config/CODESYS-4/logs. Die Logdateien werden ab einer Größe von ca. 1 MB rotiert und 14 Tage aufbewahrt, wodurch der Speicherverbrauch begrenzt wird.

Maßnahme: Versehen Sie das Logverzeichnis mit restriktiven Zugriffsrechten, sodass nur berechtigte Personen die Logdateien lesen können.

Begründung: Logdateien können sensible und personenbezogene Informationen enthalten, siehe auch Personenbezogene Daten in Debug-Logs berücksichtigen. Ein unzureichend geschütztes Logverzeichnis ermöglicht es anderen Benutzern, diese Informationen auszulesen oder die Logdateien zu manipulieren.

Gemeinsame Arbeitsverzeichnisse mit korrekten Zugriffsrechten einrichten

Zielgruppe: Systemadministrator

Beschreibung: CODESYS 4 besitzt keine eigene Zugriffskontrolle (ACL) für Projekt- und Arbeitsverzeichnisse; der Zugriffsschutz beruht vollständig auf den Dateisystem-Rechten des Betriebssystems. Standardmäßig existieren keine gemeinsam genutzten Arbeitsverzeichnisse.

Maßnahme: Wenn Sie gemeinsam genutzte Team-Arbeitsverzeichnisse einrichten, sichern Sie diese mit korrekten Gruppen- oder ACL-Rechten so ab, dass ausschließlich der vorgesehene Personenkreis lesen und schreiben kann.

Begründung: Falsch gesetzte Berechtigungen ermöglichen es Benutzern außerhalb des vorgesehenen Teams, gemeinsame Projekte - und damit das geistige Eigentum Ihres Teams - einzusehen, zu manipulieren oder zu beschädigen (Datenverlust).