2020-08-10: Just another Null Byte Poison via Unicode variant (MuPDF mutool RCE)

Null Byte Poison is a neat little attack that usually can be applied when "length+data"-type strings get converted into "zero-terminated"-type strings. It's a well known problem though that haunted PHP scripts for several years, and even visited the browser world. Nowadays a lot of languages (or rather: runtime environments of these languages) have built-in protections against it (including PHP!) - for instance see this Python example:

>>> open("\0") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: embedded null character

Unicode brought another similar problem to the table in the form of two ways (one invalid-yet-working) to encode a Null Byte without using an actual \x00 byte - this allows to, depending on the scenario, either bypass a Null Byte Poison detection, or actually inject a Null Byte into a "zero-terminated"-type string at a later processing stage (which is sometimes useful):

  • UTF-8 overlong sequence: \xC0\x80
  • UTF-7 being UTF-7: +AAA-

In the above cases when the strings get decoded to Unicode we (might) see Null Bytes popping up in the data. Thankfully all decent UTF-8 decoders deal properly with overlong sequences and nothing modern uses UTF-7 anyway (with the notable exception of Express.JS in some scenarios).

While playing with a path traversal bug in mutool (details below) I've found yet another Unicode-related way to inject a Null Byte into a string. This method actually relies on a decoder bug and is pretty case-specific, but I think it's worth testing for as I wouldn't be surprised to find it again in similar scenarios in the future.

The bug in question resided in this code (mupdf/source/fitz/time.c):

Read more... [ 6 comments ]

2020-07-11: PWNing Online 2020 CFP

Piąta edycja PWNingu, czyli bardzo technicznej konferencji, którą organizujemy wspólnie z Wydawnictwem Naukowym PWN, odbędzie się standardowo w listopadzie. Z tą różnicą, że w tym roku wyjątkowo przenosimy ją online z oczywistych powodów. Drugą nowością są dwie ścieżki – tj. tradycyjna SEC/HACK (bezpieczeństwo komputerowe), i nowa CODE (programowanie). Obie ścieżki mają osobne rady programowe, i osobne Call For Papers, czyli zaproszenie do zgłaszania prelekcji. A skoro już mowa o CFP...

  • SEC/HACK: CFP (CFP trwa do 31 lipca)
  • CODE: CFP (CFP trwa do 31 sierpnia)

Formularze w obu przypadkach są dostosowane do specyfiki danej branży (tj. są bardzo różne). W przypadku zaakceptowanych prelegentów z Polski będziemy zachęcać do wystąpienia w studiu w Warszawie – myślimy m.in. o dodatkowym panelu/panelach dyskusyjnych z udziałem prelegentów w studiu (zobaczymy jak wyjdzie i jak sytuacja będzie się rozwijać).

Więcej informacji można znaleźć na stronie konferencji (hint hint: do 31 lipca bilety są tańsze).

P.S. Osobno i niezależnie będzie CFP na Lightning Talks (5-10 minutowe wystąpienia) – ale o tym więcej koło sierpnia/września.

P.S.2. PWNing rok temu wyglądał tak:

Czytaj dalej... [ 2 komentarze ]

Five newest or recently updated notes (these are unfinished posts, code snippets, links or commands I find useful but always forget, and other notes that just don't fit on the blog):

Click here for a list of all notes.

EN Security papers and research notes

Some conference slides are linked at the bottom of this page.

EN Selected vulnerabilities

The full list of vulnerabilities discovered by me (including collaborative work) can be found here (please note that the list might be out of date).

The Google Application Security / Research site might also contain some of my findings.

EN Coding (selected posts)
EN Tools and libraries
  • PiXieServ is a simplified PXE (network boot) server for Windows and Linux-based OS, created for testing of very small home-made OS. See also the post about it.
  • ExcpHook, a system-wide exception monitor for Windows XP 32-bit. Useful if you're fuzzing something that doesn't like having a debugger attached.
  • Ent is an entropy measuring tool for reverse engineering reconnaissance (see also a post explaining how to use it).
  • HiperDrop is a simple command line process memory dumper for Windows, with a few different work modes.
  • asmloader - this little app executes headerless machine code (compiled assembly code). It's meant to be an aid in learning/teaching and playing with assembly, as well as the right tool when you just need to execute some machine code.
  • NetSock is a simple socket/networking lib/wrapper for C++ I've wrote back in 2003 and update from time to time - I use it for most of my network-enabled projects.
PL Videotutoriale i podcasty [ 0 views | 0 videos | 0 subscribers ]

Subscribe to me on YouTube W wolnym czasie prowadzę videocasty na żywo o programowaniu, reverse engineeringu oraz hackingu/security:

Livestream | Kanał na YT | Archiwum starszych odcinków

Najnowszy odcinek: Gynvael's Livestream #75: Implementujemy serwer FTP
[ 0 thumbs up | 0 comments | 0 views ]

Dodatkowo: ReverseCraft - starsza seria podcastów o reverse engineeringu i assembly.

PL Edukacyjnie (wybrane posty)

Dla programistów:

Security / hacking:

  • Hacking - jak uczyć się security/hackingu i spać spokojnie.

Dodatkowo, kilka przemyśleń na temat odnajdywania się na rynku pracy w IT:

PL Programowanie (wybrane posty)

← trochę więcej postów jest po angielskojęzycznej stronie.

PL Gamedev i GFX (wybrane posty)

Grafika generowana proceduralnie:

【 design & art by Xa / Gynvael Coldwind 】 【 logo font (birdman regular) by utopiafonts / Dale Harris 】