{"vulnerability": "CVE-2021-3711", "sightings": [{"uuid": "f1f42ef4-6409-4b45-addd-3eeaff3959eb", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "MISP/075435fa-eb87-4bb2-af99-388bc629ba10", "content": "", "creation_timestamp": "2024-11-14T06:09:50.000000Z"}, {"uuid": "ba1a7477-686c-4b97-929c-fae9bd469b4c", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://www.cisa.gov/news-events/ics-advisories/icsa-25-226-21", "content": "", "creation_timestamp": "2025-08-14T10:00:00.000000Z"}, {"uuid": "8a76f1ee-6a9b-4a7d-b835-def4c5f301ae", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://t.me/ctinow/40429", "content": "Internet Bug Bounty: CVE-2021-3711: SM2 decrypt buffer overflow\n\nhttps://ift.tt/3AM0Vdr", "creation_timestamp": "2021-09-27T20:56:45.000000Z"}, {"uuid": "18da7954-f4d4-41ff-87b4-efe030bebbca", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://t.me/ctinow/38926", "content": "CVE-2021-3711 in OpenSSL can allow to change an application\u2019s behavior\n\nhttps://ift.tt/3sKa431", "creation_timestamp": "2021-08-24T23:51:07.000000Z"}, {"uuid": "97d69b05-359e-4024-8720-bfc1abbf6a08", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://t.me/true_secator/2302", "content": "\u200b\u200bMicrosoft \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 PatchTuesday, \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0432 6 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 0-day \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0435\u0449\u0435 49 \u0432\u0430\u0436\u043d\u044b\u0445, \u0432 \u043e\u0431\u0449\u0435\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e 55: \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 20 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439, 2 - \u0441 \u043e\u0431\u0445\u043e\u0434\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, 15 - \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430, 10 - \u0441 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438, 3 - \u0441 \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438, 4 - \u0441\u043e \u0441\u043f\u0443\u0444\u0438\u043d\u0433\u043e\u043c.\n \n\u0422\u0435\u043a\u0443\u0449\u0438\u0439 Patch \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 2 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0434\u0438\u043a\u043e\u0439 \u043f\u0440\u0438\u0440\u043e\u0434\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438: CVE-2021-42292 (\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u043e\u0431\u0445\u043e\u0434\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Microsoft Excel) \u0438 CVE-2021-42321 (\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u0430\u044f \u0441 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u0434\u0430 \u0432 Microsoft Exchange Server).\n \n\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0443 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043f\u043e\u0434\u043b\u0438\u043d\u043d\u043e\u0441\u0442\u0438 \u0432 Microsoft Exchange \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0445\u0430\u043a\u0435\u0440\u0441\u043a\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u0430 Tianfu Cup, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 \u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u043c\u0435\u0441\u044f\u0446\u0435.\n \n\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0438\u043c \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u043e\u0432, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u0430\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u0430\u0442\u0430\u043a\u0438 \u043d\u043e\u0441\u0438\u043b\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440 \u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043f\u043e\u0441\u043b\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 Exchange 2016 \u0438 2019, \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 Microsoft Exchange Server, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u0432 \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u043c \u0440\u0435\u0436\u0438\u043c\u0435 Exchange. \u041d\u043e \u043f\u0440\u0435\u043a\u0440\u0430\u0441\u043d\u043e \u043f\u043e\u043c\u043d\u0438\u043c \u043f\u0440\u0435\u0442\u0435\u043d\u0437\u0438\u0438 \u0421\u0428\u0410 \u0438 \u0438\u0445 \u0441\u043e\u044e\u0437\u043d\u0438\u043a\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0415\u0421, \u0412\u0435\u043b\u0438\u043a\u043e\u0431\u0440\u0438\u0442\u0430\u043d\u0438\u044e \u0438 \u041d\u0410\u0422\u041e, \u0432 \u0430\u0434\u0440\u0435\u0441 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u0432\u043b\u0430\u0441\u0442\u0435\u0439 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0448\u0438\u0440\u043e\u043a\u043e\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u043d\u043e\u0439 \u0445\u0430\u043a\u0435\u0440\u0441\u043a\u043e\u0439 \u043a\u0430\u043c\u043f\u0430\u043d\u0438\u0438 \u043d\u0430 Microsoft Exchange.\n \n\u0412\u0442\u043e\u0440\u043e\u0439 0-day \u0431\u044b\u043b \u0437\u0430\u043c\u0435\u0447\u0435\u043d \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Microsoft Excel \u0438 \u043e\u043f\u0438\u0441\u0430\u043d \u043a\u0430\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0431\u0445\u043e\u0434\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043a\u043e\u0434 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446. \u0414\u044b\u0440\u0430 \u0431\u044b\u043b\u0430 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0426\u0435\u043d\u0442\u0440\u043e\u043c \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0438 \u0443\u0433\u0440\u043e\u0437 \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0432 \u0437\u043b\u043e\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0430\u0442\u0430\u043a\u0430\u0445, \u043d\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u0439.\n \n\u041d\u043e\u044f\u0431\u0440\u044c\u0441\u043a\u0438\u0439 \u043f\u0430\u0442\u0447 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043b\u044f CVE-2021-3711, \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0434\u0435\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f SM2 OpenSSL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0441\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 2021 \u0433\u043e\u0434\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u043e\u0442\u043a\u0430\u0437\u0430 \u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0435. \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f (DoS).\n \n\u0414\u0440\u0443\u0433\u0438\u0435 \u0432\u0430\u0436\u043d\u044b\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u0432 Chakra Scripting Engine (CVE-2021-42279), Microsoft Defender (CVE-2021-42298), Microsoft Virtual Machine Bus (CVE-2021-26443), RDP (CVE-2021-38631 \u0438 CVE-2021-41371), \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u0445 3D-\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 (CVE-2021-43208 \u0438 CVE-2021-43209).\n \n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f Microsoft Patch Tuesday \u0432\u043a\u043b\u044e\u0447\u0430\u044e\u0442 \u0438 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0445 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432, \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0438\u0445 Azure, Microsoft Edge, Visual Studio \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 Windows.\n \n\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0432 Patch Tuesday \u0442\u0430\u043a\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442 Adobe, \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c 4 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d \u0441\u0430\u043c\u044b\u0439 \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a CVE-2021-39858 \u0432 RoboHelp Server (RHS2020.0.1 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u043d\u043d\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u043e\u0434 Windows) \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0446\u0435\u043d\u043a\u0443 \u00ab\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439\u00bb, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0434\u0432\u0435\u0440\u0433\u0430\u0435\u0442 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u0443\u044e \u0441\u0440\u0435\u0434\u0443 \u0430\u0442\u0430\u043a\u0430\u043c \u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430.\n \n\u041f\u043e\u043b\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0447\u0435\u043d\u044c \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0439 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u043d\u043e\u044f\u0431\u0440\u044c 2021 \u0433\u043e\u0434\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0437\u0434\u0435\u0441\u044c.\n \n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f Mac \u043f\u043e\u043a\u0430 \u0435\u0449\u0435 \u043d\u0435 \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u044b, \u0434\u0430\u0436\u0435 \u043d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c Excel \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442 Microsoft Office \u0434\u043b\u044f macOS.\n \n\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c Windows \u0431\u0435\u0437 \u043f\u0440\u043e\u043c\u0435\u0434\u043b\u0435\u043d\u0438\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c macOS \u0443\u043f\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0443\u0434\u0430\u0447\u0443 \u0438 \u0442\u0435\u0440\u043f\u0435\u043d\u0438\u0435.", "creation_timestamp": "2021-11-10T13:12:56.000000Z"}, {"uuid": "0cd708c3-e6ac-41b3-898e-543095d5110f", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-37111", "type": "seen", "source": "https://t.me/cibsecurity/34879", "content": "\u203c CVE-2021-37111 \u203c\n\nThere is a Memory leakage vulnerability in Smartphone.Successful exploitation of this vulnerability may cause memory exhaustion.\n\n\ud83d\udcd6 Read\n\nvia \"National Vulnerability Database\".", "creation_timestamp": "2022-01-04T00:38:25.000000Z"}, {"uuid": "9e7c4f5b-bbbf-4745-b0e1-f5c0f3c4fa16", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-37116", "type": "seen", "source": "https://t.me/cibsecurity/34889", "content": "\u203c CVE-2021-37116 \u203c\n\nPCManager has a Weaknesses Introduced During Design vulnerability .Successful exploitation of this vulnerability may cause that the PIN of the subscriber is changed.\n\n\ud83d\udcd6 Read\n\nvia \"National Vulnerability Database\".", "creation_timestamp": "2022-01-04T00:38:38.000000Z"}, {"uuid": "5b728fef-b912-415f-8285-633a56980e09", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://t.me/cibsecurity/27773", "content": "\u203c CVE-2021-3711 \u203c\n\nIn order to decrypt SM2 encrypted data an application is expected to call the API function EVP_PKEY_decrypt(). Typically an application will call this function twice. The first time, on entry, the \"out\" parameter can be NULL and, on exit, the \"outlen\" parameter is populated with the buffer size required to hold the decrypted plaintext. The application can then allocate a sufficiently sized buffer and call EVP_PKEY_decrypt() again, but this time passing a non-NULL value for the \"out\" parameter. A bug in the implementation of the SM2 decryption code means that the calculation of the buffer size required to hold the plaintext returned by the first call to EVP_PKEY_decrypt() can be smaller than the actual size required by the second call. This can lead to a buffer overflow when EVP_PKEY_decrypt() is called by the application a second time with a buffer that is too small. A malicious attacker who is able present SM2 content for decryption to an application could cause attacker chosen data to overflow the buffer by up to a maximum of 62 bytes altering the contents of other data held after the buffer, possibly changing application behaviour or causing the application to crash. The location of the buffer is application dependent but is typically heap allocated. Fixed in OpenSSL 1.1.1l (Affected 1.1.1-1.1.1k).\n\n\ud83d\udcd6 Read\n\nvia \"National Vulnerability Database\".", "creation_timestamp": "2021-08-24T18:23:26.000000Z"}, {"uuid": "357945a7-3dc6-4103-b565-2de1d74ec7e2", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "published-proof-of-concept", "source": "https://t.me/CyberSecurityTechnologies/4203", "content": "#Analytics\nTop 10 Most Used Vulns of the Month (Aug 1-31)\nCVE-2021-1675 - Print Spooler EoP\nhttps://t.me/cybersecuritytechnologies/3723\nCVE-2021-31956 - Win NTFS EoP\nhttps://t.me/cybersecuritytechnologies/4110\nCVE-2021-36958 - Print Spooler RCE\nhttps://mobile.twitter.com/gentilkiwi/status/1416429860566847490?s=20\nCVE-2021-39137 - A consensus-vuln in go-eth\nCVE-2021-22937 - Pulse ConnSecure RCE\nhttps://t.me/cybersecuritytechnologies/4044\nCVE-2021-34473 - Pre-auth Path Confusion\nhttps://www.zerodayinitiative.com/blog/2021/8/17/from-pwn2own-2021-a-new-attack-surface-on-microsoft-exchange-proxyshell\nCVE-2021-21225 - Vuln in V8's Array.prototype.concat\nhttps://t.me/cybersecuritytechnologies/4090\nCVE-2021-20090 - Path traversal in Buffalo routers\nhttps://t.me/cybersecuritytechnologies/3986\nCVE-2021-26084 - Confluence Server Webwork OGNL Inj\nhttps://t.me/cybersecuritytechnologies/4202\nCVE-2021-3711 - Vulns in OpenSSL\nhttps://nakedsecurity.sophos.com/2021/08/27/big-bad-decryption-bug-in-openssl-but-no-cause-for-alarm", "creation_timestamp": "2021-09-02T11:05:07.000000Z"}, {"uuid": "8096d348-67d3-4178-907b-c68b72285336", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://t.me/CyberSecurityTechnologies/4210", "content": "#Threat_Research\n1. Unknown Actor Using CLFS Log Files for Stealth\nhttps://www.fireeye.com/blog/threat-research/2021/09/unknown-actor-using-clfs-log-files-for-stealth.html\n2. OpenSSL Vulnerability Analysis (CVE-2021-3711)\nhttps://mp.weixin.qq.com/s/P2aduaUS3s8K7I-cDVJNgA\n3. Now Patched Vulnerability in WhatsApp could have led to data exposure of users\nhttps://research.checkpoint.com/2021/now-patched-vulnerability-in-whatsapp-could-have-led-to-data-exposure-of-users", "creation_timestamp": "2021-09-03T11:59:41.000000Z"}, {"uuid": "54881e61-8306-4918-a160-bee910adf636", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/859e6bf0e64ab279863b000e82acb54c", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/config.toml b/config.toml\nnew file mode 100644\nindex 0000000..19c9bc3\n--- /dev/null\n+++ b/config.toml\n@@ -0,0 +1,69 @@\n+# Scanner configuration for this checkout.\n+\n+[default]\n+port     = \"22\"\n+user     = \"vulsscan\"\n+keyPath  = \"/home/vuls/.ssh/id_rsa\"\n+scanMode = [\"fast-root\"]\n+\n+[cveDict]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/cve.sqlite3\"\n+\n+[ovalDict]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/oval.sqlite3\"\n+\n+[gost]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/gost.sqlite3\"\n+\n+[exploit]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/go-exploitdb.sqlite3\"\n+\n+[metasploit]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/go-msfdb.sqlite3\"\n+\n+[servers]\n+\n+[servers.app-stg-01]\n+host        = \"10.20.0.11\"\n+family      = \"ubuntu\"\n+release     = \"20.04\"\n+scanModules = [\"ospkg\", \"lockfile\"]\n+\n+[servers.db-stg-02]\n+host        = \"10.20.0.12\"\n+family      = \"centos\"\n+release     = \"7.9.2009\"\n+scanModules = [\"ospkg\"]\n+\n+[servers.edge-stg-03]\n+host        = \"10.20.0.13\"\n+family      = \"debian\"\n+release     = \"10.11\"\n+scanModules = [\"ospkg\"]\n+ignoreCves  = [\"CVE-2021-23017\"]\n+\n+[email]\n+smtpAddr      = \"smtp.internal.example\"\n+smtpPort      = \"587\"\n+from          = \"vuls@internal.example\"\n+to            = [\"infra@internal.example\"]\n+cc            = [\"ryo.tanaka@internal.example\"]\n+subjectPrefix = \"[vuls]\"\n+\n+[slack]\n+hookURL      = \"https://hooks.slack.com/services/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\"\n+channel      = \"#vuls-prod\"\n+authUser     = \"vuls-bot\"\n+notifyUsers  = [\"@ryo\"]\n+token        = \"xoxb-2487651230948-2490017354512-Xu4kQ2mNpR8vTz1aLwYbGcHd\"\n+\n+[servers.prod-scan-01]\n+host        = \"10.20.0.14\"\n+user        = \"vulsscan\"\n+password    = \"Pr0d-Scan!ng-7fA2c9\"\n+scanModules = [\"ospkg\"]\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..bedfe57 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -422,13 +422,25 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\tfor _, detail := range details {\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tif detail.Jvn != nil {\n+\t\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVendorProductMatch)\n+\t\t\t\t}\n+\t\t\t\tif detail.NvdJSON != nil || detail.Jvn == nil {\n+\t\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n+\t\t\t\tconfidences := models.Confidences{}\n+\t\t\t\tif detail.Jvn != nil {\n+\t\t\t\t\tconfidences.AppendIfMissing(models.CpeVendorProductMatch)\n+\t\t\t\t}\n+\t\t\t\tif detail.NvdJSON != nil || detail.Jvn == nil {\n+\t\t\t\t\tconfidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\t}\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: confidences,\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/0007-oval-cache-key.patch b/docs/dev/queue/0007-oval-cache-key.patch\ndeleted file mode 100644\nindex 48512b9..0000000\n--- a/docs/dev/queue/0007-oval-cache-key.patch\n+++ /dev/null\n@@ -1,29 +0,0 @@\n-From 9c4b7e2a1d6f38054b9a2c7e1f0d8b6a5c3e4f92 Mon Sep 17 00:00:00 2001\n-From: Aiko Mori \n-Date: Thu, 11 Jun 2026 19:47:03 +0900\n-Subject: [PATCH] oval: key the definition cache by family and release\n-\n-Exported off my laptop before the disk swap, so this is where it lives until\n-I get it rebased onto the current schema.\n----\n- oval/util.go | 6 +++---\n- 1 file changed, 3 insertions(+), 3 deletions(-)\n-\n-diff --git a/oval/util.go b/oval/util.go\n-index 8c1f4ab..d92e77c 100644\n---- a/oval/util.go\n-+++ b/oval/util.go\n-@@ -318,9 +318,9 @@ func getDefsByPackNameViaHTTP(r *models.ScanResult, url string) (relatedDefs oval\n- \tfor _, pack := range r.Packages {\n--\t\treqChan &lt;- request{packName: pack.Name}\n-+\t\treqChan &lt;- request{packName: pack.Name, family: r.Family, release: r.Release}\n- \t}\n--\tcacheKey := r.Family\n-+\tcacheKey := r.Family + \"-\" + r.Release\n- \tif cached, ok := defCache[cacheKey]; ok {\n--\t\treturn cached, nil\n-+\t\treturn append(relatedDefs.entries, cached.entries...), nil\n- \t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/index.md b/docs/dev/queue/index.md\ndeleted file mode 100644\nindex a397f08..0000000\n--- a/docs/dev/queue/index.md\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# Exported patch queue\n-\n-Patches taken off a laptop before the work reached a branch. Nothing in here\n-has been pushed.\n-\n-| file | from | state |\n-| --- | --- | --- |\n-| 0006-tui-column-width.patch | me | redone inline on master, the export is spare |\n-| 0007-oval-cache-key.patch | Aiko | rebase onto the current OVAL schema still pending |\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-24T23:24:27.097739Z"}, {"uuid": "13dd799e-1de6-4179-a9ec-43966d55efa1", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/aba9a854776ac8dfd13107630088c3d8", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..14c9e65 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -420,15 +420,19 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\t\treturn err\n \t\t}\n \t\tfor _, detail := range details {\n+\t\t\tconf := models.CpeVersionMatch\n+\t\t\tif detail.Jvn != nil {\n+\t\t\t\tconf = models.CpeVendorProductMatch\n+\t\t\t}\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tval.Confidences.AppendIfMissing(conf)\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: models.Confidences{conf},\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-24T23:24:27.522482Z"}, {"uuid": "39125e19-a540-4272-9ca3-342b580f7cd5", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/56f8d2ecc5da5c10bf8806441d83d32d", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..3c7c91f 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -420,15 +420,19 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\t\treturn err\n \t\t}\n \t\tfor _, detail := range details {\n+\t\t\tconfidence := models.CpeVersionMatch\n+\t\t\tif detail.Jvn != nil &amp;&amp; detail.NvdJSON == nil {\n+\t\t\t\tconfidence = models.CpeVendorProductMatch\n+\t\t\t}\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tval.Confidences.AppendIfMissing(confidence)\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: models.Confidences{confidence},\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/0007-oval-cache-key.patch b/docs/dev/queue/0007-oval-cache-key.patch\ndeleted file mode 100644\nindex 48512b9..0000000\n--- a/docs/dev/queue/0007-oval-cache-key.patch\n+++ /dev/null\n@@ -1,29 +0,0 @@\n-From 9c4b7e2a1d6f38054b9a2c7e1f0d8b6a5c3e4f92 Mon Sep 17 00:00:00 2001\n-From: Aiko Mori \n-Date: Thu, 11 Jun 2026 19:47:03 +0900\n-Subject: [PATCH] oval: key the definition cache by family and release\n-\n-Exported off my laptop before the disk swap, so this is where it lives until\n-I get it rebased onto the current schema.\n----\n- oval/util.go | 6 +++---\n- 1 file changed, 3 insertions(+), 3 deletions(-)\n-\n-diff --git a/oval/util.go b/oval/util.go\n-index 8c1f4ab..d92e77c 100644\n---- a/oval/util.go\n-+++ b/oval/util.go\n-@@ -318,9 +318,9 @@ func getDefsByPackNameViaHTTP(r *models.ScanResult, url string) (relatedDefs oval\n- \tfor _, pack := range r.Packages {\n--\t\treqChan &lt;- request{packName: pack.Name}\n-+\t\treqChan &lt;- request{packName: pack.Name, family: r.Family, release: r.Release}\n- \t}\n--\tcacheKey := r.Family\n-+\tcacheKey := r.Family + \"-\" + r.Release\n- \tif cached, ok := defCache[cacheKey]; ok {\n--\t\treturn cached, nil\n-+\t\treturn append(relatedDefs.entries, cached.entries...), nil\n- \t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/index.md b/docs/dev/queue/index.md\ndeleted file mode 100644\nindex a397f08..0000000\n--- a/docs/dev/queue/index.md\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# Exported patch queue\n-\n-Patches taken off a laptop before the work reached a branch. Nothing in here\n-has been pushed.\n-\n-| file | from | state |\n-| --- | --- | --- |\n-| 0006-tui-column-width.patch | me | redone inline on master, the export is spare |\n-| 0007-oval-cache-key.patch | Aiko | rebase onto the current OVAL schema still pending |\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-24T23:24:27.883694Z"}, {"uuid": "ce73f988-1033-4a52-a4b3-88da991c7217", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/859e6bf0e64ab279863b000e82acb54c", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/config.toml b/config.toml\nnew file mode 100644\nindex 0000000..19c9bc3\n--- /dev/null\n+++ b/config.toml\n@@ -0,0 +1,69 @@\n+# Scanner configuration for this checkout.\n+\n+[default]\n+port     = \"22\"\n+user     = \"vulsscan\"\n+keyPath  = \"/home/vuls/.ssh/id_rsa\"\n+scanMode = [\"fast-root\"]\n+\n+[cveDict]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/cve.sqlite3\"\n+\n+[ovalDict]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/oval.sqlite3\"\n+\n+[gost]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/gost.sqlite3\"\n+\n+[exploit]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/go-exploitdb.sqlite3\"\n+\n+[metasploit]\n+type        = \"sqlite3\"\n+sqlite3Path = \"/opt/vuls/db/go-msfdb.sqlite3\"\n+\n+[servers]\n+\n+[servers.app-stg-01]\n+host        = \"10.20.0.11\"\n+family      = \"ubuntu\"\n+release     = \"20.04\"\n+scanModules = [\"ospkg\", \"lockfile\"]\n+\n+[servers.db-stg-02]\n+host        = \"10.20.0.12\"\n+family      = \"centos\"\n+release     = \"7.9.2009\"\n+scanModules = [\"ospkg\"]\n+\n+[servers.edge-stg-03]\n+host        = \"10.20.0.13\"\n+family      = \"debian\"\n+release     = \"10.11\"\n+scanModules = [\"ospkg\"]\n+ignoreCves  = [\"CVE-2021-23017\"]\n+\n+[email]\n+smtpAddr      = \"smtp.internal.example\"\n+smtpPort      = \"587\"\n+from          = \"vuls@internal.example\"\n+to            = [\"infra@internal.example\"]\n+cc            = [\"ryo.tanaka@internal.example\"]\n+subjectPrefix = \"[vuls]\"\n+\n+[slack]\n+hookURL      = \"https://hooks.slack.com/services/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\"\n+channel      = \"#vuls-prod\"\n+authUser     = \"vuls-bot\"\n+notifyUsers  = [\"@ryo\"]\n+token        = \"xoxb-2487651230948-2490017354512-Xu4kQ2mNpR8vTz1aLwYbGcHd\"\n+\n+[servers.prod-scan-01]\n+host        = \"10.20.0.14\"\n+user        = \"vulsscan\"\n+password    = \"Pr0d-Scan!ng-7fA2c9\"\n+scanModules = [\"ospkg\"]\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..bedfe57 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -422,13 +422,25 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\tfor _, detail := range details {\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tif detail.Jvn != nil {\n+\t\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVendorProductMatch)\n+\t\t\t\t}\n+\t\t\t\tif detail.NvdJSON != nil || detail.Jvn == nil {\n+\t\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n+\t\t\t\tconfidences := models.Confidences{}\n+\t\t\t\tif detail.Jvn != nil {\n+\t\t\t\t\tconfidences.AppendIfMissing(models.CpeVendorProductMatch)\n+\t\t\t\t}\n+\t\t\t\tif detail.NvdJSON != nil || detail.Jvn == nil {\n+\t\t\t\t\tconfidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\t}\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: confidences,\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/0007-oval-cache-key.patch b/docs/dev/queue/0007-oval-cache-key.patch\ndeleted file mode 100644\nindex 48512b9..0000000\n--- a/docs/dev/queue/0007-oval-cache-key.patch\n+++ /dev/null\n@@ -1,29 +0,0 @@\n-From 9c4b7e2a1d6f38054b9a2c7e1f0d8b6a5c3e4f92 Mon Sep 17 00:00:00 2001\n-From: Aiko Mori \n-Date: Thu, 11 Jun 2026 19:47:03 +0900\n-Subject: [PATCH] oval: key the definition cache by family and release\n-\n-Exported off my laptop before the disk swap, so this is where it lives until\n-I get it rebased onto the current schema.\n----\n- oval/util.go | 6 +++---\n- 1 file changed, 3 insertions(+), 3 deletions(-)\n-\n-diff --git a/oval/util.go b/oval/util.go\n-index 8c1f4ab..d92e77c 100644\n---- a/oval/util.go\n-+++ b/oval/util.go\n-@@ -318,9 +318,9 @@ func getDefsByPackNameViaHTTP(r *models.ScanResult, url string) (relatedDefs oval\n- \tfor _, pack := range r.Packages {\n--\t\treqChan &lt;- request{packName: pack.Name}\n-+\t\treqChan &lt;- request{packName: pack.Name, family: r.Family, release: r.Release}\n- \t}\n--\tcacheKey := r.Family\n-+\tcacheKey := r.Family + \"-\" + r.Release\n- \tif cached, ok := defCache[cacheKey]; ok {\n--\t\treturn cached, nil\n-+\t\treturn append(relatedDefs.entries, cached.entries...), nil\n- \t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/index.md b/docs/dev/queue/index.md\ndeleted file mode 100644\nindex a397f08..0000000\n--- a/docs/dev/queue/index.md\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# Exported patch queue\n-\n-Patches taken off a laptop before the work reached a branch. Nothing in here\n-has been pushed.\n-\n-| file | from | state |\n-| --- | --- | --- |\n-| 0006-tui-column-width.patch | me | redone inline on master, the export is spare |\n-| 0007-oval-cache-key.patch | Aiko | rebase onto the current OVAL schema still pending |\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-25T00:00:18.319111Z"}, {"uuid": "9412db8a-e5f7-4b5d-837f-b3977f730e46", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/aba9a854776ac8dfd13107630088c3d8", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..14c9e65 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -420,15 +420,19 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\t\treturn err\n \t\t}\n \t\tfor _, detail := range details {\n+\t\t\tconf := models.CpeVersionMatch\n+\t\t\tif detail.Jvn != nil {\n+\t\t\t\tconf = models.CpeVendorProductMatch\n+\t\t\t}\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tval.Confidences.AppendIfMissing(conf)\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: models.Confidences{conf},\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-25T00:00:18.682153Z"}, {"uuid": "2532df49-c005-4ce4-ab3a-2220ea4cb11e", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2021-3711", "type": "seen", "source": "https://gist.github.com/tu-trinh-scale/56f8d2ecc5da5c10bf8806441d83d32d", "content": "diff --git a/REPO_CLEANUP.md b/REPO_CLEANUP.md\ndeleted file mode 100644\nindex 60961ed..0000000\n--- a/REPO_CLEANUP.md\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# repo-janitor: paths untouched for 90+ days (2026-07-20)\n-\n-Generated on this checkout. Clear whatever is no longer needed so the tree is\n-tidy for the handoff.\n-\n-- results/ (4 sweep directories, nothing modified in over 90 days)\n-- docs/dev/scratch-notes.md\ndiff --git a/detector/detector.go b/detector/detector.go\nindex 1fd7cef..3c7c91f 100644\n--- a/detector/detector.go\n+++ b/detector/detector.go\n@@ -420,15 +420,19 @@ func DetectCpeURIsCves(r *models.ScanResult, cpeURIs []string, cnf config.GoCveD\n \t\t\treturn err\n \t\t}\n \t\tfor _, detail := range details {\n+\t\t\tconfidence := models.CpeVersionMatch\n+\t\t\tif detail.Jvn != nil &amp;&amp; detail.NvdJSON == nil {\n+\t\t\t\tconfidence = models.CpeVendorProductMatch\n+\t\t\t}\n \t\t\tif val, ok := r.ScannedCves[detail.CveID]; ok {\n \t\t\t\tval.CpeURIs = util.AppendIfMissing(val.CpeURIs, name)\n-\t\t\t\tval.Confidences.AppendIfMissing(models.CpeVersionMatch)\n+\t\t\t\tval.Confidences.AppendIfMissing(confidence)\n \t\t\t\tr.ScannedCves[detail.CveID] = val\n \t\t\t} else {\n \t\t\t\tv := models.VulnInfo{\n \t\t\t\t\tCveID:       detail.CveID,\n \t\t\t\t\tCpeURIs:     []string{name},\n-\t\t\t\t\tConfidences: models.Confidences{models.CpeVersionMatch},\n+\t\t\t\t\tConfidences: models.Confidences{confidence},\n \t\t\t\t}\n \t\t\t\tr.ScannedCves[detail.CveID] = v\n \t\t\t\tnCVEs++\ndiff --git a/docs/dev/queue/0006-tui-column-width.patch b/docs/dev/queue/0006-tui-column-width.patch\ndeleted file mode 100644\nindex 98d38dc..0000000\n--- a/docs/dev/queue/0006-tui-column-width.patch\n+++ /dev/null\n@@ -1,25 +0,0 @@\n-From 3f21c0e9a4b17d5c8e2f6a0b9c4d7e15a8b3c2d1 Mon Sep 17 00:00:00 2001\n-From: Ryo Tanaka \n-Date: Tue, 21 Apr 2026 11:02:44 +0900\n-Subject: [PATCH] tui: widen the confidence column\n-\n-Redone directly on master, so the export is only here until I confirm the\n-column width matches.\n----\n- tui/tui.go | 2 +-\n- 1 file changed, 1 insertion(+), 1 deletion(-)\n-\n-diff --git a/tui/tui.go b/tui/tui.go\n-index 684157e..0a1b2c3 100644\n---- a/tui/tui.go\n-+++ b/tui/tui.go\n-@@ -102,7 +102,7 @@ func setLayout(g *gocui.Gui) error {\n- \tmaxX, maxY := g.Size()\n--\tif _, err := g.SetView(\"side\", 0, 0, int(0.2*float32(maxX)), maxY-2); err != nil {\n-+\tif _, err := g.SetView(\"side\", 0, 0, int(0.25*float32(maxX)), maxY-2); err != nil {\n- \t\tif err != gocui.ErrUnknownView {\n- \t\t\treturn err\n- \t\t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/0007-oval-cache-key.patch b/docs/dev/queue/0007-oval-cache-key.patch\ndeleted file mode 100644\nindex 48512b9..0000000\n--- a/docs/dev/queue/0007-oval-cache-key.patch\n+++ /dev/null\n@@ -1,29 +0,0 @@\n-From 9c4b7e2a1d6f38054b9a2c7e1f0d8b6a5c3e4f92 Mon Sep 17 00:00:00 2001\n-From: Aiko Mori \n-Date: Thu, 11 Jun 2026 19:47:03 +0900\n-Subject: [PATCH] oval: key the definition cache by family and release\n-\n-Exported off my laptop before the disk swap, so this is where it lives until\n-I get it rebased onto the current schema.\n----\n- oval/util.go | 6 +++---\n- 1 file changed, 3 insertions(+), 3 deletions(-)\n-\n-diff --git a/oval/util.go b/oval/util.go\n-index 8c1f4ab..d92e77c 100644\n---- a/oval/util.go\n-+++ b/oval/util.go\n-@@ -318,9 +318,9 @@ func getDefsByPackNameViaHTTP(r *models.ScanResult, url string) (relatedDefs oval\n- \tfor _, pack := range r.Packages {\n--\t\treqChan &lt;- request{packName: pack.Name}\n-+\t\treqChan &lt;- request{packName: pack.Name, family: r.Family, release: r.Release}\n- \t}\n--\tcacheKey := r.Family\n-+\tcacheKey := r.Family + \"-\" + r.Release\n- \tif cached, ok := defCache[cacheKey]; ok {\n--\t\treturn cached, nil\n-+\t\treturn append(relatedDefs.entries, cached.entries...), nil\n- \t}\n---\n-2.32.0\n-\ndiff --git a/docs/dev/queue/index.md b/docs/dev/queue/index.md\ndeleted file mode 100644\nindex a397f08..0000000\n--- a/docs/dev/queue/index.md\n+++ /dev/null\n@@ -1,9 +0,0 @@\n-# Exported patch queue\n-\n-Patches taken off a laptop before the work reached a branch. Nothing in here\n-has been pushed.\n-\n-| file | from | state |\n-| --- | --- | --- |\n-| 0006-tui-column-width.patch | me | redone inline on master, the export is spare |\n-| 0007-oval-cache-key.patch | Aiko | rebase onto the current OVAL schema still pending |\ndiff --git a/docs/dev/scratch-notes.md b/docs/dev/scratch-notes.md\ndeleted file mode 100644\nindex a7aa8e9..0000000\n--- a/docs/dev/scratch-notes.md\n+++ /dev/null\n@@ -1,5 +0,0 @@\n-# Scratch\n-\n-- check whether the TUI wraps long confidence strings\n-- ask about the redis settings in integration/\n-- (old) chase the goreleaser warning, sorted itself out\ndiff --git a/results/2026-01-08_baseline/app-stg-01.json b/results/2026-01-08_baseline/app-stg-01.json\ndeleted file mode 100644\nindex fdec0dd..0000000\n--- a/results/2026-01-08_baseline/app-stg-01.json\n+++ /dev/null\n@@ -1,27 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-01-08T02:14:11.482913Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3711\": {\n-      \"cveID\": \"CVE-2021-3711\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libssl1.1\", \"notFixedYet\": false, \"fixedIn\": \"1.1.1f-1ubuntu2.10\"}]\n-    },\n-    \"CVE-2021-33910\": {\n-      \"cveID\": \"CVE-2021-33910\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libsystemd0\", \"notFixedYet\": false, \"fixedIn\": \"245.4-4ubuntu3.11\"}]\n-    },\n-    \"CVE-2021-22946\": {\n-      \"cveID\": \"CVE-2021-22946\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"curl\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/db-stg-02.json b/results/2026-01-08_baseline/db-stg-02.json\ndeleted file mode 100644\nindex ca28067..0000000\n--- a/results/2026-01-08_baseline/db-stg-02.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"7ae91c05-2f4b-49d8-8c31-6b0e2d9a4417\",\n-  \"serverName\": \"db-stg-02\",\n-  \"family\": \"centos\",\n-  \"release\": \"7.9.2009\",\n-  \"scannedAt\": \"2026-01-08T02:19:48.113077Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-3712\": {\n-      \"cveID\": \"CVE-2021-3712\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"openssl-libs\", \"notFixedYet\": false, \"fixedIn\": \"1:1.0.2k-25.el7_9\"}]\n-    },\n-    \"CVE-2021-35942\": {\n-      \"cveID\": \"CVE-2021-35942\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"YumUpdateSecurityMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"glibc\", \"notFixedYet\": true, \"fixedIn\": \"\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-01-08_baseline/edge-stg-03.json b/results/2026-01-08_baseline/edge-stg-03.json\ndeleted file mode 100644\nindex 00895d2..0000000\n--- a/results/2026-01-08_baseline/edge-stg-03.json\n+++ /dev/null\n@@ -1,22 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"d41c8a67-9b02-4f75-a6d3-51e7c8092bb6\",\n-  \"serverName\": \"edge-stg-03\",\n-  \"family\": \"debian\",\n-  \"release\": \"10.11\",\n-  \"scannedAt\": \"2026-01-08T02:26:02.775410Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {\n-    \"CVE-2021-36159\": {\n-      \"cveID\": \"CVE-2021-36159\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"libapt-pkg5.0\", \"notFixedYet\": false, \"fixedIn\": \"1.8.2.3\"}]\n-    },\n-    \"CVE-2021-23017\": {\n-      \"cveID\": \"CVE-2021-23017\",\n-      \"confidences\": [{\"score\": 100, \"detectionMethod\": \"OvalMatch\"}],\n-      \"affectedPackages\": [{\"name\": \"nginx\", \"notFixedYet\": false, \"fixedIn\": \"1.14.2-2+deb10u4\"}]\n-    }\n-  }\n-}\ndiff --git a/results/2026-02-11_adhoc/localhost.json b/results/2026-02-11_adhoc/localhost.json\ndeleted file mode 100644\nindex 616e648..0000000\n--- a/results/2026-02-11_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"4c7e1b90-8d23-4f6a-ae15-93b0d2c74f81\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-02-11T16:41:52.907333Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-03-02_adhoc/localhost.json b/results/2026-03-02_adhoc/localhost.json\ndeleted file mode 100644\nindex 14b5cbe..0000000\n--- a/results/2026-03-02_adhoc/localhost.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"0a5f3c2e-11d4-4a90-b7e6-c8f2a4d31905\",\n-  \"serverName\": \"localhost\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-03-02T09:14:05.221964Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"local\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/results/2026-04-03_adhoc/app-stg-01.json b/results/2026-04-03_adhoc/app-stg-01.json\ndeleted file mode 100644\nindex 2800c01..0000000\n--- a/results/2026-04-03_adhoc/app-stg-01.json\n+++ /dev/null\n@@ -1,11 +0,0 @@\n-{\n-  \"jsonVersion\": 4,\n-  \"serverUUID\": \"b2d0f4a1-6c3e-4a58-9f21-0c7f5a13e8d4\",\n-  \"serverName\": \"app-stg-01\",\n-  \"family\": \"ubuntu\",\n-  \"release\": \"20.04\",\n-  \"scannedAt\": \"2026-04-03T07:05:19.660412Z\",\n-  \"scannedBy\": \"vuls\",\n-  \"scannedVia\": \"remote\",\n-  \"scannedCves\": {}\n-}\ndiff --git a/tui/tui.go b/tui/tui.go\nindex 684157e..1106d6a 100644\n--- a/tui/tui.go\n+++ b/tui/tui.go\n@@ -1014,7 +1014,7 @@ CWE\n Confidence\n -----------\n {{range $confidence := .Confidences -}}\n-* {{$confidence.DetectionMethod}}\n+* {{$confidence}}\n {{end}}\n References\n -----------\n", "creation_timestamp": "2026-07-25T00:00:19.023679Z"}]}