@@ -273,5 +273,43 @@ public void PackageVulnerabilityFormatter_CapsAtFiftyLines()
273273 Assert . AreEqual ( 5 , summary . NotShown ) ;
274274 Assert . IsTrue ( summary . Lines [ 0 ] . StartsWith ( "- pkg1 1.1.0 [windows-registry]: CVE-2026-10001" ) ) ;
275275 }
276+
277+ [ TestMethod ]
278+ public void PackageVulnerabilityFormatter_SortsByCriticalityBeforeCapping ( )
279+ {
280+ var responseJson =
281+ "{\" package_vulnerabilities\" :{\" checked\" :4,\" affected\" :4,\" vulnerable_packages\" :[" +
282+ "{\" name\" :\" lowpkg\" ,\" version\" :\" 1.0\" ,\" manager\" :\" windows-registry\" ,\" severity\" :\" low\" ,\" vulns\" :[\" CVE-2026-10001\" ]}," +
283+ "{\" name\" :\" criticalpkg\" ,\" version\" :\" 2.0\" ,\" manager\" :\" windows-registry\" ,\" severity\" :\" critical\" ,\" vulns\" :[\" CVE-2026-10002\" ]}," +
284+ "{\" name\" :\" highpkg\" ,\" version\" :\" 3.0\" ,\" manager\" :\" windows-registry\" ,\" severity\" :\" high\" ,\" vulns\" :[\" CVE-2026-10003\" ]}," +
285+ "{\" name\" :\" mediumpkg\" ,\" version\" :\" 4.0\" ,\" manager\" :\" windows-registry\" ,\" severity\" :\" medium\" ,\" vulns\" :[\" CVE-2026-10004\" ]}" +
286+ "]}}" ;
287+
288+ var summary = winPEAS . Info . NetworkInfo . HackTricksHostChecker . ParsePackageVulnerabilities ( responseJson , 3 ) ;
289+
290+ Assert . AreEqual ( 3 , summary . Lines . Count ) ;
291+ Assert . AreEqual ( 1 , summary . NotShown ) ;
292+ Assert . IsTrue ( summary . Lines [ 0 ] . StartsWith ( "- criticalpkg 2.0 [windows-registry] [Critical]: CVE-2026-10002" ) ) ;
293+ Assert . IsTrue ( summary . Lines [ 1 ] . StartsWith ( "- highpkg 3.0 [windows-registry] [High]: CVE-2026-10003" ) ) ;
294+ Assert . IsTrue ( summary . Lines [ 2 ] . StartsWith ( "- mediumpkg 4.0 [windows-registry] [Medium]: CVE-2026-10004" ) ) ;
295+ }
296+
297+ [ TestMethod ]
298+ public void PackageVulnerabilityFormatter_UsesCvssCriticalityWhenSeverityMissing ( )
299+ {
300+ var responseJson =
301+ "{\" package_vulnerabilities\" :{\" checked\" :3,\" affected\" :3,\" vulnerable_packages\" :[" +
302+ "{\" name\" :\" mediumcvss\" ,\" version\" :\" 1.0\" ,\" manager\" :\" windows-registry\" ,\" cvss_score\" :5.0,\" vulns\" :[\" CVE-2026-10001\" ]}," +
303+ "{\" name\" :\" criticalcvss\" ,\" version\" :\" 2.0\" ,\" manager\" :\" windows-registry\" ,\" cvss_score\" :9.8,\" vulns\" :[\" CVE-2026-10002\" ]}," +
304+ "{\" name\" :\" highobject\" ,\" version\" :\" 3.0\" ,\" manager\" :\" windows-registry\" ,\" vulns\" :[{\" id\" :\" CVE-2026-10003\" ,\" severity\" :\" high\" ,\" cvss_score\" :8.1}]}" +
305+ "]}}" ;
306+
307+ var summary = winPEAS . Info . NetworkInfo . HackTricksHostChecker . ParsePackageVulnerabilities ( responseJson , 50 ) ;
308+
309+ Assert . AreEqual ( 3 , summary . Lines . Count ) ;
310+ Assert . IsTrue ( summary . Lines [ 0 ] . StartsWith ( "- criticalcvss 2.0 [windows-registry] [Critical]: CVE-2026-10002" ) ) ;
311+ Assert . IsTrue ( summary . Lines [ 1 ] . StartsWith ( "- highobject 3.0 [windows-registry] [High]: CVE-2026-10003" ) ) ;
312+ Assert . IsTrue ( summary . Lines [ 2 ] . StartsWith ( "- mediumcvss 1.0 [windows-registry] [Medium]: CVE-2026-10001" ) ) ;
313+ }
276314 }
277315}
0 commit comments