Π˜Π½Ρ†ΠΈΠ΄Π΅Π½Ρ‚ с ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Π²Π΅Ρ‚ΠΊΠ΅ ядра Linux ΠΎΡ‚ КСса ΠšΡƒΠΊΠ°

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π» ΠΎΡ‚ администратора kernel.org Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись КСса ΠšΡƒΠΊΠ°, Π±Ρ‹Π²ΡˆΠ΅Π³ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ сисадмина kernel.org ΠΈ Π»ΠΈΠ΄Π΅Ρ€Π° Ubuntu Security Team, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π² ядрС 14 подсистСм, связанных с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚ΠΈΠ½ РябцСв, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠΉ Π·Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ инфраструктуры kernel.org, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. Поводом для Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ послуТил pull-запрос Π½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² Π²Π΅Ρ‚ΠΊΡƒ ядра 6.16 ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΉΡΡ Π½Π° git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° информация ΠΎΠ± авторствС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².

Π’ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ КСсом git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ присутствовали Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ измСнСния, Π² ΠΏΠΎΠ»Π΅ Π°Π²Ρ‚ΠΎΡ€Π° ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅Ρ€Π° Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Π½ Β«Linus TorvaldsΒ», Π½ΠΎ Линус ΠΈΡ… Π½Π΅ добавлял. НапримСр, ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Линуса Π² Π²Π΅Ρ‚ΠΊΠ΅ КСса имСлся ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ повторял Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ Π² Π²Π΅Ρ‚ΠΊΠ΅ Линуса, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ…ΡΡˆΠ΅ΠΌ SHA1. Оба ΠΊΠΎΠΌΠΌΠΈΡ‚Π° выглядят ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ подписи.

ИзмСнСния Π½Π΅ ΠΏΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΈ Π½Π° ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«git rebaseΒ», Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ содСрТали Π½Π΅Π²Π΅Ρ€Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°. Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ посчитал это слСдами ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ врСдоносной активности ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΡ€ΠΈΡ‘ΠΌΠ° Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΡ‚ КСса, Π΄ΠΎ выяснСния ΠΏΡ€ΠΈΡ‡ΠΈΠ½ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… манипуляций ΠΈ подтвСрТдСния, Ρ‡Ρ‚ΠΎ систСма КСса Π½Π΅ Π±Ρ‹Π»Π° скомпромСтирована.

КСс ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ ΠΌΠΎΠ³Π»ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ. Π”ΠΎ этого ΠΎΠ½ столкнулся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ объСдинСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… своих git-Π²Π΅Ρ‚ΠΎΠΊ, послС Ρ‡Π΅Π³ΠΎ попытался Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Β«git rebaseΒ», Π½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ это Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. Всё это происходило Π½Π° Ρ„ΠΎΠ½Π΅ сбоя SSD-накопитСля, Π²Ρ‹Π΄Π°Π²Π°Π²ΡˆΠ΅Π³ΠΎ ошибки Π²ΠΎ врСмя копирования. КСс считал, Ρ‡Ρ‚ΠΎ послС сбоя Π΅ΠΌΡƒ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС своих Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅Π², Π½ΠΎ судя ΠΏΠΎ всСму это Π½Π΅ Ρ‚Π°ΠΊ. Для восстановлСния цСлостности КСс Π½Π°ΠΌΠ΅Ρ€Π΅Π½ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои Π²Π΅Ρ‚ΠΊΠΈ ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ. Π’ качСствС Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ вСроятной ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ возникшСй ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π° КСс считаСт Π½Π΅ΡƒΠ΄Π°Ρ‡Π½ΡƒΡŽ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ восстановлСния рСпозитория послС Π΅Π³ΠΎ поврСТдСния.

Линуса Π½Π΅ устроило Ρ‚Π°ΠΊΠΎΠ΅ объяснСниС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ, ΠΏΠΎ Π΅Π³ΠΎ мнСнию, измСнСния истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ КСса ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΏΡ€Π΅Π΄Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½Ρ‹Π΅ дСйствия, Π° Π½Π΅ Π½Π° случайный сбой. ΠŸΠ΅Ρ€Π΅Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ истории ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Β«git rebaseΒ» ΠΌΠΎΠ³Π»ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅Ρ€Π°, Π½ΠΎ Линус Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ подобная опСрация Β«git rebaseΒ» ΠΌΠΎΠ³Π»Π° Π±Ρ‹Ρ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π° ΠΏΠΎ ошибкС.

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π΄Π²ΡƒΡ… ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΎ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ КСса Π±Ρ‹Π»ΠΈ пСрСзаписаны Π±ΠΎΠ»Π΅Π΅ ΡˆΠ΅ΡΡ‚ΠΈ тысяч merge-ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ², ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² 330 Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π» выставлСн Линус, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΈΠ· git-Π΄Π΅Ρ€Π΅Π²Π° Линуса. Π‘ΠΎΠ²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Π΅ измСнСния большС Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ скрипта, Ρ‡Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ поврСТдСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π° Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»Π΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пСрСсоздания ΠΊΠΎΠΏΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°.

КСс ΡƒΠ²Π΅Ρ€ΠΈΠ» Линуса, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π» этого ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ стал Π±Ρ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ экспСримСнты Π±Π΅Π· прСдупрСТдСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ экспСримСнт ΠΏΠΎ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π±Ρ‹Π» согласован с Линусом). На этой Π½Π΅Π΄Π΅Π»Π΅ ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ» нСсколько Ρ€ΡƒΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ попытаСтся Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ пошло Π½Π΅ Ρ‚Π°ΠΊ, ΠΈ воспроизвСсти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. НапримСр, КСс выполнял ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ rebase для git-Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² for-next/hardening ΠΈ for-linus/hardening, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π²Π΅Ρ‚ΠΊΡƒ Β«masterΒ», Π° Π½Π΅ rc2. Π’ Ρ…ΠΎΠ΄Π΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ½ вносил измСнСния Π² скрипты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ push-запросов.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: КСс ΠšΡƒΠΊ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ сообщСниС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ заявил, Ρ‡Ρ‚ΠΎ вСроятнСС всСго ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ·-Π·Π° использования ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Β«git-filter-repoΒ», Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ истории ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, Π² сочСтании с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Β«b4 trailersΒ», ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ для получСния ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅ΠΉΠ»Π΅Ρ€ΠΎΠ² ΠΊ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«Signed-off-by:Β»).

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

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