Π’ NixOS ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ подстановки бэкдоров, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π² XZ

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² nixpkgs, примСняСмый Π² дистрибутивС NixOS, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ€Π΅ΠΆΠΈΠΌ повторяСмых сборок, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ случаи внСдрСния Π² ΠΊΠΎΠ΄ бэкдоров, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ XZ. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ позволяСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… с исходным ΠΊΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π»ΠΈΠ·Π°, ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² рСпозиториях с ΠΊΠΎΠ΄ΠΎΠΌ.

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ исходный ΠΊΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ вСрсии прилоТСния собираСтся Π΄Π²Π° Ρ€Π°Π·Π° β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· ΠΈΠ· ΠΊΠΎΠ΄Π°, Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ· git-рСпозитория, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΠ· ΠΊΠΎΠ΄Π°, распространяСмого Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΠ²Π°Ρ…. Если ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сборок Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΠ²ΠΎΠ΄ для ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠΉ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ скрытых ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΈΠ»ΠΈ Π² Π°Ρ€Ρ…ΠΈΠ²Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ с ΠΊΠΎΠ΄ΠΎΠΌ.

Напомним, Ρ‡Ρ‚ΠΎ Π² случаС с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ XZ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π΅ содСрТал ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠžΠ±Ρ€Π°Π·ΡƒΡŽΡ‰ΠΈΠ΅ бэкдор врСдоносныС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ»ΠΈΡΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² тСстовом Π½Π°Π±ΠΎΡ€Π΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Ρ€Π°Π±ΠΎΡ‚Ρ‹ распаковщика XZ. Бэкдор активировался Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ систСмы сборки, Π° сам исходный ΠΊΠΎΠ΄ XZ совпадал с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· рСпозитория. ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ бэкдор m4-макросы для инструмСнтария Automake Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΠ² с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ отсутствовали Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

Бэкдор Π² XZ Π±Ρ‹Π» Π²Π½Π΅Π΄Ρ€Ρ‘Π½ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠΎΠΌ, добившимся получСния статуса ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ бэкдора оказалось сразу Π½Π΅ Π·Π°ΠΌΠ΅Ρ‡Π΅Π½ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ дистрибутивы Π² основном ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, загруТая ΠΊΠΎΠ΄ ΠΈΠ· Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ ΠΊΠΎΠ΄Π° для сборки ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΎΠΉ суммой для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ цСлостности Ρ„Π°ΠΉΠ»Π° с Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π΅Ρ€ΠΊΠ°Π»Π°. ОсновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΊΠΎΠ΄Π° сосрСдоточСно Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ содСрТимого рСпозитория, поэтому Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Π΅ отличия Π² Π°Ρ€Ρ…ΠΈΠ²Π°Ρ… Π½Π΅ всСгда ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сразу выявлСны.

Для упрощСния ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия Ρ„Π°ΠΉΠ»ΠΎΠ²-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ² ΠΈ срСзов рСпозитория, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅Π»ΠΈΠ·Π°ΠΌ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PostgreSQL, Π²Π²Π΅Π»ΠΈ Π² ΠΎΠ±ΠΈΡ…ΠΎΠ΄ систСму повторяСмой Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Ρ€Ρ…ΠΈΠ²ΠΎΠ². Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС прСдоставляСтся инструмСнтарий, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΊΠΎΠ΄Π° свой Π°Ρ€Ρ…ΠΈΠ², ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΌΡƒ Π°Ρ€Ρ…ΠΈΠ²Ρƒ, доступному для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. Если нСзависимо созданный Π°Ρ€Ρ…ΠΈΠ² ΠΈ Π°Ρ€Ρ…ΠΈΠ², прСдоставляСмый основным ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ β€” ΠΈΠΌΠ΅Π΅Ρ‚ мСсто компромСтация рСпозитория ΠΈΠ»ΠΈ эталонного Π°Ρ€Ρ…ΠΈΠ²Π°.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ практикуСтся лишь Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… случаях, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Π°Ρ€Ρ…ΠΈΠ²Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ², ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² основном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ man-страницы, докумСнтация, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, сцСнарии создания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для дистрибутивов ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сборочныС Ρ„Π°ΠΉΠ»Ρ‹. Π’ основном Ρ‚Π°ΠΊΠΎΠ΅ происходит Π² силу историчСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΈ особСнностСй процСссов формирования Ρ€Π΅Π»ΠΈΠ·ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚Π°Ρ свСрка соотвСтствия Π½Π°Ρ‡ΠΈΠ½ΠΊΠΈ рСпозитория ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π° Π² этом случаС Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.

Как Π²Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Ρ€Π΅Π»ΠΈΠ·Π°, ΠΊΠ°ΠΊ ΠΈΠ· рСпозитория (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ автоматичСски Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π² GitHub Π°Ρ€Ρ…ΠΈΠ² для Ρ€Π΅Π»ΠΈΠ·Π½ΠΎΠ³ΠΎ Ρ‚Π΅Π³Π°), Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π°, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌ, сравнивая Π·Π°Ρ‚Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π’ качСствС экспСримСнта Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠΊΠ° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ°ΠΊΠ΅Ρ‚Π° Β«xzΒ». Если экспСримСнт окаТСтся ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… Π² nixpkgs.

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

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