Уязвимости Π² сканСрах бСзопасности ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования инструмСнтов для опрСдСлСния нСисправлСнных уязвимостСй ΠΈ выявлСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ Π² ΠΎΠ±Ρ€Π°Π·Π°Ρ… ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Docker. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, Ρ‡Ρ‚ΠΎ Π² 4 ΠΈΠ· 6 извСстных сканСров ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker присутствовали критичСскиС уязвимости, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ Π°Ρ‚Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно сам сканСр ΠΈ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ выполнСния своСго ΠΊΠΎΠ΄Π° Π² систСмС, Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании Snyk) с ΠΏΡ€Π°Π²Π°ΠΌΠΈ root.

Для Π°Ρ‚Π°ΠΊΠΈ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΡƒ достаточно ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ своСго Dockerfile ΠΈΠ»ΠΈ manifest.json, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±Ρ€Π°Π·Π° Ρ„Π°ΠΉΠ»Ρ‹ Podfile ΠΈ gradlew. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ эксплоитов ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ для систСм
WhiteSource, Snyk,
Fossa ΠΈ
Anchore. ΠΠ°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π» ΠΏΠ°ΠΊΠ΅Ρ‚ Clair, ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ написанный с оглядкой Π½Π° обСспСчСниС бСзопасности. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ выявлСно Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ Trivy. Π’ ΠΈΡ‚ΠΎΠ³Π΅ сдСлан Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ сканСры Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² слСдуСт Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… окруТСния ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ собствСнных ΠΎΠ±Ρ€Π°Π·ΠΎΠ², Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡΠ²Π»ΡΡ‚ΡŒ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ систСмам Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ.

Π’ FOSSA, Snyk ΠΈ WhiteSource ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° связана с Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ внСшнСго ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° для опрСдСлСния зависимостСй ΠΈ позволяла ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ своСго ΠΊΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ touch ΠΈ system Π² Ρ„Π°ΠΉΠ»Π°Ρ… gradlew ΠΈ Podfile.

Π’ Snyk ΠΈ WhiteSource Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ уязвимости, связанныС с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ запуска систСмных ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΎΡ€Π΅ Dockerfile (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Snyk Ρ‡Π΅Ρ€Π΅Π· Dockefile ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ /bin/ls, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ сканСром, Π° Π² WhiteSurce ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ΅ «echo ‘;touch /tmp/hacked_whitesource_pip;=1.0′»).

Π’ Anchore ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° использованиСм ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ skopeo для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с docker-ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ. Эксплуатация сводилась ΠΊ добавлСнию Π² Ρ„Π°ΠΉΠ» manifest.json ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²ΠΈΠ΄Π° ‘»os»: «$(touch hacked_anchore)»‘, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ skopeo Π±Π΅Π· Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ экранирования (Π²Ρ‹Ρ€Π΅Π·Π°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символы «;&<>», Π½ΠΎ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π»Π°ΡΡŒ конструкция «$()»).

Π’Π΅ΠΌ ΠΆΠ΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ исслСдованиС эффСктивности выявлСния нСисправлСнных уязвимостСй сканСрами бСзопасности docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π»ΠΎΠΆΠ½Ρ‹Ρ… срабатываний (Ρ‡Π°ΡΡ‚ΡŒ 1, Ρ‡Π°ΡΡ‚ΡŒ 2, Ρ‡Π°ΡΡ‚ΡŒ 3). НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования 73 ΠΎΠ±Ρ€Π°Π·ΠΎΠ², содСрТащих извСстныС уязвимости, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π° ΠΎΡ†Π΅Π½ΠΊΠ° эффСктивности опрСдСлСния наличия Ρ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Ρ€Π°Π·Π°Ρ… (nginx, tomcat, haproxy, gunicorn, redis, ruby, node).

Уязвимости Π² сканСрах бСзопасности ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Уязвимости Π² сканСрах бСзопасности ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Docker-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