I am suddenly seeing a huge number of httpd coredumps (578 in the past three
hours, coming from only 10 unique IP addresses), all of them for the same cause:
```
(gdb) backtrace
#0 apr_strtok (str=0x7f3a8800fbc8 "88.54.217.50", sep=sep@entry=0x7f3aa9d62389
", ", last=last@entry=0x0) at strings/apr_strtok.c:46
#1 0x00007f3aa9d5b2da in delay_allowed (state=tileCurrent, r=0x7f3a8801a8d0)
at ./src/mod_tile.c:838
```
This is mod_tile passing the contents of X-Forwarded-For to apr_strtok, which
then barfs. I don't understand C, but I suspected a type mismatch in apr_strtok
expecting string and getting integer or vice versa. So I tried to convert hex
0x7f3a8800fbc8 and 0x7f3aa9d62389 to text, and got 저 and 褀 respectively with
UTF-16.
Now, I am not sure that these two hex values were actually sent to apr_strtok,
nor that my hex-to-UTF-16 conversion is the correct one, but it seems very
likely that these clients are sending garbage in their X-Forwarded-For. Which
is easy for anyone to do, accidentally or maliciously. And mod_tile does no
sanity check on X-Forwarded-For before passing to apr_strtok whatever it got
from the client.
Thus, a sanity check just before mod_tile.c:838 would make a lot of sense, even
if my troubleshooting is flawed somehow.
mod_tile 0.7.1, httpd 2.4.62.
--
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/mod_tile/issues/473
You are receiving this because you are subscribed to this thread.
Message ID: <openstreetmap/mod_tile/issues/[email protected]>
_______________________________________________
Tile-serving mailing list
[email protected]
https://lists.openstreetmap.org/listinfo/tile-serving