Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CKAN security #40

Open
wants to merge 21 commits into
base: devel
Choose a base branch
from
Open

CKAN security #40

wants to merge 21 commits into from

Conversation

BWibo
Copy link
Member

@BWibo BWibo commented Aug 31, 2023

ToDos, questions, notes

Alternative approaches

  • Use an external identity provider, to mitigate using ckanext-security. This requires integration of an auth standard like OAUTH2/SAML/LDAP
  • This would solve L5, L6

Existing extensions

Overview issues PenTest

  • 2.1 - mandatory: Massenmailversand: Über die "Passwort vergessen?"-Funktion ist der massenhafte Versand von
    E-Mails möglich. Hierfür benötigt man nur einen gültigen Benutzernamen, der unauthentifiziert über
    https://sddi-katalog.bayern/user/ ermittelt werden kann (siehe Schwachstelle L4). So war es möglich
    50 Mails innerhalb weniger Sekunden zu generieren.

    • Needs more research
    • Is this resolved/will be accepted, if L4 is solved?
    • Is the feature described here an acceptable solution?
      • When users try to reset a password for an email address, CKAN will no longer disclose whether or not that email address exists in the DB.
      • it should be possible to set how many emails can be sent per minute in CKAN. In official CKAN Documentation (here and here) it is possible to find how to set a limit on the number of emails that can be sent. But it is necessary to check how to limit e-mails for specific request.
        • @MarijaKnezevic Are you sure about this? I doubt that the password reset eMails are subject of the activity stream options. Can you test this?
  • 2.2 - mandatory: Veraltete Software mit bekannten Schwachstellen: @MarijaKnezevic bitte alle Dependencies aktualisieren

  • 2.3 - mandatory: Fehlender Virenscan bei Dateiupload: Es war möglich eine Testvirus-Datei in die Webanwendung
    hochzuladen. Dies deutet darauf hin, dass der in der Richtlinie BayITSiR-14 geforderte Virenscan
    beim Upload von Dateien nicht implementiert ist.

  • 2.4 - mandatory: User Enumeration: Unter https://sddi-katalog.bayern/user/ kann unauthentifizert eine Liste
    aller existierender Benutzer abgerufen werden. Diese beinhaltet auch administrative Accounts.

  • 2.5 - mandatory: Schwache Kennwortrichtlinie: Die derzeit aktive Kennwortrichtlinie fordert lediglich eine
    Mindestlänge von 8 Zeichen. So sind zum Beispiel triviale Passwörter wie "12345678" möglich. Hier
    sollten mindestens noch weitere Zeichengruppen (Groß- und Kleinbuchstaben oder Sonderzeichen) durch
    die Kennwortrichtlinie gefordert werden.

  • 2.6 - mandatory: Brute Force auf Login möglich: Die Anwendung hat keine Schutzmaßnahmen gegen
    Brute-Force-Angriffe auf die Login-Funktion. Es wurden innerhalb weniger Sekunden 50 Anmeldeversuche
    mit falschem Passwort durchgeführt. Danach war der Login mit korrektem Kenntwort möglich. Zur
    Behebung der Schwachstelle sollten weitere Loginversuche nach einem fehlgeschlagenen Anmeldeversuch
    erst mit immer weiter steigender Verzögerung möglich sein.

  • 2.7 - mandatory: Cross-Site-Scripting: Bei den Datensätzen ist das Formularfeld "Beschreibung" und bei den Organisationen das Feld "Name" anfällig für Cross-Site-Scripting. In beiden Fällen wurde die Payload <script>alert("XSS");</script> eingefügt und der hinterlegte Javascript-Code anschließend ausgeführt. Beim Namensfeld einer Organisation erfolgt die Ausführung jedoch nur auf der Hauptseite in der Liste der Organisationen. Auf der Detailseite der Organisation wurden die Eingaben korrekt behandelt und es kam nicht zu einer Ausführung.

    • How is sanitizing of user input fields handed in CKAN in general? Are there tools/practices in place that take care of this?
    • Is this coming from our own implementation, e.g. in tum-gis/ckanext-grouphierarchy-sddi? If yes, what do we do different with here compared to other user input fields?
    • @MarijaKnezevic, @TomeCirun: Please check if user input in the name field for Organizations and the description field of Datasets is properly sanitized regarding XSS vulnerabilities. Please check if example code like this <script>alert("XSS");</script> is executable through user input, or not. This affects all extension that we maintain, that parse user input in some way.
    • Is this an upstream issue?
    • Are there other user inputs that could be affected?
    • Cross-Site-Scripting is solved in CKAN 2.10.1. The documentation about Cross-Site Request Forgery (CSRF) in the extension best practices is possible to find here
  • 2.8 - informative: Browser password storage is allowed

    • Solved with removing "rember me" button here
  • 2.9 - recommended: Unsafe cookie configuration

  • 2.10 - urgent: Missing headers

  • 2.11 - urgent: No session timeout

  • 2.12 - recommended: Javascript from external sources

@BWibo BWibo added effort: 5 priority: now type: security Something is vulnerable or not secure. labels Aug 31, 2023
@BWibo BWibo self-assigned this Aug 31, 2023
@BWibo BWibo changed the title Add ckanext-security CKAN security Sep 1, 2023
@BWibo BWibo added effort: 13 and removed effort: 5 labels Sep 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort: 13 priority: now type: security Something is vulnerable or not secure.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants