throbber
Symantec 1013
`IPR of U.S. Pat. No. 8,141,154
`
`000001
`
`

`
`Regular
`
`Utility
`
`COMPUTER SECURlTY METHOD AND
`
`SYSTEM WITH INPUT PARAMETER
`
`VALlDATlON
`
`60644-8021 .USO2
`
`No
`
`No
`
`No
`
`Fig. 1
`
`3 N
`
`/A
`
`lnventor
`
`lL
`
`Full Capacity
`
`Yuval
`
`BEN—lTZHAK
`
`Tel Aviv
`
`lL
`
`Application Data Sheet
`
`Application Information
`
`Application Type::
`
`Subject Matter::
`
`TitIe::
`
`Attorney Docket Number:
`
`Request for Early Publicationz:
`
`Request for Non—Publication::
`
`Small Entity?::
`
`Suggested Drawing Figure:
`
`Total Drawing Sheets:
`
`Secrecy Order in Parent Appl.?::
`
`Applicant Information
`
`Applicant Authority Typezz
`
`Primary Citizenship Country::
`
`Status::
`
`Given Name::
`
`Family Name::
`
`City of Residence::
`
`Country of Residence:
`
`Mailing Address::
`
`King David Boulevard 36/8
`
`City of Mailing Address::
`
`Country of Mailing Address::
`
`Tel Aviv
`
`lL
`
`Page 1
`
`Initial O7/16/2008
`
`000002
`
`000002
`
`

`
`Applicant Authority Type::
`
`Primary Citizenship Country:
`
`Status::
`
`Given Name::
`
`Family Name::
`
`City of Residence::
`
`Country of Residence::
`
`Mailing Address:
`
`City of Mailing Address::
`
`Inventor
`
`lL
`
`Full Capacity
`
`Golan
`
`YOSEF
`
`Rishon Le’Zion
`
`IL
`
`16 Ha’Oniya Street
`
`Rishon Le’Zion
`
`Country of Mailing Address::
`
`lL
`
`Applicant Authority Type::
`
`Primary Citizenship Country::
`
`Status::
`
`Given Name::
`
`Family Name::
`
`City of Residence::
`
`Country of Residence:
`
`Mailing Address::
`
`City of Mailing Address::
`
`Country of Mailing Address::
`
`Inventor
`
`IL
`
`Full Capacity
`
`Israel
`
`TAUB
`
`Nof Ayalon
`
`IL
`
`33 HaChoshen Street
`
`Nof Ayalon
`
`IL
`
`Correspondence information
`
`Correspondence Customer Number::
`
`25096
`
`Representative Information
`
`Representative Customer Number::
`
`25096
`
`Page 2
`
`initial 07/16/2008
`
`000003
`
`000003
`
`

`
`Domestic Priority information
`
`Applicationz:
`
`Continuity Type::
`
`
`
`‘ This application t Continuation~ln—Part of
`
`Parent
`
`Parent Filing
`
`Application::
`
`Date::
`
`11/354,893
`
`1 02/16/2006
`
`Assignee Information
`
`Name::
`
`FINJAN SOFTWNARE, LTD.
`
`Street of Mailing Address::
`
`Hamachshev St. 1
`
`City of Mailing Address::
`
`New Industrial Area
`
`State/Province of Mailing Address::
`
`Netanya
`
`Postal Code of Mailing Address::
`
`42504
`
`Country of Mailing Address::
`
`lL
`
`Page 3
`
`Initial 07/16/2008
`
`000004
`
`000004
`
`

`
`Attorney Docket No. 60644-8021.USO2
`
`COMPUTER SECURITY METHOD AND SYSTEM
`WITH INPUT PARAMETER VALIDATION
`
`PRIORITY REFERENCE TO RELATED APPLICATIONS
`
`[0001]
`
`This application is a continuation-in~part of assignee’s pending U.S.
`
`Application No. 11/354,893, filed on February 16, 2006 entitled SYSTEM AND
`
`METHOD FOR ENFORCING A SECURITY CONTEXT ON A DOWNLOADABLE.
`
`FIELD OF THE INVENTION
`
`[0002]
`
`The field of the present invention is computer security.
`
`BACKGROUND OF THE INVENTION
`
`[0003]
`
`Computer security software and hardware are used to inspect
`
`downloadables, to determine if they are malicious. The term “downloadable” refers
`
`generally to an executable application program, which is downloaded from a source
`
`computer and run on a destination computer. There are many different types of
`
`malicious downloadables, including malware, phishing, spyware, Trojan horses,
`
`viruses and worms. Malicious downloadables often enter an internal computer
`
`network from an external network, and infect all or most of the computers in the
`
`internal network once they break in. As such, computer security systems often
`
`employ gateway computers to scan and filter incoming downloadables.
`
`[0004]
`
`Scanning downloadables at a gateway computer may be performed by
`
`running the programs; however, running the programs on the gateway computer
`
`instead of on the computer in the internal network for which the programs are
`
`intended, may result in the gateway computer failing to detect exploits in the
`
`downloadables.
`
`[0005]
`
`Scanning downloadables at a gateway computer may also be performed
`
`by analyzing the programs. Assignee’s U.S. Patent No. 6,092,194 describes such a
`
`gateway security system.
`
`OOOOO5
`
`000005
`
`

