Sicherheit ab Werk
die 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
stefan@adminpress.de
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 Injections
bezeichnet 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 Annahmen
Vertraut 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 Funktionen
absint() 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 Input
Sanitize Output
CRSF
ist 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ätssicherung

Theme Review
required
recommended
"ottomatisch"
Qualitätssicherung

PlugIn 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
Stefan Kremer
https://adminpress.de
FRAGEN?

WordPress Sicherheit ab Werk

  • 1.
    Sicherheit ab Werk dieBordmittel von WordPress für sichere Plugins und Themes
  • 2.
    ad personam • StefanKremer • freiberuflicher Systemberater
 Mac,Web, CTI • 10 Jahre WordPress • Contributor • Inhaber von AdminPress @WPAberSicher adminpress stefan@adminpress.de
  • 3.
  • 4.
    Cross-Site-Scripting (XSS) bezeichnet dasAusnutzen 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.
  • 5.
    SQL Injections bezeichnet dasAusnutzen 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.
  • 6.
    All data isguilty until proved innocent
  • 7.
    Trefft keine Annahmen Vertrautkeinen Daten Lehnt Euch nicht zurück
  • 8.
    Datenüberprüfung
 (Validation) • Positivliste (Whitelisting) •nur definierte Werte werden akzeptiert • Tauglichkeit (Qualifying) • PHP Funktionen • WordPress Funktionen
  • 9.
    PHP • is_bool() • is_float() •filter_input() • filter_var() • … • is_email() • wp_validate_boolean() • wp_kses_allowed_html() • … WP
  • 10.
    "In diesem Augenblickist 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
  • 11.
  • 12.
    WordPress Funktionen absint() 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()
  • 13.
    Datenaufbereitung
 (Sanitization) • to sanitize= desinfizieren, reinigen, … • Validation: 
 Daten sollen bestimmte Merkmale aufweisen • Sanitization: 
 Daten werden von unerwünschten Inhalten befreit
  • 14.
  • 15.
    CRSF ist ein Angriffauf 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.
  • 16.
    Nonces • Numbers usedonce = 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
  • 17.
  • 18.
  • 19.
    … 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
  • 20.
    –Andrew Nacin, WordPressLead 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
  • 21.