Paweł Goleń, blog

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ć?

Czytaj dalej...

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ć.

Czytaj dalej...

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.

Czytaj dalej...

Tradycyjnie razem z uaktualnieniami pojawiła się kolejna wersja Malicious Software Removal Tool (można też pobrać oddzielnie: Malicious Software Removal Tool). Postanowiłem sprawdzić skuteczność tego narzędzia na swojej kolekcji próbek.

Czytaj dalej...

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.

Czytaj dalej...

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.

Czytaj dalej...

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...

Czytaj dalej...

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.

Czytaj dalej...

Porównanie skanerów aplikacji webowych. Zdecydowanie warte przeczytania (oryginalny wpis na blogu: Web Vulnerability Scanners Comparison). Porównanie dotyczyło skanerów:

  • Acunetix WVS version 6.0 (Build 20081217),
  • IBM Rational AppScan version 7.7.620 Service Pack 2,
  • HP WebInspect version 7.7.869,

Proponuję zwrócić uwagę na testy trzech aplikacji demonstracyjnych:

  • testphp.acunetix.com (Acunetix),
  • demo.testfire.net (Watchfire/IBM),
  • zero.webappsecurity.com (HP),

Nie twierdzę, że narzędzia automatyczne są złe. Twierdzę jednak, że ich wykorzystanie nie zawsze jest wystarczające.

Czytaj dalej...

W ramach OWASP istnieje projekt OWASP Enterprise Security API. W ramach tego projektu istnieje interfejs AccessReferenceMap, który implementowany jest przez dwie klasy IntegerAccessReferenceMap oraz RandomAccessReferenceMap. Koncepcja tego interfejsu jest prosta:

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.

Oryginał tego wpisu dostępny jest pod adresem Global-id i AccessReferenceMap

Autor: Paweł Goleń