Skip to content

Latest commit

 

History

History
50 lines (32 loc) · 4.54 KB

INTERVIEW_GUIDE.md

File metadata and controls

50 lines (32 loc) · 4.54 KB

Engineering discussion guide

This guide provides source-backed discussion points for reviewing VulnHawk. It focuses on the implementation, its tradeoffs, and what would be required to validate it.

Project overview

VulnHawk is a Python web security scanner for controlled labs. Its core pipeline combines asynchronous HTTP requests, HTML crawling and parsing, modular checks, and structured findings. A Flask layer provides database models and API routes, while separate components explore heuristic and provider-assisted finding analysis.

The public snapshot demonstrates component design and security-testing techniques. The technical notes identify missing assets, result-propagation issues, and validation gaps.

Design decisions to explain

Topic Source-backed discussion
Async I/O Requester and crawler overlap network waits. Discuss concurrency budgets, cleanup, timeouts, and why concurrency alone does not prove a speedup.
Module boundaries BaseModule separates passive check() and active test() methods. Explain how adding a detector also requires integrating dispatch and validating output.
Finding evidence The shared result model records the input, payload, response evidence, and remediation context. Explain why detector confidence and severity are different judgments.
Orchestration ScannerEngine coordinates sequential phases and callbacks. Discuss cancellation, partial failures, and result consistency.
Persistence Models separate users, scans, and vulnerabilities. Explain the CLI's independent callback-based report path and the consistency checks it needs.
Analysis Classifier uses patterns and heuristics; provider adapters generate optional explanations. Neither establishes exploitability without supporting evidence.

Distinguish signals from confirmed defects

  • XSS: reflected input is a useful signal. Browser execution context, escaping, and applicable controls determine whether it is exploitable.
  • SQL injection: database errors, boolean differences, and timing changes support hypotheses. Stable baselines and negative controls are needed to distinguish injection from normal variation.
  • CSRF: token absence warrants investigation, but authentication method, cookie behavior, and other request protections affect the conclusion.
  • IDOR and mass assignment: suspicious identifiers or field names are candidates for review. Confirmation requires an authorization model and a controlled comparison of expected and observed access.

These distinctions are central to evaluating a scanner's output. A completed scan and an empty finding list do not prove security.

A concrete debugging example from the source

The standard engine appends a passive finding to its internal list before updating scan_stats['active_testing']. That statistics entry is created in a later phase. The intervening error can prevent the CLI callback from receiving the finding, leaving internal results and exported JSON inconsistent.

A useful regression case would inject one deterministic passive finding and compare the engine list, callback events, and JSON totals. It should fail if the finding is lost at any boundary. This is a proposed test, not a completed fix.

What the existing validation supports

Syntax parsing and CLI help establish basic source and interface availability. The manual detection script exercises a local demo but accepts insufficient evidence in several success branches. It does not substantiate precision, recall, complete vulnerability coverage, or a measured reduction in false positives.

For stronger evidence, build a labeled local corpus, retain positive and negative examples, record the source revision and dependencies, and separate detection accuracy from workflow and reporting correctness.

Demonstration plan

  1. Show python run.py scan --help and the pipeline's source boundaries.
  2. Explain one detector, its evidence fields, and a benign case it must not flag.
  3. If a local lab has been prepared, use the limited demo workflow and inspect the actual output.
  4. State what the observed result supports and which checks remain incomplete.

Use actual outputs when discussing results. The repository currently provides no evidence for enterprise readiness, complete OWASP coverage, a trained classification model, or specific detection and performance percentages.