Vérifier que les bibliothèques partagées ont des permissions restrictives
Garantit que le répertoire de bibliothèques partagées /lib n'est pas modifiable par le groupe ou les autres, empêchant l'injection de bibliothèques malveillantes dans des processus privilégiés.
Vérifié sur le contenu d’un fichier de configuration persistant, la source de vérité qui survit aux redémarrages.
Un mapping est une référence croisée vers l’endroit où chaque norme situe cette exigence, ancrée et recoupée, pas une affirmation d’équivalence. Un check réussi est une preuve vers ces références, comment le lire.
Pourquoi cette règle
Les fichiers des répertoires de bibliothèques partagées (comme /lib) sont chargés dans l'espace d'adressage des processus, y compris privilégiés, et parfois du noyau lui-même à l'exécution. Si le répertoire de bibliothèques est modifiable par le groupe ou les autres, un utilisateur non privilégié pourrait remplacer ou ajouter un .so ensuite chargé par un processus root, obtenant une exécution de code arbitraire en tant que root. Des permissions restrictives (aucune écriture pour le groupe ou les autres) sont nécessaires pour protéger l'intégrité de chaque programme qui se lie à ces bibliothèques.
Ce que vérifie Pavois
Pavois lit le mode effectif du répertoire /lib et vérifie l'absence de bit d'écriture pour le groupe ou les autres. Protégé par only_if { file('/lib').exist? }. Sur les distributions modernes, /lib est généralement un lien symbolique vers /usr/lib ; vérifier l'inode réel suit le chemin réellement utilisé par le chargeur dynamique, de sorte que l'assertion reflète ce que ld.so approuvera à l'exécution plutôt qu'une hypothèse de packaging.
only_if { file('/lib').exist? }
describe file('/lib') do
it { should_not be_writable.by('group') }
it { should_not be_writable.by('other') }
endComment vérifier qu’elle est appliquée
Exécutez stat -c '%a %U %G' /lib (et, comme il s'agit généralement d'un lien symbolique, stat -c '%a %U %G' /usr/lib). La sortie attendue est 755 root root ou plus strict : aucun bit d'écriture pour le groupe ou les autres.
Inspecter et investiguer
stat /lib et find /lib /usr/lib -perm /022 -type d révèlent tout répertoire modifiable par le groupe/les autres. L'intégrité des fichiers de bibliothèque se vérifie avec dpkg --verify (Debian/Ubuntu) ou rpm -Va (famille RHEL). Les modifications apparaissent dans /var/log/audit/audit.log si ces chemins sont surveillés.
Remédiation
Aucun plan de durcissement automatisé n'est défini pour cette règle, appliquez-la donc manuellement : retirez l'écriture groupe/autres avec chmod -R go-w /lib /usr/lib et assurez-vous que le propriétaire est root (chown -R root:root /usr/lib). Appliquez avec précaution, voir la note d'impact.
Pavois applique ceci avec son propre moteur harden, le plan ci-dessous, pas un script shell :
| mode | 0755 |
|---|---|
| path | /lib |
| resource | file |
pavois harden plan localoù la cible est local, un alias SSH user@hôte, ou un conteneur , Docs
Impact & précautions
Un répertoire de bibliothèques modifiable par le groupe ou tous est une voie directe vers l'exécution de code root : un attaquant y dépose un .so malveillant qu'un processus privilégié charge. Précautions : ne retirez jamais les bits de lecture/exécution (traversée) de /lib, uniquement les bits d'écriture, sous peine de casser l'édition de liens dynamique de tout le système et de le rendre non amorçable. Certains logiciels tiers installent des bibliothèques avec des permissions laxistes ; avant un chmod récursif, auditez avec find /lib /usr/lib -perm /022 pour comprendre ce qui changera, et évitez de modifier le propriétaire de répertoires fournisseur qu'un service non-root gère légitimement.
Mapping des normes
| Norme | Référence | Type | Version | Confiance |
|---|---|---|---|---|
| NIST | AC-6(1), CM-5(6), CM-5(6).1, CM-6(a) | support | 800-53 Rev 5 · 800-171 Rev 2 (pinned) | moyenne |
| DISA STIG | UBTU-22-232020, UBTU-24-300006 | direct | per OS STIG release | haute |
Chaque référence est une référence croisée ancrée dans le benchmark amont et recoupée avec le SCAP Security Guide et ansible-lockdown, pas une affirmation d’équivalence. Direct = une exigence prescriptive au niveau de la ligne ; support = une famille de contrôle abstraite (NIST) vers laquelle le check apporte une preuve. Comment lire un mapping.