Как сканировать пакеты на уязвимости (deb, rpm, pip, apk, npm и другие)

4 мин
Автор PINTA IT
Как сканировать пакеты на уязвимости (deb, rpm, pip, apk, npm и другие)

В данном кейсе, присуствует сложность, что как правило сканеры пакетов наточены под ОС (в частности deb и rpm), в которой они установлены, то есть выполняют сканирование и выявляют уязвимости, там где и запущен сканер, а не из предоставленного списка пакетов или же их расположения.

При поиске решений, был обнаружен хороший вариант от vulners в части проверок rpm и deb пакетов.

Ранее мы уже рассматривали этот инструмент:

Vulners Сканер уязвимостей Linux

Он как раз позволяет сканировать по списку, но в нем существует ограничение по использованию API в количестве 10 раз и только пакеты Linux.

Теперь давайте перейдем к инструменту по теме данной статьи.

Что такое OSS index

Это инструмент безопасности, разработанный SonaType, компанией, которая занимается инфраструктурной и контейнерной безопасностью.

Другими словами, это бесплатный каталог компонентов с открытым исходным кодом и инструментов сканирования, который помогает разработчикам выявлять уязвимости, понимать риски и обеспечивать безопасность своего программного обеспечения.

Помимо перечисленных в заголовке экосистем, он поддерживает огромное количество вариантов:

Вы можете выбрать экосистему, вписать пакет и выполнить поиск.

Прежде всего, стоит отметить наличие REST-API у данного инструмента

https://ossindex.sonatype.org/rest

Главная сложность в том, что апи использует специфический тип пакета в запросе:

[email protected].1, тогда как все привыкли к виду package-1.2.3-3.el7.x86_64

Пример запроса к API (rpm пакет nginx) :

{

"coordinates": [

"pkg:rpm/[email protected]"

]

} 

Пример вывода:

[

  {

    "coordinates": "pkg:rpm/[email protected]",

    "description": "Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and\nIMAP protocols, with a strong focus on high concurrency, performance and low\nmemory usage.",

    "reference": "https://ossindex.sonatype.org/component/pkg:rpm/[email protected]?utm_source=mozilla&utm_medium=integration&utm_content=5.0",

    "vulnerabilities": [

      {

        "id": "b580213d-2931-44cc-9df6-81e204f08941",

        "displayName": "CVE-2016-1247",

        "title": "[CVE-2016-1247]  Improper Link Resolution Before File Access (\"Link Following\")",

        "description": "The nginx package before 1.6.2-5+deb8u3 on Debian jessie, the nginx packages before 1.4.6-1ubuntu3.6 on Ubuntu 14.04 LTS, before 1.10.0-0ubuntu0.16.04.3 on Ubuntu 16.04 LTS, and before 1.10.1-0ubuntu1.1 on Ubuntu 16.10, and the nginx ebuild before 1.10.2-r3 on Gentoo allow local users with access to the web server user account to gain root privileges via a symlink attack on the error log.",

        "cvssScore": 7.8,

        "cvssVector": "CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",

        "cve": "CVE-2016-1247",

        "reference": "https://ossindex.sonatype.org/vuln/b580213d-2931-44cc-9df6-81e204f08941?component-type=rpm&component-name=nginx&utm_source=mozilla&utm_medium=integration&utm_content=5.0"

      },

      {

        "id": "f274354a-2172-4e6c-bbea-7fa8f6d11b9d",

        "displayName": "CVE-2018-16845",

        "title": "[CVE-2018-16845]  Information Exposure",

        "description": "nginx before versions 1.15.6, 1.14.1 has a vulnerability in the ngx_http_mp4_module, which might allow an attacker to cause infinite loop in a worker process, cause a worker process crash, or might result in worker process memory disclosure by using a specially crafted mp4 file. The issue only affects nginx if it is built with the ngx_http_mp4_module (the module is not built by default) and the .mp4. directive is used in the configuration file. Further, the attack is only possible if an attacker is able to trigger processing of a specially crafted mp4 file with the ngx_http_mp4_module.",

        "cvssScore": 6.1,

        "cvssVector": "CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H",

        "cve": "CVE-2018-16845",

        "reference": "https://ossindex.sonatype.org/vuln/f274354a-2172-4e6c-bbea-7fa8f6d11b9d?component-type=rpm&component-name=nginx&utm_source=mozilla&utm_medium=integration&utm_content=5.0"

      },

      {

        "id": "d9854b9b-4f14-4189-b7a5-ac76b8d3ed91",

        "displayName": "CVE-2019-20372",

        "title": "[CVE-2019-20372] NGINX before 1.17.7, with certain error_page configurations, allows HTTP request...",

        "description": "NGINX before 1.17.7, with certain error_page configurations, allows HTTP request smuggling, as demonstrated by the ability of an attacker to read unauthorized web pages in environments where NGINX is being fronted by a load balancer.",

        "cvssScore": 5.3,

        "cvssVector": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N",

        "cve": "CVE-2019-20372",

        "reference": "https://ossindex.sonatype.org/vuln/d9854b9b-4f14-4189-b7a5-ac76b8d3ed91?component-type=rpm&component-name=nginx&utm_source=mozilla&utm_medium=integration&utm_content=5.0"

      },

      {

        "id": "2c973236-d09b-4c7e-bd27-759fd7f04349",

        "displayName": "CVE-2018-16843",

        "title": "[CVE-2018-16843]  Uncontrolled Resource Consumption (\"Resource Exhaustion\")",

        "description": "nginx before versions 1.15.6 and 1.14.1 has a vulnerability in the implementation of HTTP/2 that can allow for excessive memory consumption. This issue affects nginx compiled with the ngx_http_v2_module (not compiled by default) if the 'http2' option of the 'listen' directive is used in a configuration file.",

        "cvssScore": 7.5,

        "cvssVector": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",

        "cve": "CVE-2018-16843",

        "reference": "https://ossindex.sonatype.org/vuln/2c973236-d09b-4c7e-bd27-759fd7f04349?component-type=rpm&component-name=nginx&utm_source=mozilla&utm_medium=integration&utm_content=5.0"

      },

      {

        "id": "4546f147-947b-4628-bf4b-ecfe4f444def",

        "displayName": "CVE-2018-16844",

        "title": "[CVE-2018-16844]  Uncontrolled Resource Consumption (\"Resource Exhaustion\")",

        "description": "nginx before versions 1.15.6 and 1.14.1 has a vulnerability in the implementation of HTTP/2 that can allow for excessive CPU usage. This issue affects nginx compiled with the ngx_http_v2_module (not compiled by default) if the 'http2' option of the 'listen' directive is used in a configuration file.",

        "cvssScore": 7.5,

        "cvssVector": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",

        "cve": "CVE-2018-16844",

        "reference": "https://ossindex.sonatype.org/vuln/4546f147-947b-4628-bf4b-ecfe4f444def?component-type=rpm&component-name=nginx&utm_source=mozilla&utm_medium=integration&utm_content=5.0"

      }

    ]

  }

] 

Такие проверки можно встраивать в пайплайн CI/CD.