`
`Attorney Docket No. 60644-8021.USO2
`
`[0006] When analyzing downloadables, scanners generally search for computer
`
`operations that are potentially suspicious. For example, if a suspect downloadable
`
`invokes a function call that writes to a file system or opens a network connection or
`
`changes a registry entry, such behavior raises a warning flag for potentially
`
`malicious activity. A security system may block a downloadable from reaching an
`
`internal network if the downloadable includes a suspicious computer operation.
`
`However, most non-malicious downloadables use these same computer operations
`
`in an innocuous way, and such a security system may block both good and bad
`
`downloadables from reaching the internal network.
`
`[0007]
`
`Consider, for example, a function that deletes a file in the file system.
`
`Many safe programs, such as software installation programs, generate temporary
`
`files during execution, and delete the temporary files upon completion. However, a
`
`malicious program may delete critical operating system files. A security system that
`
`blocks downloadables which invoke a function to delete a file would block safe
`
`downloadables in addition to the malicious ones.
`
`[0008]
`
`Consider, for example, a downloadable that includes the following simple
`
`Javascript source code:
`
`<SCRlPT LANGUAGE="JavaScript">
`var b = new ActiveXObject("Msxml2.XMLHTTP");
`exploit data = "SSSSSSSSSSSSSSSSSSSSSS exploit";
`b.setRequestHeader(exploit data);
`</SCRlPT>
`
`This source code initiates a new Msxml2.XMLHTTP ActiveX object, and invokes the
`
`object's method setRequestHeader(). An Msxml2.XMLHTTP object is a standard
`
`object built into the Microsoft XML parser. The Msxml2.XMLHTTP object is an
`
`important part of the Ajax web development technique, and is used to implement
`
`responsive and dynamic web applications.
`
`It is used on a client side web page to
`
`grab information from the server, process it, and use the information on the current
`
`web page (as opposed to having to reload a web page).
`
`OOOOO6
`
`000006
`
`

