throbber
Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 1 of 60
`
`Exhibit 8
`
`REDACTED VERSION OF DOCUMENT
`SOUGHT TO BE SEALED
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 2 of 60
`Case 4:18—cv-07229-YGR Document 202—2 Filed 06/01/21 Page 2 of 60
`
`HIGHLY CONFIDENTIAL — ATTORNEYS EYES’ ONLY
`
`UNITED STATES DISTRICT COURT
`
`FOR THE NORTHERN DISTRICT OF CALIFORNIA
`
`OAKLAND DIVISION
`
`FDUAN LLC., a Delaware Limited
`
`Case No. 4: 18-cv-07229-YGR (TSH)
`
`Liability Company,
`
`Plaintiff,
`
`v.
`
`Hon. Yvonne Gonzalez Rogers
`
`QUALYS INC., 3 Delaware
`
`NIEDVIDOVIC, PH.D.
`
`Corporation,
`
`lHC—AEOl
`
`EXPERT REPORT OF NENAD
`
`Defendant.
`
`
`
`!
`.
`‘
`.
`Ill-(imita 76,912 ?
`
`Nenad Medvidovic, PHD.
`
`December 1, 2020
`
`\OOOQQU‘I-bMNr—I
`
`10
`
`12
`
`13
`
`14
`
`15
`
`16
`
`17
`
`18
`
`19
`
`20
`
`21
`
`22
`
`23
`
`24
`
`25
`
`26
`
`27
`
`28
`
`1
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4: 18-cv-07229-YGR (1"SH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 3 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` Qualys’s Cloud Platform supports a product suite that offers a set of
`“core services”:
`
`
`
`FINJAN-QUALYS 043095 and 096.
` The Qualys products have three primary components: (1) the sensors
`that are used to obtain data; (2) the various applications Qualys provides that
`analyze this data, i.e., Qualys’s cloud based applications; and (3) the backend
`Qualys systems responsible for aggregating and storing data. I discuss each of these
`in more detail below.
` Qualys Scanner Appliances and Cloud Agents
` The Qualys Cloud Platform collects data regarding the network through
`the use of either scanners or cloud agents. Bachwani Tr. 46:12-47:12. A scanner is
`an appliance that used to collect data from endpoints and scan that data. Id.
` A scanner can be physical or virtual:
`27
`
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 4 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`By installing a scanner appliance within your network, you will have
`the ability to do vulnerability assessments for your entire network. We
`offer both physical appliances and virtual appliances for ease of
`integration with your network environment. The scanner appliance
`features a hardened OS kernel, is highly secure, and stores no data.
`Qualys Cloud Platform, Evaluator’s Guide (April 13, 2020) (available at
`https://www.qualys.com/docs/qualys-evaluators-guide.pdf) [FINJAN-QUALYS
`419671].
` A cloud agent is an application that is deployed on the endpoint itself,
`which is then also used to collect data from that endpoint. Bachwani Tr. 46:12-
`47:12; see also Cloud Agent, Getting Started Guide (available at
`https://www.qualys.com/docs/qualys-cloud-agent-getting-started-guide.pdf)
`[FINJAN-QUALYS 419160].
` There is no functional difference in physical and virtual scanners—both
`are devices in the network that are used to collect data. And both scanners and
`cloud agents collect the same data:
`
`Q. What is a scanner engine?
`MR. SMITH: I'll object as outside the scope of the notice topics, if
`this is a 30(b)(6) question.
`THE WITNESS: It's -- it's a physical or virtual appliance that can do
`vulnerability scans similar to what the cloud agent does.
`BY MR. LEE:
`Q. Are you aware of any difference between the scanner engine and
`the cloud agent?
`A. They generally collect the same data. And we do the same
`vulnerability analysis for -- it's just a different data collection
`mechanism. So in the case of the scanners, the scanners are
`connecting to the different endpoints and collecting the data. In the
`case of the cloud agent, the cloud agent is deployed on the endpoint
`itself and collecting the data.
`Bachwani Tr. 46:14-47:8; id. at 122:22-25.
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`28
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 5 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` That is, just like the scanners collect data from endpoints and perform a
`vulnerability on that data (id.), Qualys’s cloud agents do the same:
`
`Q. What is the name of this code that runs on the system?
`A. That's called Qualys cloud agent.
`Q. How does Qualys cloud agent operate?
`A. That's a pretty broad question. Like what part of that would you
`like to know?
`Q. Well, you mentioned that the Qualys cloud agent runs on the client
`system?
`A. Yeah.
`Q. What does it do there?
`A. So on the client system, it looks at the files that are on the system
`that are installed by the customer, and the software that is installed,
`and collect the information about those files, and assess them for any
`issues or misconfigurations.
`Thakar Tr. 9:2-19 (referring to collecting data from endpoints and “assess[ing] them
`for any issues”); 11:16-12:2 (cloud agent collects the same type of information from
`cloud agents and a scanner appliance).
`
`Qualys uses a “scanning engine” to collect data for Vulnerability
`Management Policy Compliance, and related features. Kruse Tr. 7:24-
`8:12; Bachwani Tr. 119-16.
`
`The scanning engine for Vulnerability Management and Policy
`Compliance is “essentially the same”:
`
`Q What's the difference between the scanner engine for VM versus
`PC?
`MR. MAYS: Objection. Form.
`THE WITNESS: It's essentially the same scanner engine. It's the same
`code. It's just that the functionality is a little different between
`vulnerability management and policy compliance.
`Kruse Tr. 31:18-25.
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`29
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 6 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` The scan data from this scanning engine is stored in an XML file.
`Kruse Tr. 35:2-25.
` Qualys’s scanning engine for the Vulnerability Features can parse web
`pages, such as HTML web pages. It does so, for example, by looking for patterns:
`
`Q Does the scanner engine -- strike that. Does the scanner engine ever
`parse HTML?
`A Yes.
`Q Can you describe how?
`A There are two ways. One way is sort of manually by looking for
`patterns. The other way, I'm not sure if we're still using it -- used to
`use it -- is there is a third-party library called libxml2. That library has
`a mode of operation in which it can be configured to parse HTML
`instead of XML.
`Q Does the scanner engine generate anything when it parses HTML?
`MR. MAYS: Objection. Form.
`THE WITNESS: Can you explain what you mean by "generate"? Are
`you talking about scan results or anything else?
`Q (By Mr. Lee) Correct. Scan results.
`A We perform -- well, we produce the Boolean result, saying you're
`vulnerable or you're not vulnerable based on the results of an HTTP
`detection running.
`Q Is there any kind of intermediary data structures generated in
`scanning?
`A Well, for HTTP parsing, the parsing itself generates the parsed data,
`obviously; but otherwise, I'm not aware of any other than trivial things
`like formatting a response using a printf-style formatter with fields.
`Q How is the parsed data represented?
`A Well, when we parse it manually, the parsed data is simply the
`matching section in the regular expression. With libxml2, it is the
`document returned by the library.
`Kruse Tr. 20:12-21:20.
` Based on Qualys documentation, Qualys appears to have been using
`libxml2 as of the following dates:
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`30
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 7 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`51
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 8 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`52
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 9 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`53
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 10 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`b)
`Limitation 1[b]: “receiving, by a computer, an
`incoming stream of program code”
` The Qualys Cloud Platform satisfies this limitation. The Qualys Cloud
`Platform is for network security. See Qualys Cloud Platform Quick Tour (available
`at https://www.qualys.com/docs/qualys-quick-tour.pdf) [FINJAN-QUALYS
`419730]. The Qualys Cloud Platform retrieves data from Qualys sensors.
`Bachwani Tr. 28:20-29:4. The Qualys Cloud Platform scans this data and analyzes
`it for use with Qualys’s cloud based security tools. The data in the Qualys Cloud
`Platform is used to support all of the different Qualys products, which would include
`all of the Accused Features. Bachwani Tr. 31:16-22.
` At a high level, the Qualys Cloud Platform relies on different
`techniques for scanning content that results in the receipt, by a computer (the
`scanner engine of Qualys Cloud Platform used by the Vulnerability Features, the
`WAS scanner of the Qualys Cloud Platform, or the Qualys Cloud Platform working
`with a Cloud Agent), of different incoming streams of program code (e.g., the
`program code scanned by the Vulnerability Features and WAS). The program code
`can be in different formats (e.g., XML, HTML, JavaScript, Flash, PDF, DOCX, raw
`data from an endpoint, etc.), and thus, written in a plurality of programming
`languages.
`
`(1) Vulnerability Features
` As a first example of the Qualys Cloud Platform “receiving, by a
`computer, an incoming stream of program code,” the Qualys Cloud Platform uses a
`scanner engine for the Vulnerability Features that performs various network
`transactions and collects data from responses to those transactions. As stated above,
`all of the Vulnerability Features make use of the same scanner engine. See infra
`Section X.A. The response received by the scanner engine is “receiving, by a
`computer, an incoming stream of program code.”
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`66
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 11 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`67
`
`
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 12 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`68
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 13 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`69
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 14 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`79
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 15 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`80
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 16 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`81
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 17 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`84
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 18 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`handles many different types of services, and the source code and basic operation of
`the scanner do not change when adapting to different languages, it is a “generic
`scanner.” Thus, the scanner engine used with Vulnerability Features satisfies the
`limitation requiring “generating or requesting a generic scanner”:
`
`Q What other type of services or scans are performed other than
`discovery scans?
`A You mean what types of services we send requests to?
`Q Sure.
`A Many different. Hundreds of services.
`Q Is there any primary ones?
`A Well, primary ones are HTTP, HTTPS and the various services that
`provide us with authenticated access to a target. This includes SSH
`and SMB and the various database protocols.
`Kruse Tr. 14:2-12; see also id. at 16:22-17:8 (stating that scanner engine checks for
`vulnerabilities by interpreting responses received to initiated network transaction).
` Note that “in response to . . . determining” that the incoming stream is
`a particular programming language, the scanner engine uses particular logic for
`scanning (including logic specific to the programming language). The scanner
`engine used with Vulnerability Features relies upon selecting signatures in a
`signature repository and executing those signatures. The scanner engine determines
`the specific scanning logic to perform based on the vulnerability being checked. For
`example, “in response to [a] determin[ation]” that an HTTP vulnerability is being
`checked, the generic scanner engine uses HTTP specific logic (including HTTP
`specific parsing logic) from the signature repository:
`
`Q Can you elaborate, what do you mean by “the scripting engine that
`interfaces with vulnerability signatures”?
`A Vulnerability signatures are written in a certain style, and this style,
`this method has to be supported by the scanner engine. So there is code
`in the scanner engine that allows us to run signatures.
`Q What do you mean by “run signatures”?
`85
`
`
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 19 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`A Execute them.
`Q What do you mean by “execute them”?
`A Well, a signature has to perform its work; right? If a signature states
`that we're supposed to send an HTTP request and wait for a response
`and then look at the result, that has to be written in code; right? There
`has to be code that actually does that, that looks at the signature and
`then does what the signature expects the code to do.
`Q Can you provide a specific example?
`A Well, I just did; right? The signature can have an HTTP request in
`it and then the regular expression for an HTTP response. And in that
`case, the scanner engine would do that. It would look for the request,
`send the request, wait for the response, and match the response
`content.
`Q So you're saying it's the signature that does that? Not the scanner
`engine applying the signature?
`MR. MAYS: Objection. Misstates testimony.
`THE WITNESS: The signature is data. The scanner engine is code.
`So the code looks at the data and then executes the functionality.
`Kruse Tr. 46:31-48:4.
` The specific scanning logic to be used is “spread out across thousands
`of files,” and “depends” on what is being scanned:
`
`Q (By Mr. Lee) Can you identify the specific directories for generating
`scan results?
`A No, I cannot. And the reason for that is that the code to generate
`scan results is spread out across thousands of files which live in
`thousands of directories. Every module produces its own scan results
`and therefore has code for producing scan results.
`In addition to that, we have libraries, helper libraries used by modules
`which can also produce scan results. They have code to do that. On
`top of that, we have some hard-coded QIDs which are directly in the
`main engine, the ML scanner engine. There is formatting code there
`as well.
`Producing scan results is a low-level action inside of ML that occurs
`in so many different places. Basically think of it as just normal string
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`86
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 20 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`formatting, but you may be familiar with something like printf or scanf
`or so, but that’s what happens.
`(Reporter clarification.)
`THE WITNESS: Think of it as formatting, data formatting. So this is
`a generic activity which happens in program code in many, many
`places. It is not centralized in one location in the code.
`Q (By Mr. Lee) Can you identify the primary directories --
`MR. MAYS: Objection. Form.
`Q (By Mr. Lee) -- for generating scan results?
`MR. MAYS: Objection. Form.
`THE WITNESS: Again, each module has its own code. There is no
`primary. Primary would suggest that some modules do a lot of it and
`some do less. It depends on what the customer scans. If you scan
`Windows, it’s in one place. If you scan Unix, it’s in another place. If
`you scan a web service, yet another place. If it's an FTP server, it's
`somewhere else.
`There are literally at least hundreds, possibly over a thousand places
`where this takes place, depending on what you're scanning.
`Kruse Tr. 187:24-189:17.
` One such type of scanning based on signatures offered by the scanner
`engine used with Vulnerability Features is the ability to scan and parse the
`programming language used by the incoming data stream (such as HTML):
`
`Q Does the scanner engine -- strike that. Does the scanner engine ever
`parse HTML?
`A Yes.
`Kruse Tr. 20:12-14.
` Thus, the scanner engine used with Vulnerability Features “can scan
`the programming language” of the incoming data stream. For instance, the scanner
`engine used with Vulnerability Features looks for patterns in the HTML, thus it has
`“language-specific data, rules, or both”:
`
`Q Can you describe how [the parser engine parses HTML]?
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`87
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 21 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`A There are two ways. One way is sort of manually by looking for
`patterns. The other way, I'm not sure if we're still using it -- used to
`use it -- is there is a third-party library called libxml2. That library has
`a mode of operation in which it can be configured to parse HTML
`instead of XML.
`Kruse Tr. 20:15-22.
` When parsing HTML, the scanner engine used with Vulnerability
`Features searches for certain HTML tags, using regular expressing matching in the
`text stream. Mr. Kruse notes that the regular expression matching may even search
`for multiple tags:
`
`Q So using HTML as an example, can you provide an example how
`the parsed data would be represented if it's scanned by the scanner
`engine?
`A Well, the scanner engine would just be the tag that we're matching.
`So it would be a piece of text that encompasses the tag and possibly
`multiple tags that we -- that the regular expression matches as a text
`stream.
`Kruse Tr. 21:21-22:3
` The scanner engine used with Vulnerability Features therefore includes
`a “scanner comprising parser rules and analyzer rules for the specific programming
`language, wherein the parser rules define certain patterns in terms of tokens, tokens
`being lexical constructs for the specific programming language, and wherein the
`analyzer rules identify certain combinations of tokens and patterns as being
`indicators of potential exploits, exploits being portions of program code that are
`malicious.”
` As discussed above, the scanner engine used with Vulnerability
`Features determines which specific exploits to search for (for example, in the
`received HTML) using a database of signatures that Qualys refers to as Vulnsigs.
`See, e.g., QUALYS01943390 at QUALYS01943393 (“The "Vulnsigs" package
`contains vulnerability signatures”); see also QUALYS01059079 at
`QUALYS01059111 (discussing vulnerability scanning setups “Specify Vulnsigs
`88
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 22 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`version” that requires “For VM and PC testing, we always use LATEST, which
`points to daily Vulnsigs release. We have Vulnsigs release from Monday to
`Thursday.”).
` More specifically, the scanner engine used with Vulnerability Features
`searches for the indicators identified in Vulnsigs as an indicator of a potential
`vulnerability. The data from Vulnsigs is the claimed “analyzer rules,” which
`“identify certain combinations of tokens and patterns as being indicators of potential
`exploits, exploits being portions of program code that are malicious”:
`
`Q Can you describe how the signature team would look up the
`signature?
`A Well, we have files that contain the signatures, development files,
`and those files have that data. The signature team has access to them.
`That's what they work with.
`Q Is there a name for those type of files?
`A Called Vulnsigs files. That's V-U-L-N-S-I-G-S. Vulnsigs is our
`internal name for the vulnerability signature base.
`Kruse 59:22-60:6; see also 190:10-191:18.
` In addition, the Qualys Vulnerability Features leverage Qualys’s
`KnowledgeBase of known vulnerabilities. FINJAN-QUALYS 416092. “Qualys
`Vulnerability Management (VM) can identify known vulnerabilities in application
`software such as databases, web servers, and middleware in the same way that it
`does for OS vulnerabilities. Multiple signatures exist to identify weak encryption
`configuration for legacy protocols, along with signatures to identify applications no
`longer supported by the vendor (EOL).” QUALYS00289149. “KnowledgeBase
`includes more than 18,000 vulnerability signatures. Forty-five percent of the
`vulnerabilities tracked are designated the highest level of severity by their vendors
`in terms of potential destruction, complexity, and liability to customers' networks.
`Attacks that exploit vulnerabilities at these levels allow intruders to easily gain
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`89
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 23 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`control of the host, which may lead to compromising security of the entire network”
`FINJAN-QUALYS 037712.
` The scanner engine does not make a determination of vulnerability
`when scanning for the PC tool (Kruse Tr. 31:18-32:14), but the data collected by the
`scanner engine still includes “indicators of potential exploits.” For example, where
`a policy has determined that a password should be rotated every 90 days to avoid an
`exploit, one of the data points collected is the number of days that passwords are
`rotated:
`
`Q. What type of raw data points are gathered by policy compliance?
`A. Well, whichever is necessary for the individual policy. This is all
`policy-driven so the customer defines the policy. Very often these
`policies come from government regulations or industry regulations.
`So whatever data points they need is what we gather. So an example,
`for instance, if you need one, would be there may have to be a
`requirement to have a password policy, a rotation policy on a target
`system, to rotate passwords every 90 days, and the data point then
`would be the number of days that the computer system has configured
`for its password-protection policy.
`Kruse Tr. 32:15-33:4.
` Qualys advertises to customers that Policy Compliance tool helps
`identify exploits (“vulnerabilities and violations”) before they are hacked. E.g.,
`Securing Databases with Qualys Policy Compliance (available at
`https://blog.qualys.com/product-tech/2020/01/06/securing-databases-with-qualys-
`policy-compliance) [FINJAN-QUALYS 769015] (“Qualys Policy Compliance (PC)
`automates the labor-intensive process of checking settings and misconfigurations in
`your environment. It helps you identify vulnerabilities and violations before they get
`out of hand and makes remediation easy.”).
` Thus, the scanner engine used with Vulnerability Features uses logic to
`parse HTML using regular expression matching of tags (searching for lexical
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`90
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 24 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`constructs specific in HTML) to identify potential vulnerabilities (combinations of
`tags as an indicator of a potential exploit).
` Additionally, the Cloud Platform supporting the Vulnerability Features
`satisfies this limitation. The server associated with the Cloud Agent receives and
`interprets a JSON file containing the snapshot information. QUALYS01993472 at
`QUALYS01993551. In order to do so, the server associated with the Cloud Agent
`must parse the JSON using specific lexical constructs. A JSON file defines these
`specific constructs in a “definitions” field. Using the JSON information and any
`definitions available for the JSON tree, the server associated with the Cloud Agent
`can make use of a generic JSON parser and apply language specific rules to interpret
`the data from the Cloud Agent.
` The scanner used by the server associated with the Cloud Agent also
`makes use of the claimed “analyzer rules . . . wherein the analyzer rules identify
`certain combinations of tokens and patterns as being indicators of potential exploits,
`exploits being portions of program code that are malicious.” Specifically, the data
`collected from the Cloud Agent is associated with a “manifest.”
`QUALYS00347915 at QUALYS00347916. The manifest version is an example of
`“analyzer rules,” because it identifies the potential vulnerabilities:
`
`Asset Metadata Collected by Cloud Agent
`The Cloud Agent design differs from the Qualys Scanner approach in
`that the agent does not perform vulnerability management and policy
`compliance processing in the agent itself. Rather, the Cloud Agent
`simply collects metadata on certain files, processes, and registry keys
`to find installed software, configuration settings, and environmental
`variables and securely transmits the metadata to the Qualys Platform
`for processing on the platform. The specifications of what the agent
`collects are defined in a configuration file called a "manifest" that is
`dynamically generated on the platform and downloaded by the agent
`when new vulnerability management QIDs and policy compliance
`CIDs are created by the Qualys content teams.
`
`Id.
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
`
`
`91
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 25 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`
`
`99
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 26 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` 100
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 27 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` 102
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 28 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`stream, [a hierarchical structure of interconnected nodes built from scanned content]
`whose nodes represent tokens and patterns in accordance with the parser rules.”
` Qualys’s Cloud Platform satisfies this limitation a number of ways. At
`a high level (and as set forth above), the Qualys Cloud Platform receives an
`incoming stream of code, such as the scanned data for the scanner engine used with
`Vulnerability Features or the scanned XML, HTML, JavaScript, Flash, or other files
`used with the WAS scanner. The Qualys Cloud Platform builds a hierarchical data
`structure, such as XML, a variant of XML (e.g., JSON), or a proprietary data
`structure built from content for XML. Individual nodes in those data structures
`represent tokens and patterns identified by a parser (such as parsing the XML,
`HTML, JavaScript, or Flash using language specific parsing rules). The Qualys
`Cloud Platform builds the data structures immediately and while data is being
`received.
` As background, Qualys relies on maintaining information in the cloud
`(in fact, all of Qualys’s products are dependent upon data stored in Qualys’s Cloud
`Platform):
`
`Q. Can you identify which backend system you're referring to that has
`the Oracle database?
`A. So Qualys has a backend platform, and Oracle is one of the
`databases in the backend platform.
`Q. What do you mean by "backend platform"?
`A. The Qualys sensors that collect the data, they send the data up to
`the Qualys platform.
`Q. Is there a name for this backend platform?
`A. We call it the Qualys Cloud Platform.
`Bachwani Tr. 28:17-29:4.
`
`Q. Which other Qualys products used the backend cloud platform
`other than Vulnerability Management?
`MR. SMITH: Objection. Vague.
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
` 103
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 29 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` 104
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 30 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` 107
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 31 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` 108
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 32 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
`Q. Is there a name for this data structure?
`A. No. Well, typically these kinds of data structures are called arrays.
`Kruse Tr. 30:13-31:4
` Thus, the scanned and parsed content stored in the memory is an
`example of a hierarchical structure of interconnected nodes built from scanned
`content (i.e., a “parse tree”).
` The XML file rendered from the scan results is also an example of a
`“parse tree.” The XML file is rendered in a form that is compatible with scan-1.dtd.
`See C:\code\QWEB\qweb\msp\scan.php [QUALYS_SC_000358-387] at line 7; see
`also Bachwani Tr. 216:8-217:7; Vulnerability Scan Results in XML
`[QUALYS00878883]. An XML file in that format is hierarchical in nature. For
`example, QUALYS00878883 depicts a recent “scan-1.dtd.” Thus, the XML file of
`results created by the scanning engine is also a hierarchical structure of
`interconnected nodes built from scanned content.
` Thus, the output of the scanner engine is communicated to the Qualys
`backend systems in XML format that is another example of the claimed “parse tree”
`as construed.
` The scanning engine generates output during the scanning process.
`According to Qualys engineer, Mr. Kruse, the scan results are built “immediately”
`upon parsing input:
`
`Q Is there some type of file that holds the parsed data?
`A No, there isn't. The data is immediately processed and used in the
`generation of the scan result.:
`Kruse Tr. 22:4-8.
` Thus, the scan results (which includes the array and the resulting XML
`output) is “dynamically buil[t], by the computer while said receiving receives the
`incoming stream.”
`
`1 2 3 4 5 6 7 8 9
`
`10
`11
`12
`13
`14
`15
`16
`17
`18
`19
`20
`21
`22
`23
`24
`25
`26
`27
`28
`
` 109
`
`
`MEDVIDOVIC EXPERT REPORT
`Case No. 4:18-cv-07229-YGR (TSH)
`
`

`

`Case 4:18-cv-07229-YGR Document 202-2 Filed 06/01/21 Page 33 of 60
`
`HIGHLY CONFIDENTIAL – ATTORNEYS EYES’ ONLY
`
` Further evidence that the scan results are built while the scanning is
`occurring (and thus, while scanner engine used with the Vulnerability Features is
`receiving an incoming stream of data) is the use of “parallelization.” Qualys’s
`Vulnerability Features support parallelization, which allows scans to be run in
`parall

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