2004-01-19 23:19:00 +01:00
|
|
|
BEGIN {
|
|
|
|
file = "";
|
|
|
|
if (audit != "")
|
|
|
|
stupid_functions_regexp="^(gets|mktemp|tempnam|tmpnam|strcpy|strcat|sprintf)$";
|
|
|
|
else
|
|
|
|
stupid_functions_regexp="^(gets|mktemp|tempnam|tmpnam)$";
|
|
|
|
split("", stupid_binaries);
|
|
|
|
split("", network_binaries);
|
|
|
|
split("", setuid_binaries);
|
|
|
|
split("", writable_files);
|
|
|
|
split("", startup_scripts);
|
|
|
|
header_printed = 0;
|
|
|
|
}
|
|
|
|
FILENAME ~ /\.flattened$/ {
|
|
|
|
if ($0 ~ /(^|\/)etc\/rc\.d\//)
|
|
|
|
startup_scripts[$0] = 1;
|
|
|
|
}
|
|
|
|
FILENAME ~ /\.objdump$/ {
|
|
|
|
if (match($0, /: +file format [^ ]+$/)) {
|
|
|
|
file = substr($0, 1, RSTART - 1);
|
|
|
|
stupid_functions = "";
|
|
|
|
next;
|
|
|
|
}
|
|
|
|
if (file == "")
|
|
|
|
next;
|
|
|
|
if ($3 ~ /^(gets|mktemp|tempnam|tmpnam)$/ ||
|
|
|
|
($3 ~ /^(strcpy|strcat|sprintf)$/ && audit != ""))
|
|
|
|
stupid_binaries[file] = stupid_binaries[file] " " $3;
|
|
|
|
if ($3 ~ /^(accept|recvfrom)$/)
|
|
|
|
network_binaries[file] = 1;
|
|
|
|
}
|
|
|
|
FILENAME ~ /\.setuid$/ { setuid_binaries[$0] = 1; }
|
|
|
|
FILENAME ~ /\.writable$/ { writable_files[$0] = 1; }
|
|
|
|
function print_header() {
|
|
|
|
if (header_printed)
|
|
|
|
return;
|
2006-08-04 14:34:50 +02:00
|
|
|
if (audit != "") {
|
|
|
|
if (destdir == "")
|
|
|
|
print "===> SECURITY REPORT (PARANOID MODE): ";
|
|
|
|
else
|
|
|
|
print "===> SECURITY REPORT FOR", destdir, "(PARANOID MODE): ";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (destdir == "")
|
|
|
|
print "===> SECURITY REPORT: ";
|
|
|
|
else
|
|
|
|
print "===> SECURITY REPORT FOR", destdir, ": ";
|
|
|
|
}
|
2004-01-19 23:19:00 +01:00
|
|
|
header_printed = 1;
|
|
|
|
}
|
|
|
|
function note_for_the_stupid(file) { return (file in stupid_binaries) ? (" (USES POSSIBLY INSECURE FUNCTIONS:" stupid_binaries[file] ")") : ""; }
|
|
|
|
END {
|
|
|
|
note_printed = 0;
|
|
|
|
for (file in setuid_binaries) {
|
|
|
|
if (!note_printed) {
|
|
|
|
print_header();
|
2006-08-04 14:34:50 +02:00
|
|
|
if (destdir == "") {
|
|
|
|
print " This port has installed the following binaries, which execute with";
|
|
|
|
print " increased privileges.";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print " This port has installed the following binaries into", destdir, ", which";
|
|
|
|
print " execute with increased privileges.";
|
|
|
|
}
|
2004-01-19 23:19:00 +01:00
|
|
|
note_printed = 1;
|
|
|
|
}
|
|
|
|
print file note_for_the_stupid(file);
|
|
|
|
}
|
|
|
|
if (note_printed)
|
|
|
|
print "";
|
|
|
|
note_printed = 0;
|
|
|
|
for (file in network_binaries) {
|
|
|
|
if (!note_printed) {
|
|
|
|
print_header();
|
2006-08-04 14:34:50 +02:00
|
|
|
if (destdir == "") {
|
|
|
|
print " This port has installed the following files, which may act as network";
|
|
|
|
print " servers and may therefore pose a remote security risk to the system.";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print " This port has installed the following files into", destdir, ", which may";
|
|
|
|
print " act as network servers and may therefore pose a remote security risk to";
|
|
|
|
print " the system.";
|
|
|
|
}
|
2004-01-19 23:19:00 +01:00
|
|
|
note_printed = 1;
|
|
|
|
}
|
|
|
|
print file note_for_the_stupid(file);
|
|
|
|
}
|
|
|
|
if (note_printed) {
|
|
|
|
print "";
|
|
|
|
note_printed = 0;
|
|
|
|
for (file in startup_scripts) {
|
|
|
|
if (!note_printed) {
|
|
|
|
print_header();
|
2006-08-04 14:34:50 +02:00
|
|
|
if (destdir == "") {
|
|
|
|
print " This port has installed the following startup scripts, which may cause";
|
2004-01-19 23:19:00 +01:00
|
|
|
print " these network services to be started at boot time.";
|
2006-08-04 14:34:50 +02:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
print " This port has installed the following startup scripts into", destdir, ", which";
|
|
|
|
print " may cause these network services to be started at boot time.";
|
|
|
|
}
|
2004-01-19 23:19:00 +01:00
|
|
|
note_printed = 1;
|
|
|
|
}
|
|
|
|
print file;
|
|
|
|
}
|
|
|
|
if (note_printed)
|
|
|
|
print "";
|
|
|
|
}
|
|
|
|
note_printed = 0;
|
|
|
|
for (file in writable_files) {
|
|
|
|
if (!note_printed) {
|
|
|
|
print_header();
|
2006-08-04 14:34:50 +02:00
|
|
|
if (destdir == "")
|
|
|
|
print " This port has installed the following world-writable files/directories.";
|
|
|
|
else
|
|
|
|
print " This port has installed the following world-writable files/directories into", destdir, ".";
|
2004-01-19 23:19:00 +01:00
|
|
|
note_printed = 1;
|
|
|
|
}
|
|
|
|
print file;
|
|
|
|
}
|
|
|
|
if (note_printed)
|
|
|
|
print "";
|
|
|
|
if (header_printed) {
|
|
|
|
print " If there are vulnerabilities in these programs there may be a security";
|
|
|
|
print " risk to the system. FreeBSD makes no guarantee about the security of";
|
|
|
|
print " ports included in the Ports Collection. Please type 'make deinstall'";
|
|
|
|
print " to deinstall the port if this is a concern.";
|
|
|
|
}
|
|
|
|
exit header_printed;
|
|
|
|
}
|