This is new nifty and long term demanded feature in FreeBSD. A port called portaudit provides a system to check if installed ports are listed in a database of published security vulnerabilities. After installation it will update this security database automatically and include its reports in the output of the daily security run. If you get message like as follows
Vulnerability check disabled, database not found
You need install small port called portaudit. From the man page:
portaudit checks installed packages for known vulnerabilities and generates reports including references to security advisories. Its intended audience is system administrators and individual users. portaudit checks installed packages for known vulnerabilities and generates reports including references to security advisories. Its intended audience is system administrators and individual users.
1) Install port auditing (login as root)
# cd /usr/ports/ports-mgmt/portaudit
Please note that old portaudit port was located at /usr/ports/security/portaudit/.
2) Install portaudit:
# make install clean
===> WARNING: Vulnerability database out of date, checking anyway ===> Extracting for portaudit-0.5.12 ===> Patching for portaudit-0.5.12 ===> Configuring for portaudit-0.5.12 ===> Building for portaudit-0.5.12 ===> Installing for portaudit-0.5.12 ===> Generating temporary packing list ===> Checking if ports-mgmt/portaudit already installed ===> Compressing manual pages for portaudit-0.5.12 ===> Registering installation for portaudit-0.5.12 ===> Cleaning for portaudit-0.5.12
3) Fetch the database so that port auditing get activated immediately. By default it install a shell script 'portaudit' in /usr/local/etc/periodic/security/:
# /usr/local/sbin/portaudit -Fda
auditfile.tbz 100% of 47 kB 405 kBps New database installed. Database created: Wed Feb 27 06:10:01 CST 2008 0 problem(s) in your installed packages found.
- -F: Fetch the current database from the FreeBSD servers.
- -d: Print the creation date of the database.
- -a: Print a vulnerability report for all installed packages
4) portaudit script automatically get called via FreeBSD's periodic (cron job) facility. So your database get updated automatically everyday.
Let us assume you would like to install a port called sudo. If it has known vulnerabilities it will not install sudo:
# cd /usr/ports/security/sudo
# make install clean
===> sudo-18.104.22.168 has known vulnerabilities: => sudo -- local race condition vulnerability. Reference: &tt;http://www.FreeBSD.org/ports/portaudit/3bf157fa- e1c6-11d9-b875-0001020eed82.html> => Please update your ports tree and try again. *** Error code 1 Stop in /usr/ports/security/sudo.
For more information refer portaudit man page:
$ man portaudit