Linus Torvalds skrytykował systemy plików ignorujące wielkość liter

Linus Torvalds skrytykował systemy plików ignorujące wielkość liter

Twórca systemu Linux, Linus Torvalds, ostro skrytykował twórców systemu plików Bcachefs po ich ogłoszeniu dotyczącym poprawki związanej z obsługą nazw katalogów w trybie niewrażliwym na wielkość liter. Jego zdaniem problem nie jest nowy, a deweloperzy najwyraźniej nie wyciągnęli wniosków z wcześniejszych błędów.

Na czym polega problem

Chodzi o specyfikę standardu Unicode, który jest bardzo elastyczny, ale zarazem złożony. Mechanizm tzw. case folding, czyli sprowadzania znaków do wspólnej wielkości liter, zawiera wiele wyjątków i sytuacji brzegowych, których nie sposób uwzględnić w pełni. W efekcie zachowanie aplikacji może odbiegać od tego, jak dany system plików interpretuje podobne znaki. Przykładowo: pewne symbole mogą wyglądać identycznie dla użytkownika, lecz mieć różną reprezentację bajtową – i odwrotnie.

Torvalds uważa, że próby „poprawnego” zaimplementowania niewrażliwości na wielkość liter tylko komplikują sprawę: deweloperzy zmuszeni są nadawać specjalne znaczenie konkretnym bajtom lub sekwencjom znaków, co prowadzi do nowych klas błędów i potencjalnych podatności. Może to wpływać także na bezpieczeństwo — kiedy aplikacja oczekuje konkretnej nazwy pliku, a system plików interpretuje ją inaczej.

Torvalds przypomniał, że czasy systemu FAT, w którym ignorowanie wielkości liter było standardem, dawno minęły. Podkreślił, że nowoczesne systemy plików powinny iść do przodu, a nie kopiować przestarzałe podejścia, które w obecnych warunkach częściej szkodzą, niż pomagają.

Fragment listu Torvaldsa do listy mailingowej jądra Linux 👇

Jedyny wniosek: deweloperzy systemów plików niczego się nie uczą. Obsługa nazw plików ignorująca wielkość liter to katastrofalny błąd, który nigdy nie powinien zostać zaimplementowany. Problem nie leży w braku testów — tylko w samej decyzji o wprowadzeniu takiego mechanizmu.
Później robi się jeszcze gorzej, gdy ktoś próbuje „zrobić to dobrze” — choć z definicji jest to niemożliwe. Kończy się na tym, że arbitralne bajty zyskują status „magicznych” wartości.
A przy okazji — testy są całkowicie wadliwe. Kiedy ostatnio je przeglądałem, nie obejmowały naprawdę interesujących przypadków — takich, które mogą prowadzić do podatności po stronie użytkownika.
Przykład? Aplikacja w przestrzeni użytkownika sprawdza, czy nazwa pliku nie pasuje do bezpiecznego wzorca. A system plików z ignorowaniem wielkości liter i tak pozwala to obejść — bo deweloperzy takich systemów zawsze robią coś w stylu ignorowania znaków niedrukowalnych. Finalnie „niewrażliwość na wielkość liter” staje się „niewrażliwością na Bóg wie co”.
Zobaczcie komity: 5c26d2f1d3f5 („unicode: Don’t special case ignorable code points”) oraz 231825b2e1ff („Revert ’unicode: Don’t special case ignorable code points’”)— i płaczcie.
Podpowiedź: ❤ i ❤️ to dwa różne znaki Unicode, różniące się wyłącznie tzw. ignorowanymi punktami kodowymi. I zgadnijcie co? Gdy niekompetentni deweloperzy chcą traktować je jako identyczne — przypadkowo sprawiają, że inne, być może kluczowe z punktu widzenia bezpieczeństwa, nazwy plików również są traktowane jako tożsame.
W rezultacie każda aplikacja, która filtruje ścieżki plików w celu uniknięcia określonych katalogów, może zostać oszukana i zmuszona do pracy z plikami, z którymi nie powinna mieć kontaktu. I nie — to nie jest egzotyczna anomalia, lecz codzienna praktyka: wiele aplikacji polega na takich zabezpieczeniach.
Cholera jasna. Obsługa nazw plików ignorująca wielkość liter to błąd. Fakt, że deweloperzy systemów plików nadal traktują to jak „funkcję”, jest dla mnie niezrozumiały. Jakby tak bardzo kochali archaiczny system FAT, że próbują go naśladować — tylko jeszcze gorzej.

Linus Torvalds

Co o tym sądzicie? Czy systemy plików niewrażliwe na wielkość liter rzeczywiście nie powinny istnieć, czy jednak mają jeszcze sens?

Avatar
Feb 10, 2025

10 technologii, które zmienią świat w najbliższych dekadach

MIT Technology Review, prestiżowe czasopismo o technologii i innowacjach, od 24 lat publikuje listę 10 przełomowych technologii, które mogą wpłynąć na nasze codzienne życie. W przeszłości ich prognozy obejmowały zarówno celne przewidywania, jak asystenci głosowi (np. Siri) czy przetwarzanie języka naturalnego, jak i mniej trafione koncepcje, np. społecznościową telewizję, która miała umożliwiać wspólne oglądanie programów na odległość.
0
May 15

Amazon redukuje zatrudnienie w działach Alexa, Echo i Kuiper. Zwolnienia objęły 100 osób

Amazon potwierdził 14 maja redukcję ok. 100 etatów w dziale Devices & Services, odpowiedzialnym m.in. za rozwój Alexy, inteligentnych głośników Echo, samochodów autonomicznych Zoox oraz satelitarnego projektu Kuiper. To kolejna fala zwolnień w tym obszarze — wcześniejsze cięcia miały miejsce w 2022 i 2023 roku. Informuje serwis CNBC.
0
Apr 29

OpenAI wprowadza zakupy w ChatGPT, konkurując z Google

OpenAI ogłosiło uruchomienie nowej funkcji zakupowej w ChatGPT – informuje TechCrunch. Użytkownicy mogą teraz wyszukiwać produkty, przeglądać rekomendacje oparte na recenzjach i opinii innych użytkowników, a następnie przechodzić bezpośrednio na strony sprzedawców w celu finalizacji zakupu. Funkcja jest dostępna zarówno dla użytkowników zalogowanych, jak i niezalogowanych, na całym świecie.
0

This site uses cookies to offer you a better browsing experience.

Find out more on how we use cookies and how to change cookie preferences in our Cookies Policy.

Customize
Save Accept all cookies