Vérifier la Signature de Code d'App sur macOS
Apprenez à vérifier les signatures de code des applications sur Mac pour s'assurer de l'authenticité et détecter les altérations. Ceci est essentiel pour l'audit de sécurité et la conformité en environnement d'entreprise.
Vérification Basique de Signature de Code
Afficher les informations détaillées de signature de code pour une application :
#!/bin/bash
# Vérification basique de signature de code
APP_PATH="/Applications/Safari.app"
echo "Vérification signature de code pour : $APP_PATH"
codesign -dv --verbose=4 "$APP_PATH"
Vérification Rapide de Validité
Vérifier si une application est valide et respecte les exigences de signature :
#!/bin/bash
# Vérification rapide de validité
APP_PATH="/Applications/Calendar.app"
echo "Validation : $APP_PATH"
codesign -v --verbose "$APP_PATH"
if [ $? -eq 0 ]; then
echo "✓ Application est valide et correctement signée"
else
echo "✗ Signature d'application invalide ou altérée"
fi
Analyseur de Signature de Code Avancé
Script avec analyse complète de signature et gestion d'erreur :
#!/bin/bash
# Fonction pour vérifier la signature de code
check_code_signature() {
local app_path="$1"
if [[ ! -d "$app_path" ]]; then
echo "Erreur : Application non trouvée à $app_path"
return 1
fi
echo "=== Analyse de Signature de Code ==="
echo "Application : $app_path"
echo "Date : $(date)"
echo "===================================="
# Informations détaillées de signature
echo "📋 Info Signature Détaillée :"
codesign -dv --verbose=4 "$app_path" 2>&1
echo ""
echo "🔍 Vérification de Validation :"
# Vérification de validité
if codesign -v --verbose "$app_path" 2>&1; then
echo "✅ Statut : VALIDE - Application correctement signée"
return 0
else
echo "❌ Statut : INVALIDE - Signature d'application compromise"
return 1
fi
}
# Exemple d'utilisation
APP_PATH="${1:-/Applications/Safari.app}"
check_code_signature "$APP_PATH"
Scanner de Sécurité Multi-Applications
Scanner plusieurs applications pour l'intégrité des signatures :
#!/bin/bash
# Applications à scanner
APPS_TO_SCAN=(
"/Applications/Safari.app"
"/Applications/Calendar.app"
"/Applications/Mail.app"
"/System/Applications/Calculator.app"
"/System/Applications/TextEdit.app"
)
# Fonction pour scanner une seule app
scan_app() {
local app_path="$1"
local app_name=$(basename "$app_path" .app)
echo -n "Scan $app_name... "
if [[ ! -d "$app_path" ]]; then
echo "❓ NON TROUVÉE"
return 1
fi
if codesign -v "$app_path" 2>/dev/null; then
echo "✅ VALIDE"
return 0
else
echo "❌ INVALIDE"
# Afficher détails pour signatures invalides
echo " Détails :"
codesign -v --verbose "$app_path" 2>&1 | sed 's/^/ /'
return 1
fi
}
# Rapport de scan de sécurité
echo "=== Rapport de Scan Sécurité Roundfleet ==="
echo "Généré : $(date)"
echo "Appareil : $(hostname)"
echo "==========================================="
valid_count=0
invalid_count=0
missing_count=0
for app_path in "${APPS_TO_SCAN[@]}"; do
if scan_app "$app_path"; then
((valid_count++))
elif [[ ! -d "$app_path" ]]; then
((missing_count++))
else
((invalid_count++))
fi
done
echo "==========================================="
echo "📊 Résumé :"
echo " Signatures valides : $valid_count"
echo " Signatures invalides : $invalid_count"
echo " Applications manquantes : $missing_count"
if [[ $invalid_count -gt 0 ]]; then
echo ""
echo "⚠️ ATTENTION : $invalid_count application(s) ont des signatures invalides"
echo " Recommande d'enquêter sur les applications potentiellement altérées"
fi
Audit de Signature de Code Entreprise
Script d'audit complet pour environnements d'entreprise :
#!/bin/bash
# Fonction pour obtenir les détails de signature
get_signature_details() {
local app_path="$1"
# Obtenir l'autorité de signature
local authority=$(codesign -dv "$app_path" 2>&1 | grep "Authority=" | head -1 | cut -d'=' -f2)
# Obtenir le type de hash
local hash_type=$(codesign -dv "$app_path" 2>&1 | grep "Hash type=" | cut -d'=' -f2)
# Obtenir l'horodatage
local timestamp=$(codesign -dv "$app_path" 2>&1 | grep "Timestamp=" | cut -d'=' -f2)
echo "Autorité : ${authority:-Inconnue}"
echo "Type Hash : ${hash_type:-Inconnu}"
echo "Horodatage : ${timestamp:-Aucun}"
}
# Fonction pour audit entreprise
enterprise_audit() {
local app_path="$1"
local app_name=$(basename "$app_path" .app)
echo "🔐 Audit : $app_name"
echo "Chemin : $app_path"
if [[ ! -d "$app_path" ]]; then
echo "Statut : ❓ APPLICATION NON TROUVÉE"
return 1
fi
# Effectuer validation
if codesign -v "$app_path" 2>/dev/null; then
echo "Statut : ✅ SIGNATURE VALIDE"
get_signature_details "$app_path"
else
echo "Statut : ❌ SIGNATURE INVALIDE"
echo "Risque Sécurité : ÉLEVÉ"
# Afficher erreur détaillée
echo "Détails Erreur :"
codesign -v --verbose "$app_path" 2>&1 | sed 's/^/ /'
# Vérifier fichiers ajoutés
echo "Vérification modifications non autorisées..."
codesign -v --verbose "$app_path" 2>&1 | grep "file added" | sed 's/^/ 🚨 /'
fi
echo "─────────────────────────────────────"
}
# Exécution audit entreprise
echo "🏢 Audit Sécurité Entreprise Roundfleet"
echo "====================================="
# Auditer applications système critiques
CRITICAL_APPS=(
"/Applications/Safari.app"
"/System/Applications/Finder.app"
"/Applications/Calendar.app"
"/Applications/Mail.app"
)
for app in "${CRITICAL_APPS[@]}"; do
enterprise_audit "$app"
done
echo "Audit terminé : $(date)"
Utilisation avec Roundfleet
- Spécifiez le chemin de l'application dans le script
- Choisissez entre analyse détaillée ou validation rapide
- Déployez via l'exécution de script distant Roundfleet
- Consultez les résultats dans l'historique des actions pour conformité sécurité
Chemins d'Applications Communs
| Application | Chemin |
|---|---|
| Safari | /Applications/Safari.app |
| Finder | /System/Applications/Finder.app |
| Calendar | /Applications/Calendar.app |
/Applications/Mail.app | |
| Calculator | /System/Applications/Calculator.app |
Interprétation des Résultats
Signature Valide : Application authentique et non modifiée
/Applications/Safari.app: valid on disk
/Applications/Safari.app: satisfies its Designated Requirement
Signature Invalide : Application a été altérée
/Applications/Safari.app: a sealed resource is missing or invalid
file added: /Applications/Safari.app/Contents/maliciousfile.sh
Considérations de Sécurité
- Audits réguliers : Planifiez des vérifications périodiques de signatures pour applications critiques
- Enquêter anomalies : Toute signature invalide nécessite enquête immédiate
- Quarantaine apps suspectes : Isolez applications avec signatures compromises
- Documenter découvertes : Maintenez pistes d'audit pour conformité
Dépannage
Permission refusée : Assurez-vous que le script a l'accès système de fichiers nécessaire
Application non trouvée : Vérifiez le chemin correct de l'application
Commande non trouvée : codesign est disponible sur tous les systèmes macOS
Note : Les signatures invalides indiquent des risques de sécurité potentiels. Enquêtez et remédiez immédiatement toute application avec signatures compromises.