Markdown-Reader
AUDIT_DOCUMENTATION
BeamReactor Audit Plugin #
Le plugin BeamReactor Audit est un outil essentiel pour effectuer des vérifications d'intégrité et des audits de sécurité dans l'environnement CMS. Il veille à ce que tous les composants, y compris les plugins, modules, skins et fichiers externes, respectent les normes nécessaires et ne présentent aucune vulnérabilité. Ce plugin analyse différents répertoires et effectue des tests rigoureux sur les fichiers, classes et configurations afin d'identifier d'éventuels problèmes ou irrégularités.
Les aspects de sécurité, tels que la protection des fichiers et les contrôles d'accès, sont soigneusement examinés. En outre, il génère des rapports détaillés, catégorisant les résultats en niveaux alpha, beta, security, warning, et info. Les résultats de l'audit fournissent des informations précieuses sur la santé et la posture de sécurité de la configuration du CMS, permettant aux administrateurs de prendre des mesures correctives si nécessaire.
---
Security Check #
Le plugin commence par vérifier si l'utilisateur dispose du niveau d'accès SYSTEM_LEVEL_ADMIN. Si ce n'est pas le cas, un message "Accès refusé" est affiché et l'exécution s'arrête.
`php
if (!secure('SYSTEM_LEVEL_ADMIN')) {
echo '<div style="background:#300;padding:20px;color:#f66;font-weight:bold;border:2px solid #800;">';
echo 'Access denied - System admin level required';
echo '</div>';
return;
}
`
---
Issue Tracking #
Un tableau $issues est utilisé pour suivre les différents types de problèmes rencontrés pendant le processus d'audit. De même, $stats compte le nombre d'éléments scannés.
`php
$issues = [
'alpha' => [],
'beta' => [],
'security' => [],
'warning' => [],
'info' => []
];
$stats = [
'plugins_scanned' => 0,
'modules_scanned' => 0,
'skins_scanned' => 0,
'files_tested' => 0,
'vulnerabilities' => 0
];
`
---
Helper Functions #
Le plugin définit plusieurs fonctions auxiliaires pour des tâches courantes :
- testFileProtection(filepath) : Vérifie si un fichier est protégé en affichant `forbidden`.
- scanRecursive(dir, pattern='*') : Scanne récursivement un répertoire à la recherche de fichiers correspondant à un motif.
- isClassUsed(className, $searchDirs) : Vérifie si une classe est utilisée dans les répertoires spécifiés.
`php
function testFileProtection($filepath) { ... }
function scanRecursive($dir, $pattern = '*') { ... }
function isClassUsed($className, $searchDirs) { ... }
`
---
Plugin Integrity Check #
Le plugin effectue des vérifications d'intégrité dans tous les répertoires du dossier plugins et s'assure que chaque plugin respecte les critères suivants :
- Le fichier principal du plugin existe (pluginName.php).
- Les fichiers de traduction sont présents dans le répertoire locale.
- La comparaison du nombre de lignes entre les différentes localisations.
- Vérification des fichiers de configuration manquants.
- Identification des classes orphelines dans le répertoire lib.
`php
if (is_dir('plugins')) {
// Scan plugins directory
}
`
---
Module Integrity Check #
Il vérifie que tous les fichiers dans le répertoire modules suivent la convention de nommage .mod.php.
`php
if (is_dir('modules')) {
// Check module filenames
}
`
---
Skin Integrity Check #
Pour chaque répertoire de skin sous user/skins, il vérifie la présence des fichiers nécessaires comme layout.php, skinconfig.php, et core.css.
`php
if (is_dir('user/skins')) {
// Check required skin files
}
`
---
Security Checks #
Le plugin effectue des vérifications de sécurité supplémentaires :
- Scanne les répertoires d'images à la recherche de fichiers PHP, les signalant comme des vulnérabilités potentielles.
- Recherche des fichiers .txt errants qui ne sont pas des fichiers de configuration courants.
- Vérifie les problèmes de discordance de langue dans les répertoires locale.
`php
// Check for PHP files in images
// Check for .txt files roaming
// Check locale language mismatch
`
---
Members Area Check #
Il vérifie la présence des fichiers nécessaires dans le répertoire members comme activate.php, login_form.php, etc.
`php
$memberDir = 'members';
if (!empty($cfg[18])) { ... }
`
---
External Files Listing #
Si un répertoire external existe, il liste tous les fichiers qu'il contient de manière récursive.
`php
if (is_dir('external')) { ... }
`
---
Direct File Access Test #
Le plugin teste l'accès direct aux fichiers dans des répertoires spécifiques comme inc, lib, modules, et plugins. Il vérifie si ces fichiers sont protégés ou vulnérables.
`php
$testDirs = [
'inc' => 'inc',
'lib' => 'lib',
'modules' => 'modules',
'plugins' => 'plugins'
];
foreach ($testDirs as $dirName => $dirPath) { ... }
`
---
Display Results #
Enfin, les résultats de l'audit sont affichés dans un format structuré, catégorisant les problèmes par leur niveau de gravité. Le plugin permet également d'exporter le rapport d'audit sous forme de fichier JSON.
`html
<div class="audit-container"> ... </div>
`
Ce processus d'audit complet aide à garantir l'intégrité, la sécurité et la conformité de la configuration du CMS BeamReactor.