Dziś miało miejsce kolejne spotkanie OWASP. W trakcie rozwinęła się dyskusja jak zachęcić większą ilość ludzi do przychodzenia na takie spotkania. W szczególności chodzi o:
programistów,
przedstawicieli klientów “końcowych”,
Nie osiągnie się poprawy bezpieczeństwa aplikacji, jeśli na takie spotkania będą przychodzili ludzie już zainteresowani tematem, a tak jest niestety obecnie. Jeden z obecnych na spotkaniu programistów powiedział wprost, że od niego nikt nie wymaga tworzenia bezpiecznego kodu, bo on w zasadzie ma zrealizować wymagania klienta. Dlatego też dobrze by było, gdyby na spotkania przychodzili przedstawiciele klienta, choćby po to, by wiedzieli co umieścić w wymaganiach. Jeśli wymagania odnośnie bezpieczeństwa pojawią się w podpisywanych umowach, w sposób naturalny również i programiści będą zainteresowani (odgórnie) tematem. Ludzie ci jednak nie przyjdą na spotkania OWASP, jeśli nie znajdą tematów dla nich interesujących. Co chcielibyście więc usłyszeć?
Napisałem sobie skrypt, który służył do uruchamiania narzędzia Memoryze. Problem w tym, że skrypt umieściłem w katalogu programu, a później zainstalowałem nową wersję (Memoryze now supports Vista SP1 and F-response). Okazało się, że w trakcie tego upgrade mój skrypt zniknął (instalator najpierw usunął obecnie zainstalowaną wersję, w tym katalog z całą zawartością). Nie bardzo chciało mi się pisać go jeszcze raz, więc przeszukałem cały dysk (ProDiscover Basic) na określone słowa kluczowe. Okazało się, że w kilku klastrach zostały fragmenty skryptu (prawdopodobnie pliki tymczasowe edytora), po ich odzyskaniu skrypt udało się odtworzyć.
CWE-89: Failure to Preserve SQL Query Structure (aka 'SQL Injection') pochodzi wprost z 2009 CWE/SANS Top 25 Most Dangerous Programming Errors. Osobiście bardzo się cieszę z opublikowania tego typu dokumentu, zalecenia w nim zawarte można wprost wykorzystywać jako tak zwane najlepsze praktyki , co powinno znacznie ukrócić niejednokrotnie uciążliwe dyskusje z devloperami odnośnie tego co jest, a co nie jest najlepszą praktyką. Jak Tomek kiedyś stwierdził, temat sql injection jest tematem dyżurnym na moim blogu. Tym razem trochę na temat tego, jak zmniejszyć szansę pojawienia się podatności w tworzonej aplikacji.
Co prawda “podzieliłem się” tym wpisem w Google Reader (to jest jedna z usług Google, która mnie nie irytuje), ale tu też o tym napiszę: The Trojan solved it! Catching a fraudster with another criminal, ‘myspacce.exe’. W skrócie – pracownik robił przekręty, został przyłapany ale między “przyłapaniem” a rozpoczęciem “sekcji zwłok” pracownik dość skutecznie zatarł większość śladów. Okazało się jednak, że na komputerze zainstalowany był malware, który między innymi był keyloggerem, i który przypadkiem zebrał wystarczająco dużo informacji, by pracownikowi przekręty udowodnić. Sytuacja dość paradoksalna, zwłaszcza mając na uwadze tak zwaną obronę Trojan-did it-defense.
System Windows udostępnia mechanizm śledzenia zdarzeń – mechanizm EventLog. Ponieważ są sytuacje, w których informacje gromadzone w dziennikach mogą być przydatne, napiszę kilka słów o konfiguracji tego mechanizmu. Tekst ten dotyczy systemów Windows XP/Windows 2003. W Windows Vista i nowszych mechanizm ten uległ zmianom (na lepsze). W sumie nie jest to nic odkrywczego i porywającego, ale może komuś się przyda.
Będzie krótko: postanowiłem sobie zrobić upgrade Google Earth do najnowszej wersji. Oczywiście wiązało się to znów z ręczną walką z Google Updater. Ta firma zaczyna irytować mnie coraz bardziej...
Dawno, dawno temu, jeszcze w czasach, gdy dominującym systemem był Windows 2000, prowadziłem szkolenie Hardening Windows 2000. W jego ramach pokazywałem kilka “sztuczek”, między innymi wykorzystanie Alternate Data Streams w NTFS.
The AccessReferenceMap interface is used to map from a set of internal direct object references to a set of indirect references that are safe to disclose publicly. This can be used to help protect database keys, filenames, and other types of direct object references. As a rule, developers should not expose their direct object references as it enables attackers to attempt to manipulate them.
Teoretycznie mój PoC związany z kodowaniem identyfikatorów globalnych można zrealizować jako implementację tego interfejsu. Do pewnego stopnia działanie tej hipotetycznej implementacji zbliżone byłoby do RandomAccessReferenceMap.