~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Application: All Symantec Products All Versions Until 2005 Vendors: http://www.symantec.com/nav/nav_pro/ Platforms: Windows Bug: Stack Buffer Overflow Risk: Low - Crash - Not Exploitable Exploitation: Remote with browser Date: 10 Apr 2004 Author: Rafel Ivgi, The-Insider e-mail: the_insider@mail.com web: http://theinsider.deep-ice.com ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1) Introduction 2) Bugs 3) The Code ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =============== 1) Introduction =============== Symantec's Norton AntiVirus™ 2004 Professional is the world’s most trusted antivirus solution with advanced protection. It protects email, instant messages, and other files by removing viruses automatically. Expanded threat detection alerts the user to spyware and similar hacking programs. It also supplies advanced tools for data recovery and secure file deletion and a license for two computers. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ====== 2) Bug ====== Symantec Norton AntiVirus 2004 installs many DLLs(Dynamic Link Library) and COM(Component Object Model) objects. One of its DLL's "ccErrDsp.dll" Which is by the default installation options located at : C:\Program Files\Common Files\Symantec Shared\ccErrDsp.dll "ccErrDsp.dll" registers "CcErrDsp.ErrorDisplay.1" COM Object. After Symantec Norton AntiVirus 2004 was used, this object can be created Localy & Remotely! For Example: Set symkiller = CreateObject("CcErrDsp.ErrorDisplay.1" ) The vulnerability appears in the "sProduct" parameter at the "DisplayError" function of the object. The "DisplayError" recieves the following parameters: DisplayError( [in] long nParentWnd, [in] int nModuleId, [in] int nErrorId, [in] BSTR sCaption, [in] BSTR sErrorText, [in] BSTR sProduct, [in] BSTR sVersion, [in, optional] VARIANT varKeyArray, [in, optional] VARIANT varValueArray, [out, retval] VARIANT_BOOL* pRet); Which means that the following assignment: object.DisplayError(1,1,1,[STR <=255],[STR <=255],[Really Long String - 'A'>521950],[STR <=255]); Will cause a Stack Buffer Overflow, which does not allow code execution. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =========== 3) The Code =========== This is Proof Of Concept Code: ------------------- CUT HERE ------------------- ------------------- CUT HERE ------------------- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- Rafel Ivgi, The-Insider http://theinsider.deep-ice.com "Only the one who sees the invisible , Can do the Impossible."