Intégration d'Ostorlab avec Bitbucket
Aperçu
Dans ce guide, nous allons explorer comment intégrer facilement les tests de sécurité et de confidentialité dans vos builds de pipeline d'applications mobiles à l'aide de Bitbucket Pipeline.
Démonstration vidéo
Regardez cette brève vidéo pour un aperçu visuel du processus d'intégration.
Générer une clé API :
La première étape consiste à générer une nouvelle clé API. Dans le tableau de bord de votre organisation, cliquez sur le bouton du menu.

Ensuite, cliquez sur "Integrations/API" pour développer le menu.

Et choisissez API keys.

À partir de là, cliquez sur "New" (Nouveau).

Copiez la clé API. Vous pouvez également ajouter un nom et une date d'expiration à votre clé.

N'oubliez pas de cliquer sur le bouton d'enregistrement (save) pour sauvegarder votre clé.

Ajouter la clé API aux variables Bitbucket :
Une fois que vous avez généré votre clé API, ajoutez-la à vos variables Bitbucket.

Mettre à jour votre Pipeline :
Maintenant, vous devez mettre à jour votre pipeline Bitbucket pour y inclure une étape Ostorlab destinée à déclencher le scan de sécurité. Voici un exemple de configuration qui effectue un scan rapide (fast scan) sur un APK Android et fait échouer le pipeline en cas de vulnérabilités présentant un niveau de gravité élevé (HIGH).

- step:
name: Ostorlab Security Scan
caches:
- pip
script:
- pip install ostorlab[cli]
- export OSTORLAB_API_KEY=$SECRET_OSTORLAB_API_KEY
- export SCAN_TITLE="Test Bitbucket CI workflow"
- export SCAN_PROFILE='fast_scan'
- export BREAK_ON_RISK_RATING="HIGH"
- export MAX_WAIT_MINUTES=15
- export TARGET="oxo_insecure.apk"
- export ASSET_TYPE="android-apk"
- export EXTRA="--test-credentials-login test_login --test-credentials-password test_pass"
- ostorlab --api-key="$OSTORLAB_API_KEY" ci-scan run --title="$SCAN_TITLE" --scan-profile="$SCAN_PROFILE" --break-on-risk-rating="$BREAK_ON_RISK_RATING" --max-wait-minutes="$MAX_WAIT_MINUTES" $EXTRA $ASSET_TYPE
Explorons chaque ligne de cette configuration :
Tout d'abord, nous devrons installer le package ostorlab et ses composants d'interface en ligne de commande à l'aide de pip.

Ensuite, créez une variable pour stocker la clé API. Assurez-vous que le nom de la variable correspond à celui ajouté à votre dépôt en tant que secret ou variable d'environnement.

Ajoutez une variable de titre (title) pour votre scan.

Ajoutez une autre variable pour le profil de scan (scan profile). Choisissez entre Fast Scan pour une analyse statique rapide ou Full Scan pour une analyse complète, comprenant l'analyse statique, dynamique et backend.

Puis, une variable pour définir le temps maximum que le build doit attendre (en minutes) pour terminer l'analyse de sécurité.

Ajoutez une variable cible (target) pour spécifier le chemin vers votre application.

Définissez le type d'actif (asset type) comme étant Android ou iOS. Dans mon cas, je choisis Android car j'ai l'intention de scanner une application Android.

Le paramètre supplémentaire (extra) vous permet de fournir vos fichiers Lock pour une analyse de scan améliorée.

La liste suivante décrit les fichiers SBOM/Lock pris en charge :
SPDX
CycloneDX
gradle.lockfile
pubspec.lock
buildscript-gradle.lockfile
pnpm-lock.yaml
package-lock.json
packages.lock.json
pom.xml
Gemfile.lock
yarn.lock
Cargo.lock
composer.lock
conan.lock
mix.lock
go.mod
requirements.txt
Pipfile.lock
poetry.lock
De plus, il vous permet de fournir des identifiants simples ou des identifiants personnalisés pour activer les tests authentifiés.
Pour la prise en charge du 2FA, vous pouvez ajouter les identifiants suivants :
- SMS 2FA : --sms-2fa-sender <sender_name> (En savoir plus sur le 2FA par SMS)
- Email 2FA : --email-2fa-sender-email-address <sender_email> --email-2fa-email-address <email_address> --email-2fa-password <email_password> (En savoir plus sur le 2FA par e-mail)
- TOTP 2FA : --totp-2fa-seed <seed> (En savoir plus sur le 2FA TOTP)

Vous pouvez également fournir des invites de l'interface utilisateur (UI prompts) pour guider le scanner à travers l'interface utilisateur de votre application. Les invites de l'interface utilisateur sont une fonctionnalité puissante qui vous permet d'utiliser le langage naturel pour indiquer au scanner comment naviguer dans l'application. Par exemple, vous pouvez spécifier des invites telles que "cliquer sur le bouton de connexion" ou "saisir le nom d'utilisateur et le mot de passe".
--ui-prompt-name accept-terms --ui-prompt-action "Scroll down and tap the 'Accept Terms' checkbox."
--ui-prompt-name submit --ui-prompt-action "Tap the 'Submit' button to complete the login process."
Vous pouvez ajouter plusieurs flags --ui-prompt-name et --ui-prompt-action pour différentes étapes du flux de votre application.
De plus, vous pouvez utiliser le flag --ui-prompt-id pour référencer des flux d'invites de l'interface utilisateur existants par leurs ID. Cela vous permet de réutiliser des flux d'invites de l'interface utilisateur précédemment définis. Vous pouvez ajouter plusieurs flags --ui-prompt-id selon vos besoins. Par exemple :
--ui-prompt-id 123 --ui-prompt-id 456
Enfin, exécutez la commande Ostorlab comme suit :

Après avoir mis à jour le pipeline, vérifiez la progression ici.

Vérifiez les journaux (logs) du pipeline pour obtenir des détails, récupérez l'ID du scan, et surveillez votre scan au sein du compte de votre organisation sur Ostorlab.

Par exemple, voici le rapport du scan actuel.

Conclusion
Ce guide couvre les étapes requises pour intégrer facilement et efficacement les tests de sécurité autonomes d'Ostorlab pour les applications mobiles Android et iOS dans votre Pipeline Bitbucket.