Gibt es Best Practices zum Testen der Sicherheit in einem Agile Development Shop?

Translate

Was sind in Bezug auf die agile Entwicklung die besten Methoden zum Testen der Sicherheit pro Version?

Wenn es sich um eine monatliche Veröffentlichung handelt, gibt es Geschäfte, die jeden Monat Pen-Tests durchführen?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Was ist Ihre Anwendungsdomäne? Es hängt davon ab, ob.

Da Sie das Wort "Agile" verwendet haben, handelt es sich vermutlich um eine Web-App. Ich habe eine schöne einfache Antwort für Sie.

Kaufen Sie eine Kopie der Burp Suite (es ist das beste Google-Ergebnis für "rülpsen" - eine sichere Bestätigung!). Es kostet Sie 99EU oder ~ 180USD oder 98 $ Obama Dollar, wenn Sie bis November warten.

Burp arbeitet als Webproxy. Sie durchsuchen Ihre Web-App mit Firefox oder IE oder was auch immer und sammelt alle von Ihnen generierten Treffer. Diese Treffer werden einem Feature namens "Intruder" zugeführt, bei dem es sich um einen Web-Fuzzer handelt. Intruder ermittelt alle Parameter, die Sie jedem Ihrer Abfragehandler zur Verfügung stellen. Anschließend werden verrückte Werte für jeden Parameter ausprobiert, einschließlich SQL-, Dateisystem- und HTML-Metazeichen. Bei einem typischen komplexen Formularbeitrag werden etwa 1500 Treffer generiert, anhand derer Sie beängstigende - oder, was in einem agilen Kontext wichtiger ist, neue - Fehlerantworten identifizieren.

Das Fuzzing jedes Abfragehandlers in Ihrer Web-App bei jeder Release-Iteration ist das Wichtigste, was Sie tun können, um die Anwendungssicherheit zu verbessern, ohne einen formellen "SDLC" einzurichten und die Anzahl der Mitarbeiter zu erhöhen. Überprüfen Sie darüber hinaus Ihren Code auf die wichtigsten Sicherheits-Hotspots für Web-Apps:

  • Verwenden Sie nur parametrisierte vorbereitete SQL-Anweisungen. Verketten Sie Zeichenfolgen niemals einfach und geben Sie sie an Ihr Datenbankhandle weiter.

  • Filtern Sie alle Eingaben in eine weiße Liste bekannter guter Zeichen (Alnum, grundlegende Interpunktion) und geben Sie, was noch wichtiger ist, Filterdaten aus Ihren Abfrageergebnissen aus, um HTML-Metazeichen in HTML-Entitäten (quot, lt, gt usw.) zu "neutralisieren".

  • Verwenden Sie lange zufällige, schwer zu erratende Bezeichner überall dort, wo Sie derzeit einfache ganzzahlige Zeilen-IDs in Abfrageparametern verwenden, und stellen Sie sicher, dass Benutzer X die Daten von Benutzer Y nicht sehen kann, indem Sie diese Bezeichner erraten.

  • Testen Sie jeden Abfragehandler in Ihrer Anwendung, um sicherzustellen, dass er nur funktioniert, wenn ein gültiges, angemeldetes Sitzungscookie angezeigt wird.

  • Aktivieren Sie den XSRF-Schutz in Ihrem Webstack, der versteckte Formular-Token-Parameter für alle gerenderten Formulare generiert, um zu verhindern, dass Angreifer böswillige Links erstellen, die Formulare für ahnungslose Benutzer senden.

  • Verwenden Sie bcrypt --- und sonst nichts ---, um Hash-Passwörter zu speichern.

Quelle
Translate

Ich bin kein Experte für agile Entwicklung, aber ich würde mir vorstellen, dass die Integration einer grundlegenden automatisierten Pen-Test-Software in Ihren Erstellungszyklus ein guter Anfang wäre. Ich habe mehrere Softwarepakete gesehen, die grundlegende Tests durchführen und sich gut für die Automatisierung eignen.

Quelle
Translate

Ich bin kein Sicherheitsexperte, aber ich denke, die wichtigste Tatsache, die Sie vor dem Testen der Sicherheit beachten sollten, ist das, was Sie schützen möchten. Nur wenn Sie wissen, was Sie schützen möchten, können Sie Ihre Sicherheitsmaßnahmen ordnungsgemäß analysieren und erst dann mit dem Testen dieser implementierten Maßnahmen beginnen.

Sehr abstrakt, ich weiß. Ich denke jedoch, dass dies der erste Schritt jeder Sicherheitsüberprüfung sein sollte.

Quelle
Translate

Unit Testing, Verteidigungsprogrammierungund viele Protokolle

Unit Testing

Stellen Sie sicher, dass Sie den Unit-Test so früh wie möglich durchführen (z. B. sollte das Kennwort vor dem Senden verschlüsselt werden, der SSL-Tunnel funktioniert usw.). Dies würde verhindern, dass Ihre Programmierer das Programm versehentlich unsicher machen.

Verteidigungsprogrammierung

Ich persönlich nenne das die paranoide Programmierung, aber Wikipedia ist niemals falsch (Sarkasmus). Grundsätzlich fügen Sie Ihren Funktionen Tests hinzu, die alle Eingaben überprüfen:

  • Sind die Cookies des Benutzers gültig?
  • ist er noch angemeldet?
  • Sind die Parameter der Funktion gegen SQL-Injection geschützt? (Obwohl Sie wissen, dass die Eingabe von Ihren eigenen Funktionen generiert wird, werden Sie trotzdem testen)

Protokollierung

Protokolliere alles wie verrückt. Es ist einfacher, Protokolle zu entfernen, als sie hinzuzufügen. Ein Benutzer hat sich angemeldet? Protokolliere es. Ein Benutzer hat einen 404 gefunden? Protokolliere es. Der Administrator hat einen Beitrag bearbeitet / gelöscht? Protokolliere es. Jemand konnte auf eine eingeschränkte Seite zugreifen? Protokolliere es.

Seien Sie nicht überrascht, wenn Ihre Protokolldatei während Ihrer Entwicklungsphase mehr als 15 MB erreicht. Während der Beta können Sie entscheiden, welche Protokolle entfernt werden sollen. Wenn Sie möchten, können Sie ein Flag hinzufügen, um zu entscheiden, wann ein bestimmtes Ereignis protokolliert wird.

Quelle