Upload
anna-voelkl
View
70
Download
0
Embed Size (px)
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.