Magento Application Security [DE]

Preview:

Citation preview

Magento Application Security

Anna Völkl / @rescueAnn

Security-TechnologieDepartment of Defense Computer Security Initiative

Magento Anwendungsicherheit

Logins & PasswörterAdmin Backend geschütztSSL installiert

Magento Anwendungsicherheit

Logins & PasswörterAdmin Backend geschütztSSL installiert

...und noch viel mehr!

MagentoAnwendungssicherheit

Software-Lebenszyklus

Webserver

Datenbank

BenutzerVersionierung &

Deployment

FirewallDateirechte

Web-ApplicationFirewall

Anforderungen

Updates &Patches

LoginPasswörter

ProgrammierungSoftware-Design

Außerbetriebnahme

Konfigurations-dateien

Extensions/3rd Party

http://blogs.technet.com/b/rhalbheer/archive/2011/01/14/real-physical-security.aspx

Unsichere Software

• Keine Zeit

• Kein Wissen

• Keine Prioritäten– Performance

– SEO

– Neue Funktionen

Potentielle Angreifer

• (Organisierte) Kriminalität

• Defacer

• Script-Kiddies

• Verärgerte Mitarbeiter, Entwickler

• Konkurrenz

• Der Kunde/Shopbetreiber selbst

Interesse?!

• Zahlungsdaten

• Kundendaten

• Eigener Vorteil

• Mitbewerb schädigen

Die häufigsten Risiken von Web-Anwendungen

• A1: Injection

• A2: Fehler in Authentifizierung und Session Management

• A3: Cross-Site Scripting (XSS)

• A4: Unsichere direkte Objektreferenzen

• A5: Sicherheitsrelevante Fehlkonfiguration

OWASP Top 10, 2013

Secure Coding Principles

Secure Coding PrinciplesAngriffsfläche verkleinern

Jedes hinzugefügte Feature erhöht das Sicherheitsrisiko

Secure Coding PrinciplesSichere Grundkonfiguration

Sichere Konfiguration „Out of the box“

Reduktion (wenn erlaubt) durch User/Kunde

Secure Coding PrinciplesLeast Privilege

Aktionen werden mit den geringsten erforderlichen Rechten durchgeführt

(User-Rechte, Dateiberechtigungen,...)

Secure Coding PrinciplesFail securely

Fail secure vs. Fail safe

Die Kunst des Fails

Secure Coding PrinciplesVertraue keinen Services

3rd Party

Secure Coding PrinciplesVertraue keinen Eingaben

Überprüfe das Erwartete

Erwarte das Unerwartete

Secure Coding PrinciplesVertraue keinen Eingaben

Längster Ortsname (einzelnes Wort)

Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakit

anatahu (Neuseeland, 85 letters)

Secure Coding PrinciplesVertraue keinen Eingaben

Längster Ortsname (mehrere Wörter)

Krung Thep Mahanakhon Amon Rattanakosin Mahinthara Yuthaya Mahadilok

Phop Noppharat Ratchathani Burirom Udomratchaniwet Mahasathan Amon Piman

Awatan Sathit Sakkathattiya Witsanukam Prasit (Bangkok, 176 letters)

Secure Coding PrinciplesSecurity by Obscurity

Sicherheit durch Unwissenheit?

Secure Coding PrinciplesKISS

Keep Security simple

Einfachheit vs. Komplexität

Secure Coding PrinciplesSecurity-Fehler richtig beheben

Die Wurzel des Problems verstehen

Weitere Problemstellen identifzieren

Tests entwickeln

...und jetzt?

Anforderungen

Funktionale & nicht funktionale Anforderungen

Secure Coding I

• Neugierig sein - alles hinterfragen

• Secure Coding Guidelines– OWASP Secure Coding Practices

Secure Coding II

• Validatoren für Inputs– Client

– Server

• Erwarteter Input: Whitelist vs. Blacklist Filter

• Aktion erlaubt?– User: Zugriff auf Ressource?

– Admin: Mage::getSingleton('admin/session')->isAllowed('admin/sales/order/actions/create');

Security Testing I

• PHPSniffer

• Magento ECG Coding Standard

• Dependencies:– Sensio Labs: check composer.lock

Kein Zugriff auf

• .git, .git/config• composer.lock• Standard /admin Pfad• /downloader• app/etc/local.xml• Logfiles• phpinfo.php• Datenbank-Dumps: livedb.sql.gz

Laufender Betrieb

• Magento– Updates

– Security Patches

• Webserver, PHP,...– Aktuelle Versionen

Hinterlasst euren Code jedesmal ein bisschen sicherer (besser), als ihr ihn

vorgefunden habt.

Recommended