Уязвимости Π² web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Grails ΠΈ Ruby-ΠΌΠΎΠ΄ΡƒΠ»Π΅ TZInfo

Π’ web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ΅ Grails, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² соотвСтствии с ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠΎΠΉ MVC Π½Π° Java, Groovy ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках для JVM, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ выполняСтся web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Эксплуатация уязвимости производится Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½ΠΎΠ³ΠΎ запроса, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰Π΅ΠΌΡƒ доступ ΠΊ ClassLoader. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π·Π²Π°Π½Π° Π½Π΅Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Π² Π»ΠΎΠ³ΠΈΠΊΠ΅ привязки Π΄Π°Π½Π½Ρ‹Ρ… (data-binding), которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΉ привязкС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ bindData. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² выпусках 3.3.15, 4.1.1, 5.1.9 ΠΈ 5.2.1.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² Ruby-ΠΌΠΎΠ΄ΡƒΠ»Π΅ tzinfo, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ содСрТимоС любого Ρ„Π°ΠΉΠ»Π°, насколько ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€Π°Π²Π° доступа Π°Ρ‚Π°ΠΊΡƒΠ΅ΠΌΠΎΠ³ΠΎ прилоТСния. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ связана с отсутствиСм Π΄ΠΎΠ»ΠΆΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° использованиС спСцсимволов Π² ΠΈΠΌΠ΅Π½ΠΈ часового пояса, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ TZInfo::Timezone.get. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Π΅Ρ‚ прилоТСния, ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π² TZInfo::Timezone.get Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ внСшниС Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, для чтСния Ρ„Π°ΠΉΠ»Π° /tmp/payload ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ «foo\n/../../../tmp/payload».

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

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