ports/156077: [bsd.port.mk] [patch] reaper of the dead: remove old security check
Eitan Adler
lists at eitanadler.com
Thu Mar 31 03:30:11 UTC 2011
>Number: 156077
>Category: ports
>Synopsis: [bsd.port.mk] [patch] reaper of the dead: remove old security check
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Thu Mar 31 03:30:10 UTC 2011
>Closed-Date:
>Last-Modified:
>Originator: Eitan Adler
>Release:
>Organization:
>Environment:
>Description:
As part of my ongoing war against old useless code in b.*.m I noticed a huge chunk of code that has not been touched since 2002. This chunk of code is wrapped around by a check for the definition of OLD_SECURITY_CHECK.
The check was added by by marcus@ in early 2004 and the code has not been modified since mid 2002.
For example:
1.403 (sobomax 25-Mar-02): security-check:
1.427 (kris 03-Nov-02): # Scan PLIST for:
It appears this code was added in a major change in revision 1.475 with the original request for the change in PR 55331
As far as I am aware there is no reason to keep the old check. The variable is not documented in ports(7), the top of bsd.port.mk, or the porter's handbook. I would guess the variable was intended only as a temporary measure while the twenty plus changes had a chance to settle. I can find no reference to the variable anywhere else (even in the cvs log).
>How-To-Repeat:
>Fix:
Index: bsd.port.mk
===================================================================
RCS file: /home/ncvs/ports/Mk/bsd.port.mk,v
retrieving revision 1.676
diff -u -r1.676 bsd.port.mk
--- bsd.port.mk 19 Mar 2011 21:30:34 -0000 1.676
+++ bsd.port.mk 31 Mar 2011 02:51:51 -0000
@@ -4238,7 +4238,6 @@
.if !defined(DISABLE_SECURITY_CHECK)
.if !target(security-check)
-.if !defined(OLD_SECURITY_CHECK)
security-check:
# Scan PLIST for:
@@ -4274,102 +4273,6 @@
${ECHO_MSG} "$${www_site}"; \
fi; \
fi
-
-
-.else # i.e. defined(OLD_SECURITY_CHECK)
-
-security-check:
-# Scan PLIST for:
-# 1. setugid files
-# 2. accept()/recvfrom() which indicates network listening capability
-# 3. insecure functions (gets/mktemp/tempnam/[XXX])
-# 4. startup scripts, in conjunction with 2.
-# 5. world-writable files/dirs
-#
- -@${RM} -f ${WRKDIR}/.PLIST.setuid ${WRKDIR}/.PLIST.stupid \
- ${WRKDIR}/.PLIST.network ${WRKDIR}/.PLIST.writable; \
- if [ -n "$$PORTS_AUDIT" ]; then \
- stupid_functions_regexp=' (gets|mktemp|tempnam|tmpnam|strcpy|strcat|sprintf)$$'; \
- else \
- stupid_functions_regexp=' (gets|mktemp|tempnam|tmpnam)$$'; \
- fi; \
- for i in `${GREP} -v '^@' ${TMPPLIST}`; do \
- if [ ! -L "${PREFIX}/$$i" -a -f "${PREFIX}/$$i" ]; then \
- ${OBJDUMP} -R ${PREFIX}/$$i > \
- ${WRKDIR}/.PLIST.objdump 2> /dev/null; \
- if [ -s ${WRKDIR}/.PLIST.objdump ] ; then \
- ${EGREP} " $$stupid_functions_regexp" \
- ${WRKDIR}/.PLIST.objdump | ${AWK} '{print " " $$3}' | ${TR} -d '\n' \
- > ${WRKDIR}/.PLIST.stupid; \
- if [ -n "`${EGREP} ' (accept|recvfrom)$$' ${WRKDIR}/.PLIST.objdump`" ] ; then \
- if [ -s ${WRKDIR}/.PLIST.stupid ]; then \
- ${ECHO_CMD} -n "${PREFIX}/$$i (USES POSSIBLY INSECURE FUNCTIONS:" >> ${WRKDIR}/.PLIST.network; \
- ${CAT} ${WRKDIR}/.PLIST.stupid >> ${WRKDIR}/.PLIST.network; \
- ${ECHO_CMD} ")" >> ${WRKDIR}/.PLIST.network; \
- else \
- ${ECHO_CMD} ${PREFIX}/$$i >> ${WRKDIR}/.PLIST.network; \
- fi; \
- fi; \
- fi; \
- if [ -n "`${FIND} ${PREFIX}/$$i -prune \( -perm -4000 -o -perm -2000 \) \( -perm -0010 -o -perm -0001 \) 2>/dev/null`" ]; then \
- if [ -s ${WRKDIR}/.PLIST.stupid ]; then \
- ${ECHO_CMD} -n "${PREFIX}/$$i (USES POSSIBLY INSECURE FUNCTIONS:" >> ${WRKDIR}/.PLIST.setuid; \
- ${CAT} ${WRKDIR}/.PLIST.stupid >> ${WRKDIR}/.PLIST.setuid; \
- ${ECHO_CMD} ")" >> ${WRKDIR}/.PLIST.setuid; \
- else \
- ${ECHO_CMD} ${PREFIX}/$$i >> ${WRKDIR}/.PLIST.setuid; \
- fi; \
- fi; \
- fi; \
- if [ ! -L "${PREFIX}/$$i" ]; then \
- if [ -n "`${FIND} ${PREFIX}/$$i -prune -perm -0002 \! -type l 2>/dev/null`" ]; then \
- ${ECHO_CMD} ${PREFIX}/$$i >> ${WRKDIR}/.PLIST.writable; \
- fi; \
- fi; \
- done; \
- ${GREP} '^etc/rc.d/' ${TMPPLIST} > ${WRKDIR}/.PLIST.startup; \
- if [ -s ${WRKDIR}/.PLIST.setuid -o -s ${WRKDIR}/.PLIST.network -o -s ${WRKDIR}/.PLIST.writable ]; then \
- if [ -n "$$PORTS_AUDIT" ]; then \
- ${ECHO_MSG} "===> SECURITY REPORT (PARANOID MODE): "; \
- else \
- ${ECHO_MSG} "===> SECURITY REPORT: "; \
- fi; \
- if [ -s ${WRKDIR}/.PLIST.setuid ] ; then \
- ${ECHO_MSG} " This port has installed the following binaries,"; \
- ${ECHO_MSG} " which execute with increased privileges."; \
- ${CAT} ${WRKDIR}/.PLIST.setuid; \
- ${ECHO_MSG}; \
- fi; \
- if [ -s ${WRKDIR}/.PLIST.network ] ; then \
- ${ECHO_MSG} " This port has installed the following files, which may act as network"; \
- ${ECHO_MSG} " servers and may therefore pose a remote security risk to the system."; \
- ${CAT} ${WRKDIR}/.PLIST.network; \
- ${ECHO_MSG}; \
- if [ -s ${WRKDIR}/.PLIST.startup ] ; then \
- ${ECHO_MSG} " This port has installed the following startup scripts,"; \
- ${ECHO_MSG} " which may cause these network services to be started at boot time."; \
- ${SED} s,^,${PREFIX}/, < ${WRKDIR}/.PLIST.startup; \
- ${ECHO_MSG}; \
- fi; \
- fi; \
- if [ -s ${WRKDIR}/.PLIST.writable ] ; then \
- ${ECHO_MSG} " This port has installed the following world-writable files/directories."; \
- ${CAT} ${WRKDIR}/.PLIST.writable; \
- ${ECHO_MSG}; \
- fi; \
- ${ECHO_MSG} " If there are vulnerabilities in these programs there may be a security"; \
- ${ECHO_MSG} " risk to the system. The FreeBSD Project makes no guarantee about the"; \
- ${ECHO_MSG} " security of ports included in the Ports Collection."; \
- ${ECHO_MSG} " Please type 'make deinstall' to deinstall the port if this is a concern."; \
- www_site=$$(cd ${.CURDIR} && ${MAKE} ${__softMAKEFLAGS} www-site); \
- if [ ! -z "$${www_site}" ]; then \
- ${ECHO_MSG}; \
- ${ECHO_MSG} " For more information, and contact details about the security"; \
- ${ECHO_MSG} " status of this software, see the following webpage: "; \
- ${ECHO_MSG} "$${www_site}"; \
- fi; \
- fi
-.endif # !defined(OLD_SECURITY_CHECK)
.endif
.else # i.e. defined(DISABLE_SECURITY_CHECK)
security-check:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list