Advisory: Time modification flaw in BSD securelevels on NetBSD and Linux The implementations of securelevels on NetBSD and Linux contain an integer overflow, allowing the protection of system time to be completely circumvented. ### Details - Product: NetBSD - Linux - Affected Versions: NetBSD-current: source prior to December 5, 2005 - NetBSD 2.1 - NetBSD 2.0.3 - NetBSD 1.6.2 - Linux vanilla kernel 2.6.18.2 and below - Fixed Versions: NetBSD-current: December 5, 2005 - NetBSD-3 branch: December 6, 2005 - NetBSD-2.1 branch: December 6, 2005 - NetBSD-2.0 branch: December 6, 2005 - NetBSD-2 branch: December 6, 2005 - NetBSD-1.6 branch: December 6, 2005 - Linux vanilla kernel: November 18, 2006 - Vulnerability Type: System time modification - Security-Risk: Medium - Advisory-URL: `https://www.redteam-pentesting.de/advisories/rt-sa-2005-016` - Advisory-Status: public - CVE: CVE-2005-4352 - CVE-URL: `https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-4352` ### Introduction BSD-Securelevels try to harden the system by restricting certain functions. The manpage\[1\] states: "The kernel runs with five different levels of security. Any super-user process can raise the security level, but no process can lower it." When running a securelevel equal or higher than two kernel time changes are restricted. While it is possible to set the clock forward, it is not possible to turn it backwards. By setting the clock forward to the end of unixtime an integer overflow will be triggered and the clock will be reset. ### More Details By setting the system time to the end of unixtime, it is possible to reset the system time to the lowest possible integer of unixtime. When the systemclock reaches "Tue Jan 19 03:14:08 UTC 2038", the 32-bit signed integer containing the time will overflow and the system time will be reset to "Fri Dec 13 20:45:52 UTC 1901". This is known as the Year 2038 Problem. The flaw is also present when running a securelevel of two or greater, allowing the restrictions on kernel time changes to be circumvented. ### Proof of Concept \# date 203801190414.07 Di 19 Jan 2038 04:14:07 CET \# date Fr 13 Dez 1901 21:45:53 CET ### Workaround No workaround is available. ### Fix The problem has been fixed in all affected versions of NetBSD. No fix is available for the Linux implementation of securelevels. ### Security Risk The security risk is to be considered medium. System time is crucial for the reliability and stability of a system. Time modification can cause denial of service and other major problems. For instance expired certificates can still be used. ### History - 2005-11-05 Problem discovered while testing a product of iPisec Ltd. - 2005-11-29 Discussed the issue with iPisec management and technicians - 2005-12-02 Contacted the maintainer of BSD-Securelevels on Linux - 2005-12-02 Response from the maintainer of BSD-Securelevels on Linux he wants to do what \*BSD will be doing - 2005-12-04 Contacted NetBSD security - 2005-12-05 Response from NetBSD security - problem has been fixed - 2005-12-15 Forwarded the \*BSD responses to the Linux maintainer - 2006-01-05 No further response from the Linux maintainer - 2006-01-09 Coordinated public release - 2006-12-04 Update affected/fixed versions: vanilla kernel - 2009-05-08 Updated Advisory URL ### Reference \[1\] `http://www.freebsd.org/cgi/man.cgi?query=securelevel` ### RedTeam RedTeam offers interested business parties penetration tests to validate their security. Doing security research RedTeam likes to enhance the common knowledgebase in security-related areas. More information about RedTeam can be found at `https://www.redteam-pentesting.de`.