Systemy operacyjne jak i aplikacje zajmują coraz więcej miejsca nie tylko na dysku twardym, ale apetyt na moc procesora i pamięć RAM zdaje się rosnąć z każdym kolejnym wydaniem. Nic w sumie dziwnego, oprogramowanie staje się coraz bardziej złożone, jak i same technologie, w których pisze się aplikacje z góry determinują przypuszczalne wymagania sprzętowe danego produktu. Programuje się łatwiej i przyjemniej, kosztem wykorzystanych zasobów. Jest jednak pewna grupa śmiałków, która postanowiła stworzyć kompletny system operacyjny korzystając z języka programowania niskiego poziomu, jakim jest assembler. Projekt nosi nazwę MenuetOS, a jego twórcą jest Ville Turjanmaa.
System operacyjny posiada własne jądro wspierające wielozadaniowość z wywłaszczeniem wraz z bogatym zapleczem sterowników nie tylko do popularnych urządzeń typu klawiatury, myszki, karty sieciowe czy nośniki wymienne. MenuetOS potrafi bez problemu obsługiwać liczne karty graficzne, telewizyjne, drukarki jak i kamerki internetowe. Użytkownik końcowy otrzymuje do wykorzystania autorskie środowisko graficzne z podstawowymi aplikacjami również w całości napisane w assemblerze.
Twórcom projektu nigdzie się nie śpieszy z wydawaniem nowych wersji. Jak sami wspominają, wolą wolny, ale za to stabilny rozwój. System jest jednak na tyle dojrzały, że w przyszłym roku planowane jest wydanie pierwszej stabilnej wersji. Zainteresowani deweloperzy przy wykorzystaniu API już mogą rozpocząć pisanie własnych aplikacji.
Najważniejszą cechą systemu jest jego bezpieczeństwo, ponieważ cały kod praktycznie od razu jest przekształcany w kod maszynowy. Brak pośrednich kompilatorów eliminuje „wstrzyknięcie” ewentualnych furtek bezpieczeństwa. Cały system wraz ze środowiskiem graficznym, sterownikami i podstawową bazą aplikacji mieści się na jednej dyskietce o rozmiarze 1,44 MB. Strona projektu dostępna jest pod tym linkiem.
Źródło: MenuetOS




„Najważniejszą cechą systemu jest jego bezpieczeństwo, ponieważ cały kod praktycznie od razu jest przekształcany w kod maszynowy. Brak pośrednich kompilatorów eliminuje „wstrzyknięcie” ewentualnych furtek bezpieczeństwa.”
Od kilkunastu lat zajmuję się szeroko pojętymi „komputerami” i zupełnie nie rozumiem o co chodzi autorowi.
Co to jest „wstrzyknięcie” furtek bezpieczeństwa? Czy autorowi chodzi o code czy sql injection? Czy może autor miał na myśli wykorzystanie jakiegoś błędu przepełnienia bufora do wykonania jakiegoś kodu?
Jeśli chodzi o to pierwsze, to występuje to chyba tylko w językach interpretowanych – więc co ma do systemu operacyjnego pisanego w assemblerze? Jeśli chodzi o drugie, to assembler wcale nie zabezpiecza przed przepełnieniem bufora.
No i najważniejsze:
„Najważniejszą cechą systemu jest jego bezpieczeństwo, ponieważ cały kod praktycznie od razu jest przekształcany w kod maszynowy”
Jaka jest znacząca różnica dla bezpieczeństwa pomiędzy kompilacją programu napisanego w assemblerze a napisanego w c?
W trakcie trwania tej całej afery z NSA, podsłuchami i innymi tego typu rzeczami niektórzy programiści zaczęli się zastanawiać nad jedną ciekawą sprawą. Gdyby kompilator o zamkniętym kodzie wprowadzał podczas kompilacji aplikacji „furtkę”, podkreślam, podczas kompilacji, to można by było coś takie wykorzystać.
Kto dzisiaj używa kompilatorów o zamkniętym kodzie?
Ok, teoretycznie jest coś takiego możliwe. Widocznie nie jestem na czasie z najnowszymi teoriami spiskowymi 😀
Ale:
– gdyby jakaś firma zrobiła taki kompilator – np. Microsoft – to na pewno ktoś by to znalazł i nikt już by nie kupił tego kompilatora ani żadnej z następnych wersji
– gdyby jakaś dystrybucja Linuksa rozpowszechniała taki kompilator, to również na pewno po jakimś czasie wyszłoby to na światło dzienne. Popatrzcie się na takiego CentOS’a – dążą do tego, żeby robić OS w 100% kompatybilny z RHEL’em. Gdyby RedHat wrzucił coś do swojego kompilatora, to goście z CentOS’a by wyłapali, że coś jest nie tak z kompilatorem z RHEL’a, bo oni mają binarki niekompatybilne z systemem bazowym.
Takie rzeczy są teoretycznie możliwe dla jakiś mało popularnych kompilatorów robionych przez firmy, które nie mają dużo do stracenia. Nie wiem czy ktoś z czegoś takiego korzysta.
Myślę, że chodziło o to, że kompilator może być zainfekowany i dodawać złośliwy kod do pliku wynikowego. Gdy piszesz w asemblerze jesteś w stanie policzyć jak duży powinien być plik wynikowy i sprawdzić czy czegoś tam kompilator nie dokleił. Moim zdaniem czysto teoretyczna przewaga. Za to wadą jest to, że dużo łatwiej w asemblerze popełnić błąd, który może być wykorzystany przez potencjalny malware (chociaż kto by miał taki malware pisać…).
Osnews zmienilo szate, ale glupoty dalej te same.
Assembler chroni przed atakami? Jest bezpieczniej bo mozesz sobie policzyc rozmiar?
A ten trik z kompilatorem dodajacym kod juz byl grany, i manie zrodel kompilatora nie pomoze. Tutaj cos do poczytania:
http://cm.bell-labs.com/who/ken/trust.html
Tutaj fragmenty:
The moral is obvious. You can’t trust code that you did not totally create yourself. No amount of source-level verification or scrutiny will protect you from using untrusted code.
I could have picked on any program-handling program such as an assembler, a loader, or even hardware microcode. As the level of program gets lower, these bugs will be harder and harder to detect.
Generalnie, jesli masz podejrzenia, ze Twoj kompilator jest trefny, to rownie dobrze mozesz zalozyc, ze kazdy element moze byc trefny, mozesz juz miec np. rootkita.
Autor powyższej wiadomości sprytnie „wstrzykną” złośliwy fragment zdania dotyczący bezpieczeństwa oprogramowania napisanego w assemblerze, aby zmobilizować czytelników do zabrania głosu – tak to odbieram 😀
Należy dodać, że podobne projekty występowały w przeszłości. Fajnym projektem był QNX Neutrin.
P.S.
MenuetOS – system mieszczący się na jednej dyskietce , tylko gdzie teraz znaleźć dyskietki i stosowny czytnik ? 😛
Pewnie tak. Dałem się „wkręcić” 😛
Ale to pewnie dla tego, że wychodzę z założenia, że jak ktoś coś pisze, to powinien wiedzieć o czym pisze a miałem wrażenie, że autor nie do końca wie o co mu chodzi. Skończyło się na tym, że powinienem więcej czytać o „nowych trendach” 😉