`
`AfiorneylDocketNo.60644~8021lJSO2
`
`[0009]
`
`The method setRequestHeader() is generally a safe function that simply
`
`adds an HTTP header to a request. The following code snippet shows how
`
`setRequestHeader() is used, for example, to set the HTTP Content-Type header to
`
`‘text/xml' before sending a request body.
`
`var oReq = new XMLHttpRequest();
`oReq.open("POST", sURL, false);
`oReq.setRequestHeader(CONTENT, "text/xml");
`oReq.send(sRequestBody);
`
`As such, the example Javascript above appears innocuous.
`
`[0010]
`
`However, the input parameter to setRequestHeader() in the example
`
`JavaScript code above is only evaluated at run-time, and a code exploit may be
`
`triggered in the process of evaluating the input parameter. More generally, input
`
`parameters to function calls, even for safe functions, are potential hiding places for
`
`code exploits. Since input parameters may only be determined at run-time, such
`
`code exploits may go undetected when scanning downloadables.
`
`[0011]
`
`it would thus be of advantage for a security system to be able to validate
`
`input parameters that are evaluated at run-time.
`
`It would be of further advantage for
`
`a security system to be able to determine if a given input parameter will exploit a
`
`non—malicious function, prior to actually executing the non—malicious function with the
`
`given input parameter.
`
`SUMMARY OF THE DESCRlPTlON
`
`[0012]
`
`Aspects of the present invention relate to a computer security method and
`
`system that validates input parameters to computer operations when scanning a
`
`suspect downloadable.
`
`in one embodiment, the present invention overwrites
`
`suspicious computer operations, and appends special monitoring code to the
`
`suspect downloadable that, when invoked, validates input parameters to computer
`
`operations.
`
`[0013]
`
`The present invention may be embodied at a gateway computer, at a
`
`server computer, or at a client computer.
`
`OOOOO7
`
`000007
`
`

`
`Attorney Docket No. 60644-8021 .USO2
`
`[0014]
`
`There is thus provided in accordance with an embodiment of the present
`
`invention a method for identifying suspicious downloadables, including receiving a
`
`downloadable, scanning the downloadable to identify suspicious computer
`
`operations therein, and if at least one suspicious computer operation is identified,
`
`then over\Nriting the suspicious computer operations with substitute computer
`
`operations, and appending monitoring program code to the downloadable thereby
`
`generating a modified downloadable, wherein the monitoring program code includes
`
`program instructions for validating input parameters for the suspicious computer
`
`operations during run-time of the downloadable.
`
`[0015]
`
`There is additionally provided in accordance with an embodiment of the
`
`present invention a computer security system, including a receiver for receiving a
`
`downloadable, a scanner, coupled with the receiver, for scanning the downloadable
`
`to identify suspicious computer operations therein, a code modifier, coupled with the
`
`scanner, for overwriting the suspicious computer operations with substitute computer
`
`operations, if at least one suspicious computer operation is identified by the scanner,
`
`and for appending monitoring program code to the downloadable thereby generating
`
`a modified downloadable, if at least one suspicious computer operation is identified
`
`by the scanner, and a processor, coupled with the code modifier, for executing
`
`programmed instructions, wherein the monitoring program code includes program
`
`instructions for the processor to validate input parameters for the suspicious
`
`computer operations during run-time of the downloadable.
`
`[0016]
`
`There is further provided in accordance with an embodiment of the
`
`present invention a method for identifying suspicious downloadables, including
`
`receiving a downloadable, and appending monitoring program code to the
`
`downloadable thereby generating a modified downloadable, wherein the monitoring
`
`program code includes program instructions for identifying suspicious computer
`
`operations during run-time of the downloadable, for overwriting the suspicious
`
`computer operations with substitute computer operations during run—time of the
`
`000008
`
`000008
`
`

`
`Attorney Docket No. 60644-8021.USO2
`
`downioadable, and for validating input parameters for the suspicious operations
`
`during run—time of the downloadable.
`
`[0017]
`
`There is yet further provided in accordance with an embodiment of the
`
`present invention a computer security system, including a receiver for receiving a
`
`downloadable, a code modifier, coupled with the scanner, for appending monitoring
`
`program code to the downloadable thereby generating a modified downioadable,
`
`and a processor, coupled with the code modifier, for executing programmed
`
`instructions, wherein the monitoring program code includes program instructions for
`
`the processor to identify suspicious computer operations during run—time of the
`
`downloadable, to overwrite the suspicious computer operations with substitute
`
`computer operations during run—time of the downloadable, and to validate input
`
`parameters for the suspicious computer operations during run time of the
`
`downloadable.
`
`[0018]
`
`There is moreover provided in accordance with an embodiment of the
`
`present invention a method for identifying suspicious downloadables, including
`
`scanning a downloadable to detect the presence of at least one suspicious computer
`
`operation, dynamically generating during run—time of the downloadable at least one
`
`input parameter for the at least one suspicious computer operation detected by the
`
`scanning, and determining whether or not the dynamically generated at least one
`
`input parameter corresponds to a safe input parameter for the at least one
`
`suspicious computer operation.
`
`[0019]
`
`There is additionally provided in accordance with an embodiment of the
`
`present invention a computer security system, including a scanner for scanning a
`
`downloadable to detect the presence of at least one suspicious computer operation,
`
`and a processor that executes programmed instructions for dynamically generating
`
`during run—time of the downloadable at least one input parameter for the at least one
`
`suspicious computer operation detected by the scanner, and for determining
`
`OOOOO9
`
`000009
`
`

`
`Attorney Docket No. 60644-8021.US02
`
`whether or not the dynamically generated at least one input parameter corresponds
`
`to a safe input parameter for the at least one suspicious computer operation.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0020]
`
`The present invention will be more fully understood and appreciated from
`
`the following detailed description, taken in conjunction with the drawings in which:
`
`[0021]
`
`FIG. 1 is a simplified block diagram of a computer security system with
`
`input parameter validation, in accordance with an embodiment of the present
`
`invention;
`
`[0022]
`
`FIG. 2 is a method for computer security with input parameter validation,
`
`in accordance with an embodiment of the present invention; and
`
`[0023]
`
`FIG. 3 is an alternative method for computer security with input parameter
`
`validation, in accordance with an embodiment of the present invention.
`
`DETAILED DESCRIPTION
`
`[0024]
`
`Aspects of the present invention relate to a computer security method and
`
`system that receives as input a downloadable, and detects whether or not the
`
`downloadable is potentially malicious by inter alia validating input parameters to
`
`computer operations.
`
`[0025]
`
`Reference is now made to FIG. 1, which is a simplified block diagram of a
`
`computer security system with input parameter validation, in accordance with an
`
`embodiment of the present invention. The embodiment of the security system
`
`shown in FIG. 1 includes a gateway computer 100 and two destination computers
`
`110. Downloadables transmitted to destination computers 110 first pass through
`
`gateway 100.
`
`[0026]
`
`Downloadables may be inter alia in the form of source code, such as
`
`Javascript, or in the form of complied code, such as Java applets, that is de-
`
`compiled in order to derive its source code.
`
`000010
`
`000010
`
`

`
`Attorney Docket No. 60644-8021 .USO2
`
`[0027]
`
`One of the responsibilities of gateway computer 100 is to run security
`
`checks on downloadables prior to their reaching destination computers 110.
`
`if
`
`gateway computer 100 identifies a potentially malicious downloadable, then it either
`
`blocks the downloadable from reaching destination computers 110, or neutralizes
`
`the potentially malicious portions of the downioadable prior to forwarding the
`
`downloadable to destination computers 110.
`
`[0028]
`
`As shown in FIG. 1, gateway computer 100 includes a processor 120, for
`
`executing programmed instructions, a receiver 130 for receiving a downloadable in
`
`transit to one or both of destination computers 110, and a transmitter 140 for
`
`forwarding the received downioadable to one or both of destination computers 110.
`
`Gateway computer 100 further includes a scanner 150, for scanning a downloadable
`
`received by receiver 130, and a code modifier 160 for appending special modification
`
`code to the downloadable received by receiver 130.
`
`[0029]
`
`Generally, scanner 150 inspects downioadable source code for the
`
`presence of suspicious computer operations.
`
`if the downioadable is in compiled
`
`object code form, the scanner 150 first de—compiles the object code to derive
`
`downioadable source code therefrom, and then inspects the downloadable source
`
`code for the presence of suspicious operations.
`
`[0030]
`
`if no suspicious computer operations are detected, then the downloadable
`
`is deemed to be safe, and is forwarded to one or both of destination computers 110
`
`via transmitter 140. However, if scanner 150 detects one or more suspicious
`
`computer operations, then processor 120 appends special modification code 170 to
`
`the downloadable, thereby generating a modified downloadable, Modification code
`
`170 includes instructions for overwriting the suspicious computer operations
`
`detected by scanner 150, and for validating their input parameters.
`
`if all input
`
`parameters to all suspicious computer operations are validated, then the
`
`downloadable is deemed to be safe, and is fon/varded to one or both of destination
`
`computers 110. Otherwise, the downloadable is deemed to be potentially malicious.
`
`00001 1
`
`000011
`
`

`
`Attorney Docket No. 60644-8021.USO2
`
`[0031]
`
`For a downloadable deemed to be potentially malicious, processor 120
`
`may neutralize the suspicious computer operations by eliminating such operations,
`
`or by replacing their input parameters with valid input parameters, and then
`
`forwarding the remedied downloadable to one or both of destination computers 110.
`
`Further, processor 120 may first execute the remedied downloadable within a secure
`
`environment and inspect the execution results, prior to forwarding the downloadable.
`
`Alternatively, processor 120 may block the downloadable from being forwarded to
`
`destination computers 110. Further details of operation of scanner 150 and code
`
`modifier 160 are provided in the discussion of FIG. 2 hereinbelow.
`
`[0032]
`
`Reference is now made to FIG. 2, which is a method for computer security
`
`with input parameter validation, in accordance with an embodiment of the present
`
`invention.
`
`In conjunction with FIG. 2, reference is also made to the following
`
`example downloadable, used to supplement the description of various steps in FIG.
`
`2 by way of example.
`
`OOOO12
`
`000012
`
`

`
`Attorney Docket No. 60644-8021 .USO2
`
`Original Javascrigt source grogram code:
`
`<SCRlPT LANGUAGE="JavaScript">
`var b = new ActiveXObject("Msxm|2.XMLHTTP");
`b.setRequestHeader("SSSSSSSSSSSSSSSSSSSSSS");
`</SCRiPT>
`
`Modified grogram code:
`
`<SCRlPT LANGUAGE="JavaScript">
`VuinAcxStruct=[["Msxmi2.XMLHTTP”, [['setRequestHeader',
`function(){aIIow=["GET", "POST", "HEAD", "DELETE", "PUT",
`"CONNECT","OPTiONS"]; for(i in aIiow){if
`(arguments[O]==aiiow[i])return;}aiert("maIicious!")}]],[]]]
`
`function makeVuinObjDict(arr)
`{
`
`dict=new Objeot();
`for(i in arr){
`dict[arr[i][O]]=[arr[i]{2],arr[i][3]];
`dict[arr[i][1]]=[arr[i][2],arr[i][3]];
`
`} r
`
`eturn dict;
`
`} V
`
`uln_Obj__Dict=makeVuinObjDict(VuinAcxStruct);
`
`function checkAcx(aoxid)
`{
`
`if (acxld in Vuin__Obj__Dict){
`obj = new Object();
`for(i in Vuin_Obj_DiCt[acxId][O])
`{
`
`obj[Vuln_Obj_Diot[aoxld][O][i][O}] =
`Vu|n_Obj_Dict[aox|d][O][i][1];
`
`} o
`
`bj['mylD'] = acxid;
`return obj;
`
`} r
`
`eturn new Object();
`
`} w
`
`indow.ActiveXObject = checkAox;
`var b = new AotiveXObject("MsxmI2.XMLHTTP");
`b,setRequestHeader("SSSSSSSSSSSSSSSSSSSSSS");
`</SCRiPT>
`
`i.!>(,n.)!\>l-3
`
`F-‘CD\OOC)~Q{YxU1
`
`}...l
`
`13
`14
`15
`
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`
`26
`27
`28
`
`29
`30
`31
`32
`
`33
`
`35
`
`36
`37
`38
`
`39
`40
`41
`
`000013
`
`000013
`
`

`
`Attorney Docket No.: 60644—8021.US02
`
`[0033]
`
`_FIG. 2 begins at step 210, whereat an original downloadable is received in
`
`transit to one or more destination computers. Referring to the example JavaScript
`
`code hereinabove, the downloadable received at step 210 includes lines 1 ~— 4.
`
`These lines of code cause a browser to create an ActiveX object named
`
`“Msxml2.XMLHTTP”, and assign the created object to variable b. The
`
`setRequestHeader() method of object b is called using an input parameter
`
`"SSSSSSSSSSSSSSSSSSSSSS". At this stage it is unclear if the input parameter
`
`is legitimate for this method, or if it abuses the method call in a malicious way.
`
`[0034]
`
`At step 220, the received downloadable is scanned, to detect the
`
`presence of suspicious computer operations. Referring further to the example code,
`
`the function call setRequestHeader() is identified as being suspicious.
`
`in one
`
`embodiment of the present invention, a dictionary of suspicious operations is
`
`accessed and consulted by scanner 150, in order to detect which computer
`
`operations are potentially malicious. Such a dictionary is included in lines 6 — 9 of
`
`the example program code, as described below with reference to step 270.
`
`in an
`
`alternative embodiment of the present invention, a dictionary of non-malicious
`
`computer operations is accessed and consulted by scanner 150, in order to detect
`
`malicious computer operations.
`
`[0035]
`
`At step 230 a determination is made whether or not suspicious computer
`
`operations have been detected in the downloadable.
`
`If not, then the downloadable
`
`is deemed safe and is fon/vardecl to its destination at step 240. Othen/vise, if one or
`
`more suspicious computer operations have been detected, then at step 250
`
`monitoring program code is appended to the original downloadable. Referring to the
`
`example above, the monitoring code includes lines 11 — 36, and has two functions;
`
`namely, makeVulnDict(Arr) and checkAcx(acxld).
`
`[0036]
`
`At line 21 the function makeVulnDict() is called with array parameter
`
`VuinAcxStruct[], to build a dictionary, Vuln_Obj_Dict, of potentially malicious function
`
`calls. As seen at lines 6 - 9, VulnAcxStruct[] is an array of three—element arrays,
`
`000014
`
`10
`
`000014
`
`

`
`AfiorneylDocketNo.60644-8021lJSO2
`
`each three-element array corresponding to a potentially malicious function. For
`
`purposes of clarity, only one three—element array is defined in lines 6 —— 9,
`
`corresponding to the method setRequestHeader() of object Msxml2.XMLHTTP, but it
`
`will be appreciated by those skilled in the art that additional three—element arrays
`
`may be defined. The first element of the three—element array in VulnAcxStruct[] is
`
`the name of the object containing the potentially malicious function; i.e.
`
`“Msxml2.XMLHTTP”. The second element of this array is the name of the
`
`suspicious method, setRequestHeader(), together with the function to be used for
`
`input validation of the method; namely,
`
`function()
`{
`
`allow = [“GET”, “POST”, “HEAD”, “DELETE”, “PUT”,
`“CONNECT”, “OPTlONS”];
`
`for (i in aIlow){
`if (arguments[O]==allow[i] return;
`
`} a
`
`lert(“malicious!”)
`
`} T
`
`hus to validate input parameters for the method setRequestHeader(), the input
`
`parameter is matched against six expected non-malicious parameter values GET,
`
`POST, HEAD, DELETE, PUT, CONNECT and OPTIONS.
`
`if no match is found then
`
`an alert is made.
`
`It will be appreciated by those skilled in the art that the function
`
`given above is but one of many methods for validating input parameters. Other such
`
`methods to validate input parameters and to issue a notification when input
`
`parameters are not validated, are also within the scope of the present invention.
`
`[0037]
`
`The third element of the three~e|ement array in VulnAcxStruct[], shown
`
`empty at line 9, is reserved for a definition of vulnerable properties.
`
`In summary
`
`form, VulnAcxStruct[] holds a list of vulnerabilities, where a “vulnerability” is of the
`
`form
`
`[object name, list of [method name, definition], properties].
`
`[0038]
`
`Referring back to FlG. 2, at step 260 the suspicious computer operations
`
`are oven/vritten. Referring to the example Javascript, the over—writing is performed
`
`000015
`
`11
`
`000015
`
`

`
`Attorney Docket No. 60644-8021 .US02
`
`at lines 29 and 30. Specifically, lines 28 — 31 loop over the list of [method name,
`
`definition] and associate each method name with its corresponding definition.
`
`[0039]
`
`in addition, at line 38 the function window.ActiveXObject() is overwritten
`
`by the function checkAcx(). As such, instead of invoking ActiveXObject() during run~
`
`time when an ActiveX object is created, the function checkAcx() is invoked.
`
`[0040]
`
`Subsequently the modified downloadable is executed. At step 270 the
`
`input parameters for each of the suspicious computer operations are validated
`
`during run—time. Referring to the example code, the function checkAcx(), defined at
`
`lines 23 —— 36, performs the validation. Specifically, if the ActiveX object to be
`
`created, as identified by acxld, is listed in the dictionary Vuln_Obj__Dict[], then the
`
`corresponding input validation function is performed.
`
`It the validation fails, then the
`
`call to alert(“malicious!”) is made. Otherwise, the desired ActiveX object is created
`
`and returned.
`
`it will be appreciated by those skilled in the art that other forms of
`
`notification of failed validation are within the scope of the present invention. For
`
`example, checkAcx() may generate a warning text message.
`
`[0041]
`
`For the example provided above, when the input parameter
`
`"SSSSSSSSSSSSSSSSSSSSSS" to setRequestHeader() is validated, the
`
`validation fails since the input parameter does not match any of the expected input
`
`parameters GET, POST, HEAD, DELETE, PUT, CONNECT and OPTlONS.
`
`if the
`
`input parameter to setRequestHeader() had instead been valid, the desired ActiveX
`
`object, Msxml2.XMLHTTP, would have been created by checkAcx() and returned.
`
`[0042]
`
`At step 280 a determination is made whether or not the input parameters
`
`to each of the suspicious computer operations have been validated.
`
`if so, then the
`
`downloadable is deemed safe and is forwarded to its destination at step 240.
`
`Otherwise, the downloadable is deemed suspicious, an alert is made, and various
`
`preventive actions may be taken. One such action, at step 291, is simply not to
`
`forward the downloadable to the destination computer. Another such action, at step
`
`292, is to neutralize the input parameters that were not validated, by replacing them
`
`000016
`
`12
`
`000016
`
`

`
`Attorney Docket No. 60644—8021.USO2
`
`with valid input parameters, and then forwarding the remedied downloadable to the
`
`destination computers. Another such action, at step 293, is to consult a computer
`
`security policy to determine whether or not to fon/vard the downloadable to the
`
`destination computer, based on the suspicious computer operations that were
`
`detected.
`
`[0043]
`
`It will be appreciated by those skilled in the art that step 260, of overwriting
`
`suspicious computer operations may be performed either in a pre~scan phase, prior
`
`to executing the loop around step 270, as indicated in FlG. 2, or instead may be
`
`performed in real-time, within the loop. Specifically, referring to the example
`
`JavaScript code provided hereinabove, the structure VulnAcxStruct[], defined at
`
`lines 6 — 9, which pre-identifies the suspicious computer operations, may be
`
`appendedtothernonflonngcode.lntunxthernonfionngcodeovenmfiesthepn+
`
`identified operations in real-time at lines 29 and 30.
`
`in this regard, reference is now
`
`made to FIG. 3, which is an alternative method for computer security with input
`
`parameter validation, with the overwriting being performed during run~time, in
`
`accordance with an embodiment of the present invention.
`
`[0044]
`
`FIG. 3 begins at step 310, whereat an original downloadable is received in
`
`transit to one or more destination computers. At step 350 monitoring program code
`
`is appended to the original downloadable, to generate a modified downloadable.
`
`[0045]
`
`Subsequent to step 350 the modified downloadable is executed. At step
`
`355 suspicious computer operations are identified at run—time. Step 355 may be
`
`performed by referencing a structure, such as the VulnAcxStruct[] structure in the
`
`example JavaScript, that lists pre—designated suspicious computer operations.
`
`Alternatively, step 355 may be performed by referencing structure that lists pre-
`
`designated safe computer non-malicious computer operations.
`
`[0046]
`
`At step 360 the suspicious computer operations are overwritten at run-
`
`flme.RdammHomem@mmeJamSmmtmHm$29mm30meomafimmmm
`
`obj[Vuln__Obj_Dict[acxld][O][i][O]]
`
`OOOO17
`
`13
`
`000017
`
`

`
`Attorney Docket No. 60644-8021 .USO2
`
`is oven/vritten with the function
`
`obj[Vuln__Obj_Dict[acxld][O][i][t]].
`
`Based on lines 15 and 16, this corresponds to overwriting the method
`
`setRequestHeader() of object l\/1sxmk2.XMLHTTP with the function in lines 7 — 9;
`
`namely,
`
`function()
`{
`
`allow = [“GET”, “POST”, “HEAD”, “DELETE”, “PUT”,
`“CONNECT”, “OPTlONS”];
`
`for (i in allow){
`if (arguments[O}==al|ow[i] return;
`
`} a
`
`lert(“malicious!”)
`
`} [
`
`0047]
`
`At step 370 the input parameters for the suspicious computer operations
`
`are validated at run~time. Referring to the Javascript example, input parameter
`
`validation is performed by the function in lines 7 — 9.
`
`If the input parameters are
`
`validated then the function returns normally; otherwise, the function invokes
`
`alert(“malicious!”). Other such methods to validate input parameters and to issue a
`
`notification when input parameters are not validated, are also within the scope of the
`
`present invention.
`
`[0048]
`
`At step 380 a determination is made whether or not the input parameters
`
`to each of the suspicious computer operations have been validated.
`
`if so, then the
`
`downloadable is deemed safe and is fon/varded to its destination at step 340.
`
`Otherwise, the downloadable is deemed malicious, an alert is made, and various
`
`preventive actions may be taken. One such action, at step 391, is simply not to
`
`fon/vard the downloadable to the destination computer. Another such action, at step
`
`392, is to neutralize the input parameters that were not validated, by replacing them
`
`with valid input parameters, and then forwarding the remedied downloadable to the
`
`destination computers. Another such action, at step 393, is to consult a computer
`
`security policy to determine whether or not to fon/vard the downloadable to the
`
`000018
`
`14
`
`000018
`
`

`
`AflorneylDocketNo.60644~8021lJSO2
`
`destination computer, based on the suspicious computer operations that were
`
`detected.
`
`[0049]
`
`in the foregoing specification, the invention has been described with
`
`reference to specific exemplary embodiments thereof.
`
`it will, however, be evident
`
`that various modifications and changes may be made to the specific exemplary
`
`embodiments without departing from the broader spirit and scope of the invention as
`
`set forth in the appended claims. Accordingly, the specification and drawings are to
`
`be regarded in an illustrative rather than a restrictive sense.
`
`OOOO19
`
`15
`
`000019
`
`

`
`Attorney Docket No. 60644-8021 .USO2
`
`CLAIMS
`
`What is claimed is:
`
`1.
`
`A method for handling suspicious downloadables, comprising:
`
`receiving a downloadable;
`
`scanning the downloadable to identify suspicious computer operations
`
`therein; and
`
`if at least one suspicious computer operation is identified, then:
`
`overwriting the suspicious computer operations with
`
`substitute computer operations; and
`
`appending monitoring program code to the downloadable
`
`thereby generating a modified downloadable, wherein the monitoring program code
`
`includes program instructions for validating input parameters for the suspicious
`
`computer operations during run—time of the downloadable.
`
`2.
`
`The method of claim 1, wherein the substitute computer operations
`
`validate their input parameters, and indicate if their input parameters are not
`
`successfully validated.
`
`3.
`
`The method of claim 2, wherein the substitute computer operations
`
`indicate if their input parameters are not successfully validated by invoking an alert.
`
`4.
`
`The method of claim 2, wherein the substitute computer operations
`
`indicate if their input parameters are not successfully validated by generating a
`
`warning text message.
`
`000020
`
`16
`
`000020
`
`

`
`AfiorneylDocketNo.60644-8021lJSO2
`
`5.
`
`The method of claim 1, wherein the monitoring code further includes
`
`program instructions for replacing invalid input parameters with valid input
`
`parameters in the suspicious computer operations.
`
`6.
`
`The method of claim 1, further comprising executing the modified
`
`downioadabie.
`
`7.
`
`The method of claim 6, wherein said executing comprises executing the
`
`modified downioadabie in a secure environment.
`
`8.
`
`The method of claim 1, wherein said receiving comprises receiving the
`
`downloadable in transit to an intended destination computer, the method further
`
`comprising transmitting the modified downioadabie to the destination computer.
`
`9.
`
`The method of claim 1, wherein said receiving comprises receiving the
`
`downloadable in transit to an intended destination computer, the method further
`
`comprising preventing the downloadable from executing on the destination computer
`
`if said validating fails.
`
`10.
`
`The method of claim 1, wherein said receiving comprises receiving the
`
`downloadable in transit to an intended destination computer, the method further
`
`comprising consulting a security policy to determine whether to forward the
`
`downloadable to the destination computer if said validating fails.
`
`11.
`
`The method of claim 1, wherein said validating input parameters
`
`comprises comparing actual input parameters to the suspicious computer operations
`
`with at least one descriptor of valid input parameters for the suspicious computer
`
`operations.
`
`000021
`
`17
`
`000021
`
`

`
`Attorney Docket No. 60644-8021 U802
`
`12.
`
`The method of claim 1, wherein said validating input parameters
`
`comprises comparing actual input parameters to the suspicious computer operations
`
`with at least one descriptor of invalid input parameters for the suspicious computer
`
`operations.
`
`13.
`
`The method of claim 1, wherein said scanning comp

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket