Download - WordPress Sicherheit ab Werk
Sicherheit ab Werkdie Bordmittel von WordPress
für sichere Plugins und Themes
ad personam
• Stefan Kremer
• freiberuflicher Systemberater Mac, Web, CTI
• 10 Jahre WordPress
• Contributor
• Inhaber von AdminPress
@WPAberSicher
adminpress
Angriffsvektoren
Cross-Site-Scripting (XSS)bezeichnet das Ausnutzen einer
Computersicherheitslücke in Webanwendungen, indem Informationen
aus einem Kontext, in dem sie nicht vertrauenswürdig sind, in einen anderen Kontext eingefügt werden, in dem sie als vertrauenswürdig eingestuft werden. Aus diesem vertrauenswürdigen Kontext kann
dann ein Angriff gestartet werden.
SQL Injectionsbezeichnet das Ausnutzen einer
Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde
Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht.
Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die
Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen.
All data is guilty until proved innocent
Trefft keine AnnahmenVertraut keinen Daten
Lehnt Euch nicht zurück
Datenüberprüfung(Validation)
• Positivliste (Whitelisting)
• nur definierte Werte werden akzeptiert
• Tauglichkeit (Qualifying)
• PHP Funktionen
• WordPress Funktionen
PHP • is_bool()
• is_float()
• filter_input()
• filter_var()
• …
• is_email()
• wp_validate_boolean()
• wp_kses_allowed_html()
• …
WP
"In diesem Augenblick ist alles perfekt. Die Weichheit des Lichts, dieser feine Duft, die ruhige Atmosphäre der Stadt. Sie atmet tief ein, und das Leben erscheint ihr so einfach, so klar, dass sie eine Anwandlung von Liebe überkommt und das Verlangen der gesamten Menschheit zu helfen."
/wp-includes/kses.php
/wp-includes/formatting.php
IST SICHERHEITSLYRIK
WordPress Funktionenabsint() sanitize_post() esc_attr()
sanitize_email() sanitize_text_field() esc_attr__()
sanitize_file_name() sanitize_title() esc_attr_e()
sanitize_html_class() sanitize_title_for_query() esc_js()
sanitize_key() sanitize_title_with_dashes() esc_sql()
sanitize_meta() sanitize_user() esc_textarea()
sanitize_mime_type() esc_html() esc_url()
sanitize_option() esc_html__() esc_url_raw()
sanitize_sql_orderby() esc_html_e() urlencode()
Datenaufbereitung(Sanitization)
• to sanitize = desinfizieren, reinigen, …
• Validation: Daten sollen bestimmte Merkmale aufweisen
• Sanitization: Daten werden von unerwünschten Inhalten befreit
Validate InputSanitize Output
CRSFist ein Angriff auf ein Computersystem, bei
dem der Angreifer eine Transaktion in einer Webanwendung durchführt. Einem
Opfers, das bei einer Webanwendung bereits angemeldet sein muss, wird ohne
dessen Wissen im Webbrowser ein arglistiger HTTP-Request (‚Anforderung‘), der die vom Angreifer gewünschte Aktion
ausführt, untergeschoben.
Nonces• Numbers used once = Einmalpasswort
• keine dogmatische, reine Lehre
• alphanumerisch ≠ numerisch
• 12 h Lebensdauer ≠ einmalig
• Prüfung der Intention
• Erzeugung des nonces bei Aufruf Formular
• Überprüfung des nonces bei Übermittlung
QualitätssicherungTheme Review
required
recommended
"ottomatisch"
QualitätssicherungPlugIn Review
😱https://vip.wordpress.com/documentation/code-review-what-we-look-for/
… Security Team• http://www.joomla-security.de/das-team.html
• https://security.drupal.org/team-members
• http://typo3.org/teams/security/members/
• https://c-c-a.org/aktuelles/news/details/security-mailingliste
• https://docs.djangoproject.com/en/1.8/internals/roles/#security-team-list
• https://plone.org/team/SecurityTeam
–Andrew Nacin, WordPress Lead Developer
in a presentation‘WordPress.org & Optimizing Security for your WordPress sites’
June 2013
„The WordPress security team is made up of 25 experts including lead developers and security
researchers — about half are employees of Automattic, and a number work in the web security
field. We consult with well-known and trusted security researchers and hosting companies.“
WordPress Security Team