Sunday, 15 July 2012

OWASP iGoat

Kilka tygodni temu natknąłem się na interesujący materiał OWASP dla programistów iOS, a dotyczący dobrych praktyk związanych z bezpieczeństwem. Chodzi mianowicie o iGoat http://code.google.com/p/owasp-igoat/. Pomysł bardzo ciekawy, bo w sposób praktyczny przedstawia potencjalne problemy z bezpieczeństwem.
Niestety, bez dokładnego wyjaśnienia poszczególnych ćwiczeń można niepoprawnie interpretować rekomendowane rozwiązania opisane w rozwiązaniach.
Dwa pierwsze ćwiczenia związane są z przechowywaniem informacji na urządzeniu mobilnym. Moim zdaniem zabrakło informacji dotyczących różnic pomiędzy lokalną bazą sqlite a keychain. Należy pamiętać, że:
  1. Rekordy w keychain mogą być chronione kodem PIN/frazą przejściową – jednak programista nie ma bezpośredniego wpływu na to czy użytkownik ustawi je czy też nie; 
  2. Można użyć klasy bezpieczeństwa (w keychain), która spowoduje, że dane nie będą eksportowane poza urządzenie. W niektórych przypadkach podnosi to poziom bezpieczeństwa;
  3. Jeśli chcemy przechowywać na urządzeniu krytyczne dane - na przykład klucz współdzielony, którym autoryzujemy transakcje finansowe, to powinien być on zaszyfrowany a weryfikacja powinna zawsze odbywać się po stronie serwera a nie urządzenia mobilnego. A pisząc bardziej precyzyjne, powinniśmy dodatkowo stosować PBKDF2. 
Moim zdaniem ćwiczenie dotyczące SQLi ma niewielkie zastosowanie w praktyce. Kolejne ćwiczenie dotyczy między innymi weryfikacji poprawności certyfikatów SSL. Z tego typu błędem spotkaliśmy się kilka razy testując aplikacje mobilne. Pakiet zawiera jeszcze dwa dodatkowe ćwiczenia, które poruszają specyficznie aspekty aplikacji mobilnych.
Podsumowując, pomysł bardzo ciekawy i możliwe, że jedno-dwa ćwiczenia będą omówione na szkoleniach Prevenity.