{"id":309885,"date":"2020-09-14T09:00:29","date_gmt":"2020-09-14T09:00:29","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=309885"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=309885","title":{"rendered":"\u041e\u0442 Threat Modeling \u0434\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 AWS: 50+ open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 DevOps"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442 \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 Swordfish Security \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e DevOps \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432. \u042f \u0441\u043b\u0435\u0436\u0443 \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 DevSecOps \u0432 \u043c\u0438\u0440\u0435, <a href=\"https:\/\/t.me\/sec_devops\" rel=\"noopener noreferrer nofollow\">\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/a> \u0441\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0443 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u0433\u043e\u0434\u0430 \u0442\u0435\u043c\u0430 DevSecOps \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u041d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441\u0442\u0430\u043b \u0432\u044b\u0445\u043e\u0434 <a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/499676\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437 Mail.ru, \u0433\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Kubernetes. \u042f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u0445\u0432\u0430\u0442\u0438\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u0442\u0430\u043f\u044b \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 SDLC \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u044f \u043f\u0430\u0440\u0443 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/95f\/6fe\/7aa\/95f6fe7aa4b42ba64670cc1b52067294.png\" width=\"1500\" height=\"839\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c  \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 SDLC\/DevOps (Threat modeling, SAST, DAST, SCA, Docker image scanning, Kubernetes scanning, AWS Audit \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#dev\" rel=\"noopener noreferrer nofollow\">Dev<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#threat-modeling\" rel=\"noopener noreferrer nofollow\">Threat Modeling<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#sast\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (SAST)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#sca\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 &#8212; SCA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#secrets\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#dast\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (DAST)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#bdd\" rel=\"noopener noreferrer nofollow\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c Behaviour Driven Development<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#docker-security\" rel=\"noopener noreferrer nofollow\">\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#ops\" rel=\"noopener noreferrer nofollow\">Ops<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#kubernetes-security\" rel=\"noopener noreferrer nofollow\">Kubernetes Security<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#vulns\" rel=\"noopener noreferrer nofollow\">Vulnerability Management<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#aws-security\" rel=\"noopener noreferrer nofollow\">Public Cloud Security<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#more\" rel=\"noopener noreferrer nofollow\">\u0418 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435?<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b5a\/a59\/52f\/b5aa5952f83ffe42e95d8dad2285b8e0.png\" alt=\"\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a DevSecOps. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/holisticsecurity.io\/2020\/02\/10\/security-along-the-container-based-sdlc\" title=\"\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a DevSecOps. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/holisticsecurity.io\/2020\/02\/10\/security-along-the-container-based-sdlc\" width=\"1980\" height=\"795\"><figcaption>\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a DevSecOps. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/holisticsecurity.io\/2020\/02\/10\/security-along-the-container-based-sdlc<\/figcaption><\/figure>\n<\/p>\n<p><a class=\"anchor\" name=\"dev\" id=\"dev\"><\/a><\/p>\n<h2>Dev<\/h2>\n<p><a class=\"anchor\" name=\"threat-modeling\" id=\"threat-modeling\"><\/a><\/p>\n<h3>Threat Modeling<\/h3>\n<p>\u041c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0433\u0440\u043e\u0437 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Secure Development Lifecycle \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u041f\u041e \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432 \u043d\u0435\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0418\u0411 \u0435\u0449\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u044d\u0442\u0430\u043f\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u043e\u0439\u0434\u0443\u0442 \u0432 backlog. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0435\u0442\u0441\u044f, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445 DevSecOps \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u201cShift security to the left\u201d. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0448\u0435\u043b \u043c\u0435\u0441\u0442\u043e \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 IT-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u043b open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c.<\/p>\n<h4>OWASP Threat Dragon<\/h4>\n<p><a href=\"https:\/\/owasp.org\/www-project-threat-dragon\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 OWASP Threat Dragon <\/em><\/a><\/p>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u041f\u041e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043d\u0430 \u043d\u0435\u0439 \u0443\u0433\u0440\u043e\u0437\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 STRIDE. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442\u043b\u0430\u0436\u0435\u043d\u044b, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f <a href=\"https:\/\/github.blog\/2020-09-02-how-we-threat-model\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437 \u0432 GitHub.<\/a><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a9\/450\/44c\/0a945044c6bde92ab2d3bb68f4133be7\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Threat Dragon\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Threat Dragon\" width=\"1000\" height=\"574\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Threat Dragon<\/figcaption><\/figure>\n<h4>Pytm<\/h4>\n<p><a href=\"https:\/\/github.com\/izar\/pytm\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Pytm<\/em><\/a><\/p>\n<p>Pytm &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Python \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0433\u0440\u043e\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Pytm \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0445\u0435\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a20\/eb7\/de3\/a20eb7de3aaca103f566cbd2457a7a73\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 Pytm \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 Pytm \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 \" width=\"1096\" height=\"603\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 Pytm \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 <\/figcaption><\/figure>\n<h4>Materialize threats tool <\/h4>\n<p><a href=\"https:\/\/github.com\/secmerc\/materialize_threats\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <\/em>Materialize threats tool <\/a><\/p>\n<p>Materialize-threats &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u041f\u041e \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 draw.io \u0432 \u0433\u0440\u0430\u0444\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0431\u0430\u0437\u0443 \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u0438\u0445 \u0433\u0440\u0430\u0444\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0443\u043c\u0435\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u043d\u0430 Gherkin.<\/p>\n<p>\u042d\u0442\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u043a\u0443\u0434\u0430 \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Enterpise-\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0443\u0433\u0440\u043e\u0437 \u0432\u0440\u043e\u0434\u0435<a href=\"https:\/\/iriusrisk.com\/\" rel=\"noopener noreferrer nofollow\"> Irius Risks<\/a>.<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 .drawio, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u0430\u0448\u0435\u043c\u0443 data flow<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0437\u043e\u043d \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/github.com\/geoffrey-hill-tutamantic\/rapid-threat-model-prototyping-docs\" rel=\"noopener noreferrer nofollow\">Rapid Threat Model Prototyping methodology<\/a>(\u0432 readme \u0435\u0441\u0442\u044c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .drawio<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a materialize.py \u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0430 .drawio<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0433\u0440\u043e\u0437 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/cucumber.io\/docs\/gherkin\/\" rel=\"noopener noreferrer nofollow\">Gherkin<\/a>. <\/p>\n<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/087\/d45\/198\/087d45198f47dff46a1a9a4ba2596e81\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 draw.io \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Materialize threats tool \" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 draw.io \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Materialize threats tool \" width=\"771\" height=\"461\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 draw.io \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Materialize threats tool <\/figcaption><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d1a\/8c9\/c85\/d1a8c9c858d1a4465b7c8a5f22ad0813\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Materialize threats tool \" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Materialize threats tool \" width=\"1870\" height=\"1216\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Materialize threats tool <\/figcaption><\/figure>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u043b\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0438\u0431\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0439.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/threatspec\/threatspec%20\" rel=\"noopener noreferrer nofollow\">Threatspec<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/devsecops\/raindance\" rel=\"noopener noreferrer nofollow\">Raindance<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-gb\/azure\/security\/develop\/threat-modeling-tool\" rel=\"noopener noreferrer nofollow\">Microsoft Threat Modeling Tool<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0443\u0433\u0440\u043e\u0437, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u0443\u0440\u0441\u044b, \u043a\u043d\u0438\u0433\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/hysnsec\/awesome-threat-modelling\" rel=\"noopener noreferrer nofollow\">Awesome threat modeling<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"sast\" id=\"sast\"><\/a><\/p>\n<h3>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (SAST):<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u044d\u0442\u0430\u043f\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u043e\u0434\u0430 . \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u0434\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/owasp.org\/www-community\/Source_Code_Analysis_Tools\" rel=\"noopener noreferrer nofollow\">OWASP Source Code Analysis Tools<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/analysis-tools-dev\/static-analysis%20\" rel=\"noopener noreferrer nofollow\">Static Analysis Tools <\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h4>Salus  <\/h4>\n<p><a href=\"https:\/\/github.com\/coinbase\/salus\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Salus<\/em><\/a><\/p>\n<p>\u041e\u0431\u0440\u0430\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0432\u0440\u043e\u0434\u0435 Bandit, Gosec, Brakeman, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (Ruby,Node.js, Python,Go). \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"r\"># Navigate to the root directory of the project you want to run Salus on $ cd \/path\/to\/repo  # Run the following line while in the root directory (No edits necessary) $ docker run --rm -t -v $(pwd):\/home\/repo coinbase\/salus<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c JSON\/YAML \u043e\u0442\u0447\u0435\u0442. \u041d\u0430 GitHub \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/coinbase\/salus#circleci-integration\" rel=\"noopener noreferrer nofollow\">CircleCI<\/a>.<\/p>\n<h4>ShiftLeft Scan <\/h4>\n<p><a href=\"https:\/\/github.com\/ShiftLeftSecurity\/sast-scan\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 ShiftLeft Scan<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 Salus, \u043d\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. \u0412 \u0440\u0435\u043f\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u044b \u0432 docker \u043e\u0431\u0440\u0430\u0437 (gosec, find-sec-bugs, psalm, bandit, \u2026). \u0412 \u043e\u0431\u0440\u0430\u0437 Docker \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b terraform, bash, kubernetes \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 Python \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"r\">$ docker run --rm -e \"WORKSPACE=${PWD}\" -v \"$PWD:\/app\" shiftleft\/sast-scan scan --src \/app --type python<\/code><\/pre>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 IDE.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a80\/f5f\/2c8\/a80f5f2c8388b483759fc023322fa6ae\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 VS Code \u0434\u043b\u044f ShiftLeft\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 VS Code \u0434\u043b\u044f ShiftLeft\" width=\"1537\" height=\"963\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 VS Code \u0434\u043b\u044f ShiftLeft<\/figcaption><\/figure>\n<h4>GitLab SAST <\/h4>\n<p><a href=\"https:\/\/docs.gitlab.com\/ee\/user\/application_security\/sast\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 SAST \u0432 GitLab<\/em><\/a><\/p>\n<p>Gitlab \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 DevOps \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043d\u043e \u0447\u0442\u043e \u0435\u0449\u0435 \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c, \u0442\u0430\u043a \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u043d\u044b\u0445 open-source SAST, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d. \u0412 Gitlab \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c SCA, \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, fuzzing \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 DevSecOps, \u043d\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Gold-\u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a77\/fd5\/c40\/a77fd5c406b4303ced21f34d479545ae\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f SAST \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d GitLab.\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f SAST \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d GitLab.\" width=\"611\" height=\"586\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f SAST \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d GitLab.<\/figcaption><\/figure>\n<h4>LGTM<\/h4>\n<p><a href=\"https:\/\/semmle.com\/lgtm\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 LGTM <\/em><\/a><\/p>\n<p>LGTM &#8212; \u043e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Semmle, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u0442\u0430\u043b\u0430 <a href=\"https:\/\/blog.semmle.com\/secure-software-github-semmle\/\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0441\u0442\u044c\u044e GitHub<\/a>. Semmle \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/semmle.com\/codeql\" rel=\"noopener noreferrer nofollow\">CodeQL<\/a><a href=\"https:\/\/semmle.com\/codeql),\" rel=\"noopener noreferrer nofollow\">,<\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <a href=\"https:\/\/github.blog\/2020-05-06-new-from-satellite-2020-github-codespaces-github-discussions-securing-code-in-private-repositories-and-more\/\" rel=\"noopener noreferrer nofollow\">\u0431\u044b\u043b\u043e \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e<\/a> GitHub \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Satellite.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e0\/f7d\/4f5\/8e0f7d4f53b3e716f847e7dcaf621ed6\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 LGTM\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 LGTM\" width=\"1235\" height=\"531\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 LGTM<\/figcaption><\/figure>\n<h4>Semgrep<\/h4>\n<p><a href=\"https:\/\/semgrep.dev\/editor%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Semgrep<\/em><\/a><\/p>\n<p>\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f AST \u0438 Data flow, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"r\">$ semgrep --config=&amp;lt;path\/to\/config&gt; path\/to\/src<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f semgrep \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<pre><code class=\"markdown\">rules: - id: user-eval   patterns:   - pattern-inside: |       def $F(...):         ...   - pattern-either:     - pattern: eval(..., request.$W.get(...), ...)     - pattern: |         $V = request.$W.get(...)         ...         eval(..., $V, ...)     - pattern: eval(..., request.$W(...), ...)     - pattern: |         $V = request.$W(...)         ...         eval(..., $V, ...)     - pattern: eval(..., request.$W[...], ...)     - pattern: |         $V = request.$W[...]         ...         eval(..., $V, ...)<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Semgrep \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 \u0442\u0435\u0445, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0438\u0436\u0435 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 (\u0436\u0435\u043b\u0442\u044b\u043c \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 semgrep \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u043c\u0438):<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4ae\/10c\/3ee\/4ae10c3ee68afb9b750e040733399d60\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 Semgrep \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 Semgrep \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\" width=\"420\" height=\"463\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 Semgrep \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430<\/figcaption><\/figure>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 SAST, \u0442\u0430\u043a \u044d\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 CWE \u043a \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f\u043c, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0437\u043d\u0430\u044e, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043a CWE \u0438 CVE.<\/p>\n<p><a class=\"anchor\" name=\"sca\" id=\"sca\"><\/a><\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 &#8212; SCA <\/h3>\n<p>\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0442\u0435\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c open-source, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 (\u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Equifax). \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 SCA \u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/516660\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0430 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<h4>Dependency Check<\/h4>\n<p><a href=\"https:\/\/github.com\/jeremylong\/DependencyCheck%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Dependency Check<\/em><\/a><\/p>\n<p>Dependency Check &#8212; \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 open-source \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0442 OWASP \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 . \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439, \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, \u043d\u043e \u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0433\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b Secure SDLC \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0438 \u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0418\u0411 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \u0423 Dependency Check \u043d\u0435\u0442 \u0435\u0434\u0438\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u044b, \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 Dependency Track.<\/p>\n<pre><code class=\"r\"># Dependency Check Maven Plugin example $ mvn org.owasp:dependency-check-maven:check<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/34c\/335\/b3e\/34c335b3e2cd8cf7fede1f6dc8144164\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 HTML-\u043e\u0442\u0447\u0435\u0442\u0430 Dependency Check\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 HTML-\u043e\u0442\u0447\u0435\u0442\u0430 Dependency Check\" width=\"1928\" height=\"757\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 HTML-\u043e\u0442\u0447\u0435\u0442\u0430 Dependency Check<\/figcaption><\/figure>\n<h4>Dependency Track<\/h4>\n<p><a href=\"https:\/\/dependencytrack.org\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Dependency Track<\/em><\/a><\/p>\n<p>Dependency Track &#8212; \u0432\u0442\u043e\u0440\u043e\u0435 \u043f\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442 OWASP, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u0432\u0435\u0431-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0443\u044e \u043d\u0430 \u0432\u0445\u043e\u0434 Software bill of materials (SBOM) \u043e\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 <a href=\"https:\/\/cyclonedx.org\" rel=\"noopener noreferrer nofollow\">CycloneDx<\/a>. Dependency Track \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u0435\u0442 BOM, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, NVD. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u043e Slack, Microsoft Teams, \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u043d\u0430 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u043e\u043d\u043d\u0443\u044e \u0447\u0438\u0441\u0442\u043e\u0442\u0443.<\/p>\n<pre><code class=\"r\"># CycloneDx Maven Plugin example to make SBOM $ mvn org.cyclonedx:cyclonedx-maven-plugin:makeAggregateBom<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c5e\/8f5\/b8f\/c5e8f5b8f131375edfbb06a75596f627\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Dependency Track.\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Dependency Track.\" width=\"1024\" height=\"647\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Dependency Track.<\/figcaption><\/figure>\n<h4>Snyk Open-source<\/h4>\n<p><a href=\"https:\/\/snyk.io\/product\/open-source-security-management\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 Snyk Open-source<\/em><\/a><\/p>\n<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Snyk \u043a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443 \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u0432 \u0432\u0438\u0434\u0435 SaaS-\u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041f\u0440\u043e\u0435\u043a\u0442\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043a\u0430\u043a \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 (GitHub, Bitbucket), \u0442\u0430\u043a \u0438 \u0447\u0435\u0440\u0435\u0437 CLI.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/26a\/633\/c82\/26a633c82e3d88f8d293e5cedc4ef638\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 SaaS-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Snyk open-source \u0434\u043b\u044f Python-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 SaaS-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Snyk open-source \u0434\u043b\u044f Python-\u043f\u0440\u043e\u0435\u043a\u0442\u0430\" width=\"1928\" height=\"890\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 SaaS-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Snyk open-source \u0434\u043b\u044f Python-\u043f\u0440\u043e\u0435\u043a\u0442\u0430<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 snyk \u0434\u043b\u044f npm:<\/p>\n<pre><code class=\"r\">$ npm install -g snyk $ snyk auth $ snyk monitor<\/code><\/pre>\n<h4>Sonatype Open-source<\/h4>\n<p>\u041f\u043e\u043c\u0438\u043c\u043e NVD (\u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u0445 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u0439) \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u0430\u0437\u0430 Sonatype OSS, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u0430\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Sonatype, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 Nexus IQ. \u041c\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u0437\u044f\u043b\u0438 \u043d\u0430 \u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u0438\u0435 Nexus IQ \u043a\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 SCA \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432. Sonatype OSS &#8212; \u0431\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 Dependency Check \u0438 Dependency Track. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, Sonatype \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b SCA, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u0431\u0435\u0440\u0443\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Sonatype OSS:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.sonatype.com\/appscan\" rel=\"noopener noreferrer nofollow\">Nexus Vulnerability Scanner<\/a> &#8212; \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0430\u043d\u0435\u0440 \u043e\u0442 Sonatype<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/auditjs\" rel=\"noopener noreferrer nofollow\">AuditJS<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 JS (NPM, Angular, yarn, bower)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/nancy\" rel=\"noopener noreferrer nofollow\">Nancy<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 Golang<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/Jake\" rel=\"noopener noreferrer nofollow\">Jake<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 Conda<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/Chelsea\" rel=\"noopener noreferrer nofollow\">Chelsea<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 Ruby<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/Cheque\" rel=\"noopener noreferrer nofollow\">Cheque<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 C\/C++ (GCC)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/Ahab\" rel=\"noopener noreferrer nofollow\">Ahab<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 apt, apk, yum, dnf \u043f\u0430\u043a\u0435\u0442\u043e\u0432<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/sonatype-nexus-community\/cargo-pants\" rel=\"noopener noreferrer nofollow\">Pants<\/a> &#8212; \u0441\u043a\u0430\u043d\u0435\u0440 Rust (Cargo)<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.sonatype.com\/depshield\" rel=\"noopener noreferrer nofollow\">Sonatype Depshield <\/a>&#8212; \u0441\u043a\u0430\u043d\u0435\u0440 GitHub \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1cd\/f80\/ec4\/1cdf80ec423d63d221c08e1f94e90ff2\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u043e\u0442\u0447\u0435\u0442\u0430 Nexus Vulnerability Scanner\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u043e\u0442\u0447\u0435\u0442\u0430 Nexus Vulnerability Scanner\" width=\"1928\" height=\"1301\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u043e\u0442\u0447\u0435\u0442\u0430 Nexus Vulnerability Scanner<\/figcaption><\/figure>\n<p>\u0414\u0440\u0443\u0433\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043f\u043e SCA:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/owasp.org\/www-community\/Component_Analysis%20\" rel=\"noopener noreferrer nofollow\">\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 SCA \u043e\u0442 OWASP<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/clearlydefined.io\/?sortDesc=true&amp;sort=releaseDate\" rel=\"noopener noreferrer nofollow\">ClearlyDefined<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/renovate.whitesourcesoftware.com\/\" rel=\"noopener noreferrer nofollow\">Renovate<\/a> &#8212; \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0442 White Source<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/dependabot.com\/\" rel=\"noopener noreferrer nofollow\">Dependabot<\/a> &#8212; \u0431\u043e\u0442 GitHub \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 open-source \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 GitHub<\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"secrets\" id=\"secrets\"><\/a><\/p>\n<h3>\u041f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/h3>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0434\u043e\u043f\u0443\u0449\u0435\u043d\u044b \u0432 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430\u0445, \u043d\u043e \u0441\u0435\u043a\u0440\u0435\u0442\u044b \u0432\u0440\u043e\u0434\u0435 \u043f\u0430\u0440\u043e\u043b\u0435\u0439, \u0442\u043e\u043a\u0435\u043d\u043e\u0432, \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0445 \u043a\u043b\u044e\u0447\u0435\u0439. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u0434\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442 \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445, \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0435\u0433\u043e \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043d\u0435\u0436\u0435\u043b\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0421 \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u044c\u044e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u044f\u0434 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c \u043e\u0442\u044b\u0441\u043a\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0441\u0435\u043a\u0440\u0435\u0442\u044b. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u043d\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u043b\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f, \u0438\u0431\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0435\u0437\u0434\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0439.<\/p>\n<h4>git-secrets<\/h4>\n<p><a href=\"https:\/\/github.com\/awslabs\/git-secrets\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0441\u0430\u0439\u0442\u0435 git-secrets<\/em><\/a><\/p>\n<pre><code class=\"r\">$ git secrets --scan \/path\/to\/file<\/code><\/pre>\n<h4>Gitrob<\/h4>\n<p><a href=\"https:\/\/github.com\/michenriksen\/gitrob\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 gitrob<\/em><\/a><\/p>\n<pre><code class=\"r\">$ export GITROB_ACCESS_TOKEN=&amp;lt;TOKEN&gt; $ gitrob &amp;lt;target&gt;<\/code><\/pre>\n<h4>Gitleaks<\/h4>\n<p><a href=\"https:\/\/github.com\/zricethezav\/gitleaks\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 gitleaks<\/em><\/a><\/p>\n<pre><code class=\"r\">$ gitleaks --repo-path=&amp;lt;path to repo&gt; $ gitleaks --repo=&amp;lt;url of github&gt;<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/marketplace\/actions\/gitleaks\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u0434\u0435 Github-action. <\/a><\/p>\n<h4>TruffleHog<\/h4>\n<p><a href=\"https:\/\/github.com\/dxa4481\/truffleHog\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 TruffleHog<\/em><\/a><\/p>\n<pre><code class=\"r\">$ trufflehog [-h] [--json] [--regex] [--rules RULES]                   [--entropy DO_ENTROPY] [--since_commit SINCE_COMMIT]                   [--max_depth MAX_DEPTH]                   git_url<\/code><\/pre>\n<p>TruffleHog &#8212; \u0441\u0430\u043c\u044b\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u043a\u0430\u043a \u043f\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c, \u0442\u0430\u043a \u0438 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u044f \u043a \u043e\u0446\u0435\u043d\u043a\u0438 \u044d\u043d\u0442\u0440\u043e\u043f\u0438\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u0428\u0435\u043d\u043d\u043e\u043d\u0430.<\/p>\n<h4>GitGuardian  <\/h4>\n<p><a href=\"https:\/\/www.gitguardian.com\/community\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitGuardian<\/em><\/a><\/p>\n<p>SaaS \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432. \u0415\u0441\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0430\u044f on-prem \u0432\u0435\u0440\u0441\u0438\u044f. \u0412 \u0420\u043e\u0441\u0441\u0438\u0438 \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0435\u0442\u0441\u044f.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cbf\/dd7\/808\/cbfdd7808d4b66bc73ec7f4ac1d5088c\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GitGuardian\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GitGuardian\" width=\"1280\" height=\"532\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GitGuardian<\/figcaption><\/figure>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432 \u0438 \u0441\u043e\u043a\u0440\u044b\u0442\u0438\u044f \u0438\u0445 \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Password Vault (HashiCorp Vault, conjur, \u2026)<\/p>\n<p><a class=\"anchor\" name=\"dast\" id=\"dast\"><\/a><\/p>\n<h3>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (DAST):<\/h3>\n<h4>Arachni<\/h4>\n<p><a href=\"https:\/\/github.com\/Arachni\/arachni%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Arachni<\/em><\/a><\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u043c\u043e\u0438\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 open-source \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430 \u0441\u0432\u043e\u044e \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 Docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, CLI \u0438 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430. \u0416\u0430\u043b\u044c, \u0447\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b\u043e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432\u044b\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0432 CWE-\u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/218\/bce\/902\/218bce90263c4ff179ab77780cf3635e\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Arachni\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Arachni\" width=\"750\" height=\"452\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 Arachni<\/figcaption><\/figure>\n<p>\u0421\u043f\u043e\u0441\u043e\u0431 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Docker:<\/p>\n<pre><code class=\"r\">$ docker run -d \\     -p 222:22 \\     -p 7331:7331 \\     -p 9292:9292 \\     --name arachni \\     arachni\/arachni:latest<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0437\u0430\u043f\u0443\u0441\u043a \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u0442\u0447\u0435\u0442\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 REST API \u043f\u043e \u043f\u043e\u0440\u0442\u0443 7331 \u0432 \u0432\u0438\u0434\u0435 json.<\/p>\n<h4>OWASP ZAP <\/h4>\n<p><a href=\"https:\/\/github.com\/zaproxy\/zaproxy%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 OWASP ZAP<\/em><\/a><\/p>\n<p>\u041e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 open-source \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0432 CI\/CD.  \u0418\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439 GUI, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e \u0432 \u0432\u0438\u0434\u0435 CLI \u0438\u043b\u0438 docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u043a\u0441\u0438. <\/p>\n<pre><code class=\"r\"># OWASP ZAP as a daemon docker run -p 8090:8090 -i owasp\/zap2docker-stable zap.sh -daemon -port 8090 -host 0.0.0.0 # OWASP ZAP runs for 1  minute and then waits for the passive scanning to complete before reporting the results. docker run -t owasp\/zap2docker-weekly zap-baseline.py -t https:\/\/www.example.com<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/acf\/6da\/689\/acf6da689294d36ea796d04f3f5222e9\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GUI OWASP ZAP\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GUI OWASP ZAP\" width=\"1280\" height=\"720\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 GUI OWASP ZAP<\/figcaption><\/figure>\n<p>\u0415\u0441\u0442\u044c \u0434\u0430\u0436\u0435 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f <a href=\"https:\/\/github.com\/banzaicloud\/dast-operator\" rel=\"noopener noreferrer nofollow\">\u0432 \u0432\u0438\u0434\u0435 Kubernetes-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/a>.<\/p>\n<p>\u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043e\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u043e\u0435. \u041f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 Arachni \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 10 \u043c\u0438\u043d\u0443\u0442, ZAP \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430 \u043f\u0430\u0440\u0443 \u043c\u0438\u043d\u0443\u0442, \u043e\u0434\u043d\u0430\u043a\u043e \u0437\u0430 \u0442\u0430\u043a\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u043d\u0435 \u0441\u0430\u043c\u044b\u043c \u0442\u043e\u0447\u043d\u044b\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c.<\/p>\n<h4>w3af <\/h4>\n<p><a href=\"https:\/\/github.com\/andresriancho\/w3af%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 w3af<\/em><\/a><\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u0430\u0432\u043d\u043e \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u043d\u0435 \u043e\u0431\u043e\u0437\u0440\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0432\u0435\u0436\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 \u0425\u0430\u043a\u0435\u0440 \u0434\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f 2012 \u0433\u043e\u0434\u043e\u043c (https:\/\/xakep.ru\/2012\/11\/09\/w3af-pentest\/)), \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0435\u0441\u0442\u044c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438 \u043f\u043e \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044e \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0432 CI\/CD<\/p>\n<p><a href=\"https:\/\/devsecops-pipelines.ayushpriya.tech\/moving_setuhttps:\/\/sourceforge.net\/p\/wapiti\/git\/ci\/master\/tree\" rel=\"noopener noreferrer nofollow\">\u0412\u043e\u0442 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/a>, \u0430\u0432\u0442\u043e\u0440 \u0432\u0441\u0442\u0440\u043e\u0438\u043b \u0440\u0430\u0437\u043d\u044b\u0435 open-source \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d Jenkins \u043d\u0430 AWS, \u0432\u043a\u043b\u044e\u0447\u0430\u044f w3af.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 docker:<\/p>\n<pre><code class=\"r\">$ git clone https:\/\/github.com\/andresriancho\/w3af.git $ cd w3af\/extras\/docker\/scripts\/ $ sudo .\/w3af_console_docker<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7b6\/003\/cc1\/7b6003cc158e3058444d3e448ec9820d\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 w3af. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/xakep.ru\/2012\/11\/09\/w3af-pentest\/\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 w3af. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/xakep.ru\/2012\/11\/09\/w3af-pentest\/\" width=\"1280\" height=\"774\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 w3af. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/xakep.ru\/2012\/11\/09\/w3af-pentest\/<\/figcaption><\/figure>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c <a href=\"https:\/\/github.com\/analysis-tools-dev\/dynamic-analysis\/%20\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0421\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c \u043f\u0440\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 enterprise, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432\u0435\u0441\u044c\u043c\u0430 \u043c\u0430\u043b\u043e. \u041c\u044b \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 DAST \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p><a class=\"anchor\" name=\"bdd\" id=\"bdd\"><\/a><\/p>\n<h3>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c Behaviour Driven Development<\/h3>\n<p>Behavioral Driven Development (BDD) (\u0438\u043b\u0438 \u201c\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u201d)- \u043f\u043e\u0434\u0445\u043e\u0434 \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u041f\u041e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u0435\u043b \u043e\u0442 Test Driven Development (TDD) (\u201c\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u201d). \u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u044d\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044b, \u043a\u0430\u043a \u0438\u0442\u043e\u0433, \u0441\u0442\u0430\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0438 \u0432 \u0441\u0444\u0435\u0440\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044f BDD \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u043e-\u0447\u0438\u0442\u0430\u0435\u043c\u043e\u0435\u0433\u043e \u044f\u0437\u044b\u043a\u0430  <a href=\"https:\/\/github.com\/cucumber\/gherkin\" rel=\"noopener noreferrer nofollow\">Gherkin<\/a>.<\/p>\n<p>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u0440\u0430\u0437\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<h4>Gauntlt<\/h4>\n<p><a href=\"https:\/\/github.com\/gauntlt\/gauntlt%20\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Gauntlt<\/a><\/p>\n<p>Guantlt &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u044e Behavioral Driven Development. \u041e\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u0442\u044c Arachni, nmap, sslyze, sqlmap \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 <a href=\"https:\/\/github.com\/cucumber\/gherkin\" rel=\"noopener noreferrer nofollow\">Gherkin<\/a>. <\/p>\n<pre><code class=\"r\"># nmap-simple.attack Feature: simple nmap attack to check for open ports    Background:     Given \"nmap\" is installed     And the following profile:       | name     | value       |       | hostname | example.com |    Scenario: Check standard web ports     When I launch an \"nmap\" attack with:       \"\"\"       nmap -F &lt;hostname&gt;       \"\"\"     Then the output should match \/80.tcp\\s+open\/     Then the output should not match:       \"\"\"       25\\\/tcp\\s+open       \"\"\"<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, Guantlt \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u201c\u043c\u043e\u0441\u0442\u0438\u043a\u043e\u043c\u201d \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430. <\/p>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435.  <\/strong>\u0410\u043d\u0430\u043b\u043e\u0433\u043e\u043c Guantlt \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/iriusrisk\/bdd-security\" rel=\"noopener noreferrer nofollow\">BDD-Security<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0438\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 OWASP ZAP, Tenable Nessus Scanner.<\/p>\n<p><a class=\"anchor\" name=\"docker-security\" id=\"docker-security\"><\/a><\/p>\n<h3>\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker:<\/h3>\n<p>\u0412 \u0441\u0438\u043b\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u0441\u0435 \u0447\u0430\u0449\u0435 \u0441\u0442\u0430\u043b\u0438 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0442\u044c \u043a \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Docker (\u0434\u0430 \u0438 \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435 Docker \u0441\u0442\u0430\u043b \u0432\u0430\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e DevOps), \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0441\u043a\u0430\u043d\u0435\u0440\u044b Docker-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f <a href=\"https:\/\/swordfishsecurity.ru\/blog\/obzor-utilit-bezopasnosti-docker\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u041f\u0440\u043e\u0439\u0434\u0435\u043c\u0441\u044f \u043f\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0438\u0437 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<h4>Clair<\/h4>\n<p><a href=\"https:\/\/github.com\/quay\/clair%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Clair<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u043b\u043e\u0435\u0432 \u043e\u0431\u0440\u0430\u0437\u0430 \u043d\u0430 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 CVE \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438. \u0423 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 UI \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435 Klar.<\/p>\n<pre><code class=\"r\">$ docker run -d -e POSTGRES_PASSWORD=\"\" -p 5432:5432 postgres:9.6 $ docker run --net=host -d -p 6060-6061:6060-6061 -v $PWD\/clair_config:\/config quay.io\/coreos\/clair:latest -config=\/config\/config.yaml<\/code><\/pre>\n<h4>Klar <\/h4>\n<p><a href=\"https:\/\/github.com\/optiopay\/klar\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Klar<\/em><\/a><\/p>\n<p>\u0423\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 API Clair.<\/p>\n<pre><code class=\"smalltalk\">$ mkdir klar &amp;amp;&amp;amp; cd klar &amp;amp;&amp;amp; wget https:\/\/github.com\/optiopay\/klar\/releases\/download\/v2.4.0\/klar-2.4.0-linux-amd64 -O klar &amp;amp;&amp;amp; chmod +x klar $ CLAIR_ADDR=http: \/\/localhost:6060 CLAIR_THRESHOLD=10 .\/klar &amp;lt;docker image&gt;<\/code><\/pre>\n<h4>Trivy <\/h4>\n<p><a href=\"https:\/\/github.com\/aquasecurity\/trivy%20\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Trivy<\/a><\/p>\n<p>Trivy \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043e\u043a \u041e\u0421 (\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f Alpine, RedHat (EL), CentOS, Debian GNU, Ubuntu) \u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445 (Gemfile.lock, Pipfile.lock, composer.lock, package-lock.json, yarn.lock, Cargo.lock) \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 Clair \u0443\u043c\u0435\u0435\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438, \u0442\u0430\u043a \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e, \u0438\u043b\u0438 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u043e\u0433\u043e .tar \u0444\u0430\u0439\u043b\u0430 \u0441 Docker \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<pre><code class=\"r\"># Download bin $ wget https: \/\/github.com\/knqyf263\/trivy\/releases\/download\/v0.1.3\/trivy_0.1.3_Linux-64bit.deb $ dpkg -i .\/trivy_0. 1 .3_Linux-64bit.deb # Scan image $ trivy bkimminich\/juice-shop # Scan image in tar $ trivy -i .\/ my_saved_docker_image.tar<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7fc\/af2\/c46\/7fcaf2c46a046e0fdbe592833da5cbd7\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Trivy\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Trivy\" width=\"1146\" height=\"801\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Trivy<\/figcaption><\/figure>\n<h4>Anchore <\/h4>\n<p><a href=\"https:\/\/github.com\/anchore\/anchore-cli%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Anchore<\/em><\/a><\/p>\n<p>\u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker. \u0415\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0447\u0435\u0440\u0435\u0437 REST API \u0438\u043b\u0438 CLI.<\/p>\n<pre><code class=\"r\">$ anchore-cli --u admin --p foobar image add httpd:latest $ anchore-cli --u admin --p foobar image vuln httpd:latest all<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d7\/da7\/bb5\/9d7da7bb5a5ad686bfb624b1610ae151\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Anchore. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/swordfishsecurity.ru\/blog\/obzor-utilit-bezopasnosti-docker\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Anchore. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/swordfishsecurity.ru\/blog\/obzor-utilit-bezopasnosti-docker\" width=\"1702\" height=\"452\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Anchore. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/swordfishsecurity.ru\/blog\/obzor-utilit-bezopasnosti-docker<\/figcaption><\/figure>\n<h4>AquaMicroscanner <\/h4>\n<p><a href=\"https:\/\/github.com\/aquasecurity\/microscanner%20\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 AquaMicroscanner<\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442 Aqua Security, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 Trivy. <\/p>\n<pre><code class=\"r\">$ docker run --rm -it aquasec\/microscanner --register &amp;lt;email address&gt;<\/code><\/pre>\n<pre><code class=\"r\">ADD https:\/\/get.aquasec.com\/microscanner \/ RUN chmod +x \/microscanner RUN \/microscanner &amp;lt;TOKEN&gt; [--continue-on-failure]<\/code><\/pre>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435.<\/strong> \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u043d\u0430 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 CVE \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/medium.com\/@matuzg\/testing-docker-cve-scanners-part-1-false-negatives-and-what-they-mean-for-your-security-77fc4eb1b2cf\" rel=\"noopener noreferrer nofollow\">Testing docker CVE scanners. Part 1: false negatives and what they mean for your security<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/medium.com\/@matuzg\/testing-docker-cve-scanners-part-2-how-good-is-package-detection-f68d7230b830\" rel=\"noopener noreferrer nofollow\">Testing Docker CVE Scanners. Part 2: How good is package detection?<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/medium.com\/@matuzg\/testing-docker-cve-scanners-part-2-5-exploiting-cve-scanners-b37766f73005\" rel=\"noopener noreferrer nofollow\">Testing docker CVE scanners. Part 2.5 \u2014 Exploiting CVE scanners<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/medium.com\/@matuzg\/testing-docker-cve-scanners-part-3-test-it-yourself-conclusions-6de868124d3d\" rel=\"noopener noreferrer nofollow\">Testing Docker CVE scanners. Part 3: Test it yourself \/ Conclusions<\/a><\/p>\n<\/li>\n<\/ul>\n<h4>Dagda<\/h4>\n<p><a href=\"https:\/\/github.com\/eliasgranderubio\/dagda\/\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Dagda<\/a><\/p>\n<p>Dagda \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u0438\u043c\u0435\u0435\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c Dependency Check, Retire.js \u0438 ClamAV \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c.<\/p>\n<pre><code class=\"r\">$ export DAGDA_HOST='127.0.0.1' $ export DAGDA_PORT=5000 $ python3 dagda.py vuln --init $ python3 dagda.py check --docker_image jboss\/wildfly<\/code><\/pre>\n<h4>Docker bench <\/h4>\n<p><a href=\"https:\/\/github.com\/docker\/docker-bench-security%20\" rel=\"noopener noreferrer nofollow\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Docker Bench<\/a><\/p>\n<p>Docker bench &#8212; \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f compliance-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u0442\u0430\u043a \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u0445\u043e\u0441\u0442\u043e\u0432. <br \/>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f \u043d\u0430 \u0431\u0430\u0437\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 CIS Benchmarks \u0434\u043b\u044f Docker. <\/p>\n<pre><code class=\"r\">$ docker run -it --net host --pid host --userns host --cap-add audit_control \\       -e DOCKER_CONTENT_TRUST=$DOCKER_CONTENT_TRUST \\       -v \/etc:\/etc:ro \\       -v \/usr\/bin\/containerd:\/usr\/bin\/containerd:ro \\       -v \/usr\/bin\/runc:\/usr\/bin\/runc:ro \\       -v \/usr\/lib\/systemd:\/usr\/lib\/systemd:ro \\       -v \/var\/lib:\/var\/lib:ro \\       -v \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro \\       --label docker_bench_security \\       docker\/docker-bench-security<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ac\/be7\/0fa\/5acbe70fa84a725bddb0250e3344c4c5\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Docker bench\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Docker bench\" width=\"1104\" height=\"468\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f Docker bench<\/figcaption><\/figure>\n<h4>Dockle <\/h4>\n<p><a href=\"https:\/\/github.com\/goodwithtech\/dockle%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Dockle<\/em><\/a><em> <\/em><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f compliance-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0432\u044b\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0437\u0430 \u0440\u0430\u043c\u043a\u0438 CIS.<\/p>\n<pre><code class=\"r\">$ docker run --rm goodwithtech\/dockle:v${DOCKLE_LATEST} [YOUR_IMAGE_NAME]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4f4\/cf0\/ba9\/4f4cf0ba9e9b53812e2f9b3a27f0642f\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Dockle\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Dockle\" width=\"1732\" height=\"939\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Dockle<\/figcaption><\/figure>\n<p><a class=\"anchor\" name=\"ops\" id=\"ops\"><\/a><\/p>\n<h3>Ops:<\/h3>\n<p><a class=\"anchor\" name=\"kubernetes-security\" id=\"kubernetes-security\"><\/a><\/p>\n<h4>Kubernetes Security<\/h4>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043d\u0430 \u044d\u0442\u0430\u043f Deploy. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 Kubernetes, \u043f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 Kubernetes \u0432 \u0441\u0438\u043b\u0443 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e Kubernetes \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0435\u043d\u0435\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.<\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0438:<\/p>\n<p><a href=\"https:\/\/www.marcolancini.it\/2018\/blog-arsenal-cloud-native-security-tools\/#kubernetes\" rel=\"noopener noreferrer nofollow\"><em>My Arsenal of Cloud Native (Security) Tools by MARCO LANCINI<\/em><\/a><\/p>\n<h4>Kube-bench <\/h4>\n<p><a href=\"https:\/\/github.com\/aquasecurity\/kube-bench%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Kube-bench<\/em><\/a><\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d (\u0438 \u043d\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439) \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Aqua Security. \u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 <a href=\"https:\/\/www.cisecurity.org\/benchmark\/kubernetes\/\" rel=\"noopener noreferrer nofollow\">CIS Kubernetes Benchmark<\/a> \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0445 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a Kubernetes (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 GKE, EKS and AKS)<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u0436\u0435\u043b\u0430\u0442\u0435\u043b\u0435\u043d \u0440\u0430\u0437\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code class=\"r\"># Run inside a container $ docker run --rm --pid=host                      \\    -v $(which kubectl):\/usr\/bin\/kubectl         \\    -t aquasec\/kube-bench:latest &lt;master|node&gt;  # Run in a cluster - on master node $ kubectl run                                          \\       --rm                                             \\       -it                                              \\       kube-bench-master                                \\       --image=aquasec\/kube-bench:latest                \\       --restart=Never                                  \\       --overrides=\"{ \\\"apiVersion\\\": \\\"v1\\\",           \\           \\\"spec\\\": { \\\"hostPID\\\": true,               \\           \\\"nodeSelector\\\":                            \\           { \\\"kubernetes.io\/role\\\": \\\"master\\\" },      \\           \\\"tolerations\\\": [ {                         \\           \\\"key\\\": \\\"node-role.kubernetes.io\/master\\\", \\           \\\"operator\\\": \\\"Exists\\\",                    \\           \\\"effect\\\": \\\"NoSchedule\\\" }]}}\"             \\       -- master                                        \\       --version 1.8  # Run in a cluster - on worker nodes $ kubectl run                                \\       --rm                                   \\       -it                                    \\       kube-bench-node                        \\       --image=aquasec\/kube-bench:latest      \\       --restart=Never                        \\       --overrides=\"{ \\\"apiVersion\\\": \\\"v1\\\", \\           \\\"spec\\\": { \\\"hostPID\\\": true } }\" \\       -- node                                \\       --version 1.8<\/code><\/pre>\n<h4>Kubernetes Auto Analyzer<\/h4>\n<p><a href=\"https:\/\/github.com\/nccgroup\/kube-auto-analyzer%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Kubernetes Auto Analyzer<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443, \u0447\u0442\u043e \u0438 Kube-bench, \u043d\u043e \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u043d\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u0421\u0430\u043c\u0438 \u0430\u0432\u0442\u043e\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f Kube-bench \u043e\u0442 Aqua Security.<\/p>\n<pre><code class=\"r\"># Put the config file in a directory and mount it to the \/data folder $ docker run --rm                               \\       -v \/data:\/data raesene\/kube_auto_analyzer \\       -c \/data\/admin.conf -r testdock  # Provide a KUBECONFIG file to identify and authenticate the session $ kubeautoanalyzer -c &lt;kubeconfig_file_name&gt; -r &lt;report_name&gt; --html<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a79\/53d\/fca\/a7953dfcad972580c03b4fe322c24f8b\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 Kuberntes-Auto-Analyzer\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 Kuberntes-Auto-Analyzer\" width=\"1188\" height=\"959\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 Kuberntes-Auto-Analyzer<\/figcaption><\/figure>\n<h4>Kube-hunter <\/h4>\n<p><a href=\"https:\/\/github.com\/aquasecurity\/kube-hunter%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Kube-hunter<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f Kubernetes. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0443\u0449\u0435\u043d \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438\u043b\u0438 \u043d\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435\u043c IP-\u0430\u0434\u0440\u0435\u0441\u0430 \/ \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes. <\/p>\n<pre><code class=\"r\"># Run from docker $ docker run -it --rm --network host aquasec\/kube-hunter  # Run from kubectl $ kubectl run --rm -it                        \\      kube-hunter                            \\      --image=aquasec\/kube-hunter            \\      --restart=Never                        \\      --overrides=\"{ \\\"apiVersion\\\": \\\"v1\\\", \\      \\\"spec\\\": { \\\"hostNetwork\\\": true } }\"<\/code><\/pre>\n<h4>KubiScan <\/h4>\n<p><a href=\"https:\/\/github.com\/cyberark\/KubiScan%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 KubiScan<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 RBAC-\u043c\u043e\u0434\u0435\u043b\u0438 Kubernetes. <\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u043d\u0435\u043f\u043b\u043e\u0445\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430 <a href=\"https:\/\/www.cyberark.com\/resources\/threat-research-blog\/securing-kubernetes-clusters-by-eliminating-risky-permissions\" rel=\"noopener noreferrer nofollow\">\u0441\u0430\u0439\u0442\u0435 CyberARK<\/a>.<\/p>\n<pre><code class=\"r\"># Run from MASTER node $ docker run -it --rm -e CONF_PATH=~\/.kube\/config -v \/:\/tmp cyberark\/kubiscan [CMD]  # Search for pods with privileged accounts $ kubiscan -rp  # Show all risky subjects (users, service accounts, groups) $ kubiscan -rs  # Show all the rules a service account has $ kubiscan -aars \"SANAME\" -ns \"default\" -k \"ServiceAccount\"  # List service account RoleBindings $ kubiscan -aarbs \"SANAME\" -ns \"default\" -k \"ServiceAccount\"<\/code><\/pre>\n<h4>Krane<\/h4>\n<p><a href=\"https:\/\/github.com\/appvia\/krane%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Krane <\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 RBAC \u0437\u0430 \u0441\u0447\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 RBAC \u0432 RedisGraph. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u0438\u0441\u043a\u0430\u043c\u0438 RBAC \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 <a href=\"https:\/\/github.com\/appvia\/krane\/blob\/master\/config\/rules.yaml\" rel=\"noopener noreferrer nofollow\">\u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0443 \u043f\u043e\u043b\u0438\u0442\u0438\u043a<\/a>. Krane \u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043a\u0430\u043a CLI, docker-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0438\u043b\u0438 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0430\u044f \u0441\u043b\u0443\u0436\u0431\u0430 \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u044b\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 CI\/CD.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9bd\/d64\/cc5\/9bdd64cc570eb13ec513ae3301070d10\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0433\u0440\u0430\u0444\u0430 Krane.\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u0433\u0440\u0430\u0444\u0430 Krane.\" width=\"794\" height=\"742\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0433\u0440\u0430\u0444\u0430 Krane.<\/figcaption><\/figure>\n<h4>Statboard<\/h4>\n<p><a href=\"https:\/\/github.com\/aquasecurity\/starboard%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Starboard<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u043d\u0430\u0442\u0438\u0432\u043d\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 \u0441\u0440\u0435\u0434\u0443 Kubernetes \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f <a href=\"https:\/\/github.com\/aquasecurity\/starboard#custom-security-resources-definitions\" rel=\"noopener noreferrer nofollow\">CustomResourceDefinitions (CRDs)<\/a> \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 \u043a\u0430\u043a <a href=\"https:\/\/github.com\/aquasecurity\/trivy\" rel=\"noopener noreferrer nofollow\">trivy<\/a>,  <a href=\"https:\/\/github.com\/aquasecurity\/kube-bench\" rel=\"noopener noreferrer nofollow\">kube-bench<\/a>,  <a href=\"https:\/\/github.com\/aquasecurity\/kube-hunter\" rel=\"noopener noreferrer nofollow\">kube-hunter<\/a>.  Starboard \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 kubectl-\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u043f\u043b\u0430\u0433\u0438\u043d Octant, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u043e\u0442\u0447\u0435\u0442\u044b \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 \u0437\u043d\u0430\u043a\u043e\u043c\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b Kubernetes.<\/p>\n<pre><code class=\"r\">$ starboard find vulnerabilities deployment\/nginx --namespace dev $ starboard get vulnerabilities deployment\/nginx \\   --namespace dev \\   --output yaml<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c7f\/c8c\/2a4\/c7fc8c2a416c3bc17a4fe96f57859dc2\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Starboard \u0447\u0435\u0440\u0435\u0437 Octant\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Starboard \u0447\u0435\u0440\u0435\u0437 Octant\" width=\"2077\" height=\"1152\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Starboard \u0447\u0435\u0440\u0435\u0437 Octant<\/figcaption><\/figure>\n<h4>Kubeaudit<\/h4>\n<p><a href=\"https:\/\/github.com\/Shopify\/kubeaudit%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Kubeaudit<\/em><\/a><\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u0438\u043d \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0449\u0438\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 Kubernetes.<\/p>\n<pre><code class=\"r\"># Run from kubectl (as plugin) $ kubectl audit all<\/code><\/pre>\n<h4>Kubesec <\/h4>\n<p><a href=\"https:\/\/github.com\/controlplaneio\/kubesec%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Kubesec<\/em><\/a><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 Kubernetes \u0432 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0435.<\/p>\n<pre><code class=\"r\">$ krew install kubesec-scan $ kubectl kubesec-scan pod &lt;podname&gt;<\/code><\/pre>\n<h4>Deepfence Runtime Threat Mapper<\/h4>\n<p><a href=\"https:\/\/github.com\/deepfence\/ThreatMapper%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Deepfence Runtime Threat Mapper<\/em><\/a><\/p>\n<p>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f community-\u0432\u0435\u0440\u0441\u0438\u044f \u043a\u043e\u043c\u043f\u043b\u0435\u043a\u0441\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a. \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0447\u0438\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043d\u0430 \u0433\u0440\u0430\u0444\u0435, \u0438\u0449\u0435\u0442 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0438 \u0432 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u0433\u0435\u043d\u0442\u043e\u0432 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 CI\/CD \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c Registry. \u0422\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 SIEM, Slack, Jira, Amazon S3 (\u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2dc\/c5a\/f5e\/2dcc5af5ea4272691967ce141da0cc29\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Deepfence Runtime Threat Mapper\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Deepfence Runtime Threat Mapper\" width=\"1928\" height=\"1085\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Deepfence Runtime Threat Mapper<\/figcaption><\/figure>\n<h4>Sysdig Falco <\/h4>\n<p><a href=\"https:\/\/github.com\/falcosecurity\/falco%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Sysdig Falco<\/em><\/a><\/p>\n<p>\u0411\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 run-time \u043e\u0442 Sysdig, \u0445\u043e\u0440\u043e\u0448\u043e \u0441\u0435\u0431\u044f \u0437\u0430\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0432\u0448\u0430\u044f \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435. <\/p>\n<p><a class=\"anchor\" name=\"vulns\" id=\"vulns\"><\/a><\/p>\n<h3>Vulnerability Management<\/h3>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 SAST, DAST, SCA, \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430\u043c\u0438 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker \u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes, \u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0435\u0444\u0435\u043a\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u0441\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u0442\u044f\u043d\u0443\u0442\u044c\u0441\u044f. \u0420\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 Vulnerability Management \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u044d\u0442\u043e\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u0435. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u044d\u0442\u043e \u0435\u0434\u0438\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u0432\u0441\u0435\u0445 \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0447\u0435\u0440\u0435\u0437 API \u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0432\u0435\u0431-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0441 \u0446\u0435\u043b\u044c\u044e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u0432 \u0434\u0435\u0444\u0435\u043a\u0442-\u0442\u0440\u0435\u043a\u0438\u043d\u0433. \u041c\u044b \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 AppSec.Hub, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043c\u0438\u043c\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u0443\u043c\u0435\u0435\u0442 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 DevSecOps-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0432 CI\/CD \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u041d\u043e \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043a\u043e\u0441\u043d\u0435\u043c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e open-source \u0440\u0435\u0448\u0435\u043d\u0438\u0439.<\/p>\n<h4>DefectDojo<\/h4>\n<p><a href=\"https:\/\/github.com\/DefectDojo\/django-DefectDojo%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 DefectDojo<\/em><\/a><\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438 \u043e\u0442 OWASP. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439 (22+) \u043a\u0430\u043a \u0441 open-source \u0441\u043a\u0430\u043d\u0435\u0440\u0430\u043c\u0438 (ZAP,  Trivy, nmap, Dependency Check), \u0442\u0430\u043a \u0438 \u0441 enterprise (Veracode, Checkmarx, Twistlock). \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0438\u043c\u0435\u0435\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 API.<\/p>\n<p>\u0412\u043e\u0442 <a href=\"https:\/\/github.com\/wurstbrot\/defectdojo-client\/blob\/master\/pipeline.bash%20\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a> \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0434\u043b\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/802\/d1d\/29c\/802d1d29c26b58c5f10987c55285d1ab\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 DefectDojo.\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 DefectDojo.\" width=\"1280\" height=\"660\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 DefectDojo.<\/figcaption><\/figure>\n<h4>Secure code Box<\/h4>\n<p><a href=\"https:\/\/github.com\/secureCodeBox\/secureCodeBox%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Secure code box<\/em><\/a><\/p>\n<p>Open-source \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (ZAP, NMAP, Nikto, Arachni), \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432\u043c\u0435\u0441\u0442\u0435 \u0432 docker-compose \u0432 \u0441\u0432\u044f\u0437\u043a\u0435 \u0441 Kibana \u0438 Elasticsearch.  \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0442\u043e\u0433\u043e \u0436\u0435 DefectDojo, \u0437\u0434\u0435\u0441\u044c \u0432\u0441\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b  \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c, \u0438 \u043e\u0442\u0447\u0435\u0442\u044b \u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e (\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 issue \u0432 \u0441\u0431\u043e\u0440\u0449\u0438\u043a). \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0437\u0430\u044f\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438\u0437 UI. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u043a\u0430\u0436\u0443\u0449\u0443\u044e\u0441\u044f \u043f\u0440\u043e\u0441\u0442\u043e\u0442\u0443 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0431\u043e\u0442\u044b,  \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u044f\u0432\u043b\u044f\u044e\u0442,  \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 one-button-click-solution \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043a\u0430\u043d\u0435\u0440\u043e\u0432.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2ce\/969\/c6c\/2ce969c6c98e08d5369b181660048ec7\" alt=\"\u0421\u043a\u0440\u043d\u0448\u043e\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 Kibana \u0438\u0437 Secure Code Box.\" title=\"\u0421\u043a\u0440\u043d\u0448\u043e\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 Kibana \u0438\u0437 Secure Code Box.\" width=\"1928\" height=\"1063\"><figcaption>\u0421\u043a\u0440\u043d\u0448\u043e\u0442 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 Kibana \u0438\u0437 Secure Code Box.<\/figcaption><\/figure>\n<h4>Archery<\/h4>\n<p><a href=\"https:\/\/archerysec.github.io\/archerysec\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Archery<\/em><\/a><\/p>\n<p>\u0415\u0449\u0435 \u043e\u0434\u043d\u0430 open-source \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438. \u0415\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Acuntetix, Nessus, Burp, Netsparker, WebInspect. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 DefectDojo<a href=\"https:\/\/t.me\/sec_devops\/175),\" rel=\"noopener noreferrer nofollow\">,<\/a> \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b \u0440\u0430\u043d\u0435\u0435, \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 ZAP, Burp \u0438 OpenVAS. \u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u0442\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a false positive. \u041d\u0443 \u0438 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 CI\/CD.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4cb\/5c8\/411\/4cb5c841141a34e5c7c91f3a56ca1138\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Archery\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Archery\" width=\"1382\" height=\"698\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 Archery<\/figcaption><\/figure>\n<p><strong>\u0415\u0449\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u043e vulnerability management:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/infobyte\/faraday\" rel=\"noopener noreferrer nofollow\">Faraday<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/salesforce\/vulnreport\" rel=\"noopener noreferrer nofollow\">VulnReport<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/medium.com\/leveraging-information-security-tools\/comparison-of-vulnerability-management-tools-fa51c33279d9\" rel=\"noopener noreferrer nofollow\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432  <\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"aws-security\" id=\"aws-security\"><\/a><\/p>\n<h3>Public Cloud Security<\/h3>\n<p>\u0413\u043e\u0432\u043e\u0440\u044f \u043f\u0440\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0439 DevOps \u043d\u0435\u043b\u044c\u0437\u044f \u043d\u0435 \u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 (AWS, GCP, Azure, Oracle) \u0432 \u0441\u0438\u043b\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u0438\u0437 on-prem \u0432 \u043e\u0431\u043b\u0430\u043a\u0430. <\/p>\n<p>\u0412 \u044d\u0442\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0435 \u043c\u044b \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043c \u043b\u0438\u0448\u044c \u043c\u0430\u043b\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432. \u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442 \u0442\u0430\u043a\u0436\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u043c\u0430\u043b\u043e.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/682\/71a\/81a\/68271a81a3dd4c6ac787743d49f92a23\" alt=\"\u0421\u0435\u0440\u0432\u0438\u0441\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 AWS. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a :https:\/\/cloudseclist.com\/issues\/issue-42\/\" title=\"\u0421\u0435\u0440\u0432\u0438\u0441\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 AWS. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a :https:\/\/cloudseclist.com\/issues\/issue-42\/\" width=\"1280\" height=\"708\"><figcaption>\u0421\u0435\u0440\u0432\u0438\u0441\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043e\u0442 AWS. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a :https:\/\/cloudseclist.com\/issues\/issue-42\/<\/figcaption><\/figure>\n<h4>AWS-inventor<\/h4>\n<p><a href=\"https:\/\/github.com\/nccgroup\/aws-inventory%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 AWS-inventor<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 AWS \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0443\u0447\u0435\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u0438 AWS.<\/p>\n<pre><code class=\"r\">$ python aws_inventory.py # Select the generated JSON file when prompted $ firefox gui\/dist\/index.html<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b8b\/304\/84a\/b8b30484ad96119bd70ac0a790e3d14b\" alt=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 AWS-inventor\" title=\"\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 AWS-inventor\" width=\"1683\" height=\"1019\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u0438 AWS-inventor<\/figcaption><\/figure>\n<h4>Aws-public-ips<\/h4>\n<p><a href=\"https:\/\/github.com\/arkadiyt\/aws_public_ips%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 AWS-puclic-ips<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431 \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u0445 AWS \u0432 \u0432\u0438\u0434\u0435 ip-\u0430\u0434\u0440\u0435\u0441\u043e\u0432.<\/p>\n<pre><code class=\"r\"># Uses default ~\/.aws\/credentials $ aws_public_ips -f json -s apigateway,cloudfront,ec2, \\     elasticsearch,elb,elbv2,lightsail,rds,redshift # With a custom profile $ AWS_PROFILE=production aws_public_ips ...<\/code><\/pre>\n<h4>CloudSploit<\/h4>\n<p><a href=\"https:\/\/github.com\/cloudsploit\/scans%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 CloudSploit<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f compliance-\u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 AWS, GCP, Azure, OCI. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 CIS \u0438 PCI DSS.<\/p>\n<pre><code class=\"r\"># Edit the&amp;nbsp;index.js&amp;nbsp;file with your AWS key and secret # Run a standard scan $ node index.js # Run a compliance scan $ node index.js --compliance=hipaa<\/code><\/pre>\n<h4>AWS Security Benchmark<\/h4>\n<p><a href=\"https:\/\/github.com\/awslabs\/aws-security-benchmark%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 AWS Security Benchmark<\/em><\/a><\/p>\n<p>\u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 AWS \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 CIS Amazon Web Services Foundations Benchmark 1.1.<\/p>\n<pre><code class=\"r\">$ python aws-cis-foundation-benchmark-checklist.py<\/code><\/pre>\n<h4>S3 Scan<\/h4>\n<p><a href=\"https:\/\/github.com\/bear\/s3scan%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 S3 Scan<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0435\u0442 \u043e\u0431\u043e \u0432\u0441\u0435\u0445 S3-\u043a\u043e\u0440\u0437\u0438\u043d\u0430\u0445 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u043b\u044f \u043d\u0438\u0445 \u0440\u043e\u043b\u044f\u0445.<\/p>\n<pre><code class=\"r\">$ python s3scan.py [-f &amp;lt;format&gt;] [-p &amp;lt;profile&gt;]<\/code><\/pre>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u041d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u0441\u0430\u043c\u0430\u044f \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e AWS Security:<\/p>\n<p><a href=\"https:\/\/github.com\/toniblyx\/my-arsenal-of-aws-security-tools\" rel=\"noopener noreferrer nofollow\"><em>My-arsenal-of-aws-security-tools<\/em><\/a><\/p>\n<h4>G-Scout<\/h4>\n<p><a href=\"https:\/\/github.com\/nccgroup\/G-Scout\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 G-Scout<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u043e\u0442\u0447\u0435\u0442 \u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u0445 \u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e GCP.<\/p>\n<pre><code class=\"r\"># Permissions required on the projects: Viewer, Security Reviewer, Stackdriver Account Viewer $ python gscout.py --project-id &lt;projectID&gt;<\/code><\/pre>\n<h4>ScoutSuite<\/h4>\n<p><a href=\"https:\/\/github.com\/nccgroup\/ScoutSuite\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u0434\u043b\u044f ScoutSuite<\/em><\/a><\/p>\n<p>\u041f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0430\u0443\u0434\u0438\u0442\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u043a\u043e\u0432 GCP, AWS, Oracle, Azure.<\/p>\n<pre><code class=\"r\"># GCP example # Using an user account $ python Scout.py --provider gcp --user-account --project-id &lt;projectID&gt; #&nbsp;Using a service account $ python Scout.py --provider gcp                                     \\                   --service-account --key-file service_account.json  \\                   --project-id &lt;projectID&gt;<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f97\/397\/272\/f97397272b613a9065089ba59ac43eeb\" alt=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 ScoutSuite\" title=\"\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 ScoutSuite\" width=\"818\" height=\"876\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 ScoutSuite<\/figcaption><\/figure>\n<\/p>\n<p><a class=\"anchor\" name=\"more\" id=\"more\"><\/a><\/p>\n<h3>\u0418 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435?<\/h3>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0443 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0435 \u0434\u043e\u043b\u0433\u043e, \u043d\u043e \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432\u0441\u0435, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u0430\u0442\u044c \u043e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 DevOps\/SDLC. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u044d\u0442\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438. \u042f \u043d\u0435 \u043a\u043e\u0441\u043d\u0443\u043b\u0441\u044f \u0442\u0430\u043a\u0436\u0435 \u044d\u0442\u0430\u043f\u043e\u0432 \u0444\u0430\u0437\u0437\u0438\u043d\u0433\u0430, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u043a\u0440\u0435\u0442\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 IaC. \u0418 \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0437 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u043c\u0435\u0440 \u0438 \u043d\u0430\u043b\u0430\u0436\u0435\u043d\u043d\u044b\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0417\u0434\u0435\u0441\u044c \u044f \u043c\u043e\u0433\u0443 \u043f\u043e\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u043c\u043e\u0434\u0435\u043b\u044f\u043c\u0438 \u043e\u0446\u0435\u043d\u043a\u0438 <a href=\"https:\/\/www.bsimm.com\/framework.html\" rel=\"noopener noreferrer nofollow\">BSIMM<\/a> \u0438 <a href=\"https:\/\/owaspsamm.org\/model\/\" rel=\"noopener noreferrer nofollow\">OWASP SAMM<\/a>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u0432\u0441\u0435, \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0431\u043e\u0440\u043e\u043a \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430.<\/p>\n<p><strong>RASP &#8212; <\/strong>\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442<strong> <\/strong>\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<strong> <\/strong>\u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c, \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044f \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443 (\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u0442\u0434.). \u0427\u0430\u0441\u0442\u043e \u043a \u044d\u0442\u043e\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430 Container Run-time Security (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Sysdig Falco). \u0412\u043e\u0442 \u0442\u0430\u043a\u0436\u0435 RASP \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/baidu\/openrasp\" rel=\"noopener noreferrer nofollow\">OpenRASP<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>IAST <\/strong>&#8212; \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0441\u043e\u0432\u043c\u0435\u0449\u0430\u044e\u0449\u0430\u044f \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b SAST \u0438 DAST:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/www.contrastsecurity.com\/contrast-community-edition\" rel=\"noopener noreferrer nofollow\">Contrast<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Fuzzing &#8212;<\/strong> \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0430 \u0432\u0445\u043e\u0434 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043f\u043e\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043a \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044e <strong>:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/cpuu\/awesome-fuzzing#readme%20\" rel=\"noopener noreferrer nofollow\"><em>Awesome Fuzzing <\/em><\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>IaC Security <\/strong>&#8212; \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438: <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/stelligent\/cfn_nag\" rel=\"noopener noreferrer nofollow\">Cfn Nag<\/a>&nbsp;&#8212;&nbsp;\u0421\u043a\u0430\u043d\u0435\u0440 AWS CloudFormation \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/bridgecrewio\/checkov\" rel=\"noopener noreferrer nofollow\">Checkov<\/a>&nbsp;&#8212;&nbsp;\u0421\u043a\u0430\u043d\u0435\u0440 Terraform, AWS CloudFormation \u0438 Kubernetes \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/cesar-rodriguez\/terrascan\" rel=\"noopener noreferrer nofollow\"><u>Terrascan<\/u><\/a>&nbsp;&#8212;&nbsp;\u0421\u043a\u0430\u043d\u0435\u0440 Terraform \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u0443\u0447\u0448\u0438\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/liamg\/tfsec\" rel=\"noopener noreferrer nofollow\">Tfsec<\/a>&nbsp;&#8212;&nbsp;\u0421\u043a\u0430\u043d\u0435\u0440 Terraform \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432 \u043d\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u043d\u0435\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u0443\u0447\u0448\u0438\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 AWS, Azure \u0438 GCP.<\/p>\n<\/li>\n<li>\n<p>Kubernetes YAML validating:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/instrumenta\/kubeval\" rel=\"noopener noreferrer nofollow\">Kubeval<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/zegl\/kube-score\" rel=\"noopener noreferrer nofollow\">Kube-score<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/stelligent\/config-lint\" rel=\"noopener noreferrer nofollow\">Config-lint<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/cloud66-oss\/copper\" rel=\"noopener noreferrer nofollow\">Copper<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/open-policy-agent\/conftest\" rel=\"noopener noreferrer nofollow\">Conftest<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/FairwindsOps\/polaris#cli%20\" rel=\"noopener noreferrer nofollow\">Polaris<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/learnk8s.io\/validating-kubernetes-yaml\" rel=\"noopener noreferrer nofollow\">\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Compliance-as-code &#8212; <\/strong>\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430 \u0441 \u0446\u0435\u043b\u044c\u044e \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0439 \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/inspec\/inspec\" rel=\"noopener noreferrer nofollow\">Chef InSpec<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/opencontrol\/compliance-masonry\" rel=\"noopener noreferrer nofollow\">Compliance Masonry<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/www.open-scap.org\/\" rel=\"noopener noreferrer nofollow\">OpenSCAP<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>Security Chaos Engineering <\/strong>&#8212; \u043c\u043e\u043b\u043e\u0434\u0430\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u0445: \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 &#171;\u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e&#187; \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f, \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u043e \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438, \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u044b\u0442\u043e\u043a &#171;\u0441\u043b\u043e\u043c\u0430\u0442\u044c&#187; \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0443. \u041f\u043e\u0441\u043b\u0435 \u0441\u0435\u0440\u0438\u0438 \u0442\u0435\u0441\u0442\u043e\u0432 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438, \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041a\u0430\u043a \u0438\u0442\u043e\u0433 \u0446\u0435\u043b\u044c \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u0443\u044e \u0432\u044b\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u043a\u0441\u0442\u0440\u0435\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0443\u0441\u043b\u043e\u0432\u0438\u044f. Security Chaos Engineering \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e Chaos Engineering<strong> <\/strong>\u043b\u0438\u0448\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u0430\u043c\u0438, \u043a\u0430\u0441\u0430\u044e\u0449\u0438\u043c\u0438\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0422\u0435\u0441\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432\u0438\u043b Security Groups,  \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u0440\u043e\u0441\u043b\u0443\u0448\u0438\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0440\u0442\u043e\u0432, \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0433\u043e \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 VPC, \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e &#171;\u0443\u0431\u0438\u0439\u0441\u0442\u0432\u0430&#187; \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u0441\u0435 \u044d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e, \u0430 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0435\u043f\u0440\u0435\u0440\u044b\u0432\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c\u0441\u044f. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/Optum\/ChaoSlingr\" rel=\"noopener noreferrer nofollow\">ChaoSlingr<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/Netflix\/security_monkey\" rel=\"noopener noreferrer nofollow\">Security Monkey<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/asobti\/kube-monkey\" rel=\"noopener noreferrer nofollow\">Kube-monkey<\/a><\/p>\n<\/li>\n<\/ul>\n<p><strong>\u041a\u0430\u043d\u0430\u043b\u044b \u0438 \u0447\u0430\u0442\u044b \u043f\u043e DevSecOps \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439:<\/strong><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/t.me\/sec_devops\" rel=\"noopener noreferrer nofollow\"><em>DevSecOps Wine<\/em><\/a><em> &#8212; \u043a\u0430\u043d\u0430\u043b \u043f\u043e DevSecOps \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438<\/em><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/cloud_sec\" rel=\"noopener noreferrer nofollow\"><em>CloudSec Wine<\/em><\/a><em> &#8212; \u043a\u0430\u043d\u0430\u043b \u043f\u0440\u043e Public Cloud Security \u043e\u0442 \u0430\u0432\u0442\u043e\u0440\u0430 \u0441\u0442\u0430\u0442\u044c\u0438<\/em><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/mobileappsecworld\" rel=\"noopener noreferrer nofollow\"><em>Mobile AppSec World<\/em><\/a><em>  &#8212; \u043a\u0430\u043d\u0430\u043b \u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/em><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/t.me\/devsecopsru\" rel=\"noopener noreferrer nofollow\"><em>DevSecOps \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e <\/em><\/a><\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/\"> https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u042f \u043a\u043e\u043d\u0441\u0443\u043b\u044c\u0442\u0430\u043d\u0442 \u043f\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 Swordfish Security \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e DevOps \u0434\u043b\u044f \u043d\u0430\u0448\u0438\u0445 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432. \u042f \u0441\u043b\u0435\u0436\u0443 \u0437\u0430 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 DevSecOps \u0432 \u043c\u0438\u0440\u0435, <a href=\"https:\/\/t.me\/sec_devops\" rel=\"noopener noreferrer nofollow\">\u043f\u044b\u0442\u0430\u044e\u0441\u044c \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c<\/a> \u0441\u0430\u043c\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u0432 \u0440\u0443\u0441\u0441\u043a\u043e\u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0435\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e \u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u044e \u0432\u044b\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0441 \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0443 \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u043e\u0432. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 2 \u0433\u043e\u0434\u0430 \u0442\u0435\u043c\u0430 DevSecOps \u0441\u0442\u0430\u043b\u0430 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0432\u0441\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u044f. \u041d\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u0435 \u0443\u0441\u043f\u0435\u0432\u0430\u044e\u0442 \u0441\u0442\u0430\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0430\u0441\u0442\u0443\u0449\u0435\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041e\u0442\u043f\u0440\u0430\u0432\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u0441\u0442\u0430\u043b \u0432\u044b\u0445\u043e\u0434 <a href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/499676\/\" rel=\"noopener noreferrer nofollow\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u043a\u043e\u043b\u043b\u0435\u0433 \u0438\u0437 Mail.ru, \u0433\u0434\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u043b \u0432\u044b\u0434\u0435\u043b\u0435\u043d \u0440\u0430\u0437\u0434\u0435\u043b \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 Kubernetes. \u042f \u0440\u0435\u0448\u0438\u043b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u043f\u0438\u0441\u043e\u043a, \u043e\u0445\u0432\u0430\u0442\u0438\u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u044d\u0442\u0430\u043f\u044b \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0433\u043e \u0446\u0438\u043a\u043b\u0430 SDLC \u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u044f \u043f\u0430\u0440\u0443 \u043d\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e\u0434 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u043e\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f \u043d\u0430\u0431\u043e\u0440 \u043c\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c  \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u0432 \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0430\u043f\u043e\u0432 SDLC\/DevOps (Threat modeling, SAST, DAST, SCA, Docker image scanning, Kubernetes scanning, AWS Audit \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435).<\/p>\n<h2>\u041e\u0433\u043b\u0430\u0432\u043b\u0435\u043d\u0438\u0435<\/h2>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#dev\" rel=\"noopener noreferrer nofollow\">Dev<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#threat-modeling\" rel=\"noopener noreferrer nofollow\">Threat Modeling<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#sast\" rel=\"noopener noreferrer nofollow\">\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (SAST)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#sca\" rel=\"noopener noreferrer nofollow\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 &#8212; SCA<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#secrets\" rel=\"noopener noreferrer nofollow\">\u041f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#dast\" rel=\"noopener noreferrer nofollow\">\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (DAST)<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#bdd\" rel=\"noopener noreferrer nofollow\">\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0430\u043c Behaviour Driven Development<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#docker-security\" rel=\"noopener noreferrer nofollow\">\u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 Docker<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#ops\" rel=\"noopener noreferrer nofollow\">Ops<\/a><\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#kubernetes-security\" rel=\"noopener noreferrer nofollow\">Kubernetes Security<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#vulns\" rel=\"noopener noreferrer nofollow\">Vulnerability Management<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#aws-security\" rel=\"noopener noreferrer nofollow\">Public Cloud Security<\/a><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/518758\/#more\" rel=\"noopener noreferrer nofollow\">\u0418 \u044d\u0442\u043e \u0435\u0449\u0435 \u043d\u0435 \u0432\u0441\u0435?<\/a><\/p>\n<\/li>\n<\/ul>\n<figure class=\"full-width\"><figcaption>\u041e\u0434\u043d\u043e \u0438\u0437 \u0432\u0438\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a DevSecOps. \u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a: https:\/\/holisticsecurity.io\/2020\/02\/10\/security-along-the-container-based-sdlc<\/figcaption><\/figure>\n<\/p>\n<p><a class=\"anchor\" name=\"dev\" id=\"dev\"><\/a><\/p>\n<h2>Dev<\/h2>\n<p><a class=\"anchor\" name=\"threat-modeling\" id=\"threat-modeling\"><\/a><\/p>\n<h3>Threat Modeling<\/h3>\n<p>\u041c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0443\u0433\u0440\u043e\u0437 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 Secure Development Lifecycle \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u041f\u041e \u043d\u0430 \u043f\u0440\u0435\u0434\u043c\u0435\u0442 \u043d\u0430\u043b\u0438\u0447\u0438\u044f \u0432 \u043d\u0435\u0439 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u0440\u0430\u0441\u0445\u043e\u0434\u044b \u043d\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u0430 \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u043c\u043e\u0436\u0435\u0442 \u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0418\u0411 \u0435\u0449\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b. \u041d\u0430 \u044d\u0442\u043e\u043c \u0436\u0435 \u044d\u0442\u0430\u043f\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u043f\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u043e\u0439\u0434\u0443\u0442 \u0432 backlog. \u041f\u043e\u0434\u043e\u0431\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043f\u0440\u0438\u0431\u0435\u0433\u0430\u0435\u0442\u0441\u044f, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435, \u0432\u043e \u0432\u0441\u0435\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445 DevSecOps \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u201cShift security to the left\u201d. <\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430\u0448\u0435\u043b \u043c\u0435\u0441\u0442\u043e \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043f\u0440\u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u0432\u044b\u0445\u043e\u0434\u0430 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 IT-\u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0442\u0430\u043a\u0436\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d. \u0412\u043e\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0443\u043b open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043c\u043e\u0447\u044c.<\/p>\n<h4>OWASP Threat Dragon<\/h4>\n<p><a href=\"https:\/\/owasp.org\/www-project-threat-dragon\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 OWASP Threat Dragon <\/em><\/a><\/p>\n<p>\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u041f\u041e, \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u044f \u043d\u0430 \u043d\u0435\u0439 \u0443\u0433\u0440\u043e\u0437\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u043e\u043b\u043e\u0433\u0438\u0438 STRIDE. \u041d\u0438\u043a\u0430\u043a\u043e\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u043d\u043e \u0432 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043e\u0442\u043b\u0430\u0436\u0435\u043d\u044b, \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e. \u042d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f <a href=\"https:\/\/github.blog\/2020-09-02-how-we-threat-model\/\" rel=\"noopener noreferrer nofollow\">\u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437 \u0432 GitHub.<\/a><\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b Threat Dragon<\/figcaption><\/figure>\n<h4>Pytm<\/h4>\n<p><a href=\"https:\/\/github.com\/izar\/pytm\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Pytm<\/em><\/a><\/p>\n<p>Pytm &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Python \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0433\u0440\u043e\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u044b.<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c Pytm \u0437\u0430\u0434\u0430\u0435\u0442 \u043c\u043e\u0434\u0435\u043b\u044c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u0434\u0430, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0441\u0445\u0435\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432. \u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0434\u043b\u044f \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u0439. <\/p>\n<figure class=\"full-width\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 Pytm \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0430 <\/figcaption><\/figure>\n<h4>Materialize threats tool <\/h4>\n<p><a href=\"https:\/\/github.com\/secmerc\/materialize_threats\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 <\/em>Materialize threats tool <\/a><\/p>\n<p>Materialize-threats &#8212; \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043d\u0430 Python, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0445\u0435\u043c\u044b \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u041f\u041e \u0438\u0437 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 draw.io \u0432 \u0433\u0440\u0430\u0444\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0431\u0430\u0437\u0443 \u0438 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u044d\u0442\u0438\u0445 \u0433\u0440\u0430\u0444\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 SQL \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0443\u043c\u0435\u0435\u0442 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b \u043d\u0430 Gherkin.<\/p>\n<p>\u042d\u0442\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0439 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u0442\u043e, \u043a\u0443\u0434\u0430 \u0434\u0432\u0438\u0433\u0430\u044e\u0442\u0441\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 Enterpise-\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0443\u0433\u0440\u043e\u0437 \u0432\u0440\u043e\u0434\u0435<a href=\"https:\/\/iriusrisk.com\/\" rel=\"noopener noreferrer nofollow\"> Irius Risks<\/a>.<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439:<\/p>\n<ol>\n<li>\n<p>\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u044b \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 \u0432 .drawio, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0432\u0430\u0448\u0435\u043c\u0443 data flow<\/p>\n<\/li>\n<li>\n<p>\u0412\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0445 \u0437\u043e\u043d \u043d\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e <a href=\"https:\/\/github.com\/geoffrey-hill-tutamantic\/rapid-threat-model-prototyping-docs\" rel=\"noopener noreferrer nofollow\">Rapid Threat Model Prototyping methodology<\/a>(\u0432 readme \u0435\u0441\u0442\u044c \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0435)<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u0430 .drawio<\/p>\n<\/li>\n<li>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a materialize.py \u0441 \u0438\u043c\u043f\u043e\u0440\u0442\u043e\u043c \u0444\u0430\u0439\u043b\u0430 .drawio<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0443\u0433\u0440\u043e\u0437 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <a href=\"https:\/\/cucumber.io\/docs\/gherkin\/\" rel=\"noopener noreferrer nofollow\">Gherkin<\/a>. <\/p>\n<\/p>\n<\/li>\n<\/ol>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u0432 draw.io \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u043b\u044f Materialize threats tool <\/figcaption><\/figure>\n<figure class=\"full-width\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b Materialize threats tool <\/figcaption><\/figure>\n<p>\u041d\u0435 \u0431\u0443\u0434\u0435\u043c \u0434\u043e\u043b\u0433\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445 \u0438\u0431\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u0435\u0437\u0434\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0439.<\/p>\n<p>\u0412\u043e\u0442 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0443\u0433\u0440\u043e\u0437:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/threatspec\/threatspec%20\" rel=\"noopener noreferrer nofollow\">Threatspec<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/devsecops\/raindance\" rel=\"noopener noreferrer nofollow\">Raindance<\/a> <\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-gb\/azure\/security\/develop\/threat-modeling-tool\" rel=\"noopener noreferrer nofollow\">Microsoft Threat Modeling Tool<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043e\u043b\u044c\u0448\u0430\u044f \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0443\u0433\u0440\u043e\u0437, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u0438, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u043a\u0443\u0440\u0441\u044b, \u043a\u043d\u0438\u0433\u0438:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/hysnsec\/awesome-threat-modelling\" rel=\"noopener noreferrer nofollow\">Awesome threat modeling<\/a><\/p>\n<\/li>\n<\/ul>\n<p><a class=\"anchor\" name=\"sast\" id=\"sast\"><\/a><\/p>\n<h3>\u0421\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 (SAST):<\/h3>\n<p>\u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u044d\u0442\u0430\u043f\u0443 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0430\u043d\u0430\u043b\u0438\u0437\u0443 \u043a\u043e\u0434\u0430 . \u0410\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u043a\u043e\u0434\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e. Open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b, \u0432 \u0441\u0432\u043e\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432\u044b\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043f\u043e\u0434 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a. \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/owasp.org\/www-community\/Source_Code_Analysis_Tools\" rel=\"noopener noreferrer nofollow\">OWASP Source Code Analysis Tools<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/analysis-tools-dev\/static-analysis%20\" rel=\"noopener noreferrer nofollow\">Static Analysis Tools <\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e \u0435\u0441\u0442\u044c \u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u044b \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e.<\/p>\n<h4>Salus  <\/h4>\n<p><a href=\"https:\/\/github.com\/coinbase\/salus\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Salus<\/em><\/a><\/p>\n<p>\u041e\u0431\u0440\u0430\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u043e \u0441\u0440\u0430\u0437\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u0432\u0440\u043e\u0434\u0435 Bandit, Gosec, Brakeman, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 (Ruby,Node.js, Python,Go). \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code class=\"r\"># Navigate to the root directory of the project you want to run Salus on $ cd \/path\/to\/repo  # Run the following line while in the root directory (No edits necessary) $ docker run --rm -t -v $(pwd):\/home\/repo coinbase\/salus<\/code><\/pre>\n<p>\u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c JSON\/YAML \u043e\u0442\u0447\u0435\u0442. \u041d\u0430 GitHub \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432 <a href=\"https:\/\/github.com\/coinbase\/salus#circleci-integration\" rel=\"noopener noreferrer nofollow\">CircleCI<\/a>.<\/p>\n<h4>ShiftLeft Scan <\/h4>\n<p><a href=\"https:\/\/github.com\/ShiftLeftSecurity\/sast-scan\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 ShiftLeft Scan<\/em><\/a><\/p>\n<p>\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 Salus, \u043d\u043e \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u0431\u043e\u043b\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432. \u0412 \u0440\u0435\u043f\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u044b \u0432 docker \u043e\u0431\u0440\u0430\u0437 (gosec, find-sec-bugs, psalm, bandit, \u2026). \u0412 \u043e\u0431\u0440\u0430\u0437 Docker \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b terraform, bash, kubernetes \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 Python \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<pre><code class=\"r\">$ docker run --rm -e \"WORKSPACE=${PWD}\" -v \"$PWD:\/app\" shiftleft\/sast-scan scan --src \/app --type python<\/code><\/pre>\n<p>\u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0443 \u0435\u0441\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f \u0441 IDE.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438 \u0441 VS Code \u0434\u043b\u044f ShiftLeft<\/figcaption><\/figure>\n<h4>GitLab SAST <\/h4>\n<p><a href=\"https:\/\/docs.gitlab.com\/ee\/user\/application_security\/sast\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 SAST \u0432 GitLab<\/em><\/a><\/p>\n<p>Gitlab \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 DevOps \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043d\u043e \u0447\u0442\u043e \u0435\u0449\u0435 \u0432 \u043d\u0435\u0439 \u0435\u0441\u0442\u044c, \u0442\u0430\u043a \u044d\u0442\u043e \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0440\u0430\u0437\u043d\u044b\u0445 open-source SAST, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438 \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d. \u0412 Gitlab \u0442\u0430\u043a\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0438\u0442\u044c SCA, \u043f\u043e\u0438\u0441\u043a \u0441\u0435\u043a\u0440\u0435\u0442\u043e\u0432, fuzzing \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 DevSecOps, \u043d\u043e \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u043c\u0438 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 Gold-\u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f SAST \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d GitLab.<\/figcaption><\/figure>\n<h4>LGTM<\/h4>\n<p><a href=\"https:\/\/semmle.com\/lgtm\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 LGTM <\/em><\/a><\/p>\n<p>LGTM &#8212; \u043e\u0431\u043b\u0430\u0447\u043d\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Semmle, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u043e\u043d\u0446\u0435 \u0442\u043e\u0433\u043e \u0433\u043e\u0434\u0430 \u0441\u0442\u0430\u043b\u0430 <a href=\"https:\/\/blog.semmle.com\/secure-software-github-semmle\/\" rel=\"noopener noreferrer nofollow\">\u0447\u0430\u0441\u0442\u044c\u044e GitHub<\/a>. Semmle \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u0440\u043e\u043c <a href=\"https:\/\/semmle.com\/codeql\" rel=\"noopener noreferrer nofollow\">CodeQL<\/a><a href=\"https:\/\/semmle.com\/codeql),\" rel=\"noopener noreferrer nofollow\">,<\/a> \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e <a href=\"https:\/\/github.blog\/2020-05-06-new-from-satellite-2020-github-codespaces-github-discussions-securing-code-in-private-repositories-and-more\/\" rel=\"noopener noreferrer nofollow\">\u0431\u044b\u043b\u043e \u0430\u043d\u043e\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e<\/a> GitHub \u043d\u0430 \u0441\u0432\u043e\u0435\u0439 \u043e\u043d\u043b\u0430\u0439\u043d-\u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438 Satellite.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0438\u043c\u0435\u0440 \u043e\u0442\u0447\u0435\u0442\u0430 LGTM<\/figcaption><\/figure>\n<h4>Semgrep<\/h4>\n<p><a href=\"https:\/\/semgrep.dev\/editor%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0431\u043b\u0430\u0447\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Semgrep<\/em><\/a><\/p>\n<p>\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u041f\u043e \u0441\u0443\u0442\u0438 \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440 \u043a\u043e\u0434\u0430 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a, \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f AST \u0438 Data flow, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<pre><code class=\"r\">$ semgrep --config=&amp;lt;path\/to\/config&gt; path\/to\/src<\/code><\/pre>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f semgrep \u043f\u0443\u0441\u0442\u044c \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c:<\/p>\n<pre><code class=\"markdown\">rules: - id: user-eval   patterns:   - pattern-inside: |       def $F(...):         ...   - pattern-either:     - pattern: eval(..., request.$W.get(...), ...)     - pattern: |         $V = request.$W.get(...)         ...         eval(..., $V, ...)     - pattern: eval(..., request.$W(...), ...)     - pattern: |         $V = request.$W(...)         ...         eval(..., $V, ...)     - pattern: eval(..., request.$W[...], ...)     - pattern: |         $V = request.$W[...]         ...         eval(..., $V, ...)<\/code><\/pre>\n<p>\u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 Semgrep \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0438 \u0432\u0440\u043e\u0434\u0435 \u0442\u0435\u0445, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0438\u0436\u0435 \u043d\u0430 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0435 (\u0436\u0435\u043b\u0442\u044b\u043c \u043e\u0442\u043c\u0435\u0447\u0435\u043d\u044b \u0442\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 semgrep \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u043c\u0438):<\/p>\n<figure class=\"\"><figcaption>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 Semgrep \u0438\u0437 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430<\/figcaption><\/figure>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435. <\/strong>\u041d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 open-source \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0445, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0432 SAST, \u0442\u0430\u043a \u044d\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0443\u043d\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e \u0447\u0430\u0441\u0442\u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432. \u041e\u0447\u0435\u043d\u044c \u043c\u0430\u043b\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 CWE \u043a \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u044f\u043c, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u041d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0441\u0435 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0437\u043d\u0430\u044e, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043a CWE \u0438 CVE.<\/p>\n<p><a class=\"anchor\" name=\"sca\" id=\"sca\"><\/a><\/p>\n<h3>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 open-source \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 &#8212; SCA <\/h3>\n<p>\u041d\u0430\u0440\u044f\u0434\u0443 \u0441 \u0442\u0435\u043c \u043a\u043e\u0434\u043e\u043c, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c open-source, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u043c\u043e\u0436\u0435\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430 (\u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u044d\u0442\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 Equifax). \u041f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u0440\u0430\u0431\u043e\u0442\u044b, \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 SCA \u044f \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b \u0432 <a href=\"https:\/\/habr.com\/ru\/company\/swordfish_security\/blog\/516660\/\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a>, \u0430 \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b.<\/p>\n<h4>Dependency Check<\/h4>\n<p><a href=\"https:\/\/github.com\/jeremylong\/DependencyCheck%20\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 Dependency Check<\/em><\/a><\/p>\n<p>Dependency Check &#8212; \u043e\u0434\u043d\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 open-source \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043e\u0442 OWASP \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043e\u0432 . \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439, \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u043d\u0438\u044f \u0432 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d, \u043d\u043e \u0443 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0435\u0441\u0442\u044c \u043a\u0443\u0434\u0430 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0430. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043a \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044e \u0434\u043b\u044f \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439, \u0433\u0434\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b Secure SDLC \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u043d\u0430 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0438 \u0443 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0418\u0411 \u0435\u0441\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043d\u0438\u0439. \u0423 Dependency Check \u043d\u0435\u0442 \u0435\u0434\u0438\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0432 \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0435 \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u044b, \u0441\u0442\u043e\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 Dependency Track.<\/p>\n<pre><code class=\"r\"># Dependency Check Maven Plugin example $ mvn org.owasp:dependency-check-maven:check<\/code><\/pre>\n<figure class=\"full-width\"><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442 \u0438\u0437 HTML-\u043e\u0442\u0447\u0435\u0442\u0430 Dependency Check<\/figcaption><\/figure>\n<h4>Dependency Track<\/h4>\n<p><a href=\"https:\/\/dependencytrack.org\/\" rel=\"noopener noreferrer nofollow\"><em>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 Dependency Track<\/em><\/a><\/p>\n<p>Dependency Track &#8212; \u0432\u0442\u043e\u0440\u043e\u0435 \u043f\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442 OWASP, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u0437<\/p>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-309885","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=309885"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/309885\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=309885"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=309885"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=309885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}