#11498: HLS upload corrupted hostname any.tld -> any0.ts
----------------------------------+---------------------------------------
             Reporter:  Chad      |                     Type:  defect
               Status:  new       |                 Priority:  important
            Component:  ffmpeg    |                  Version:  unspecified
             Keywords:  security  |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+---------------------------------------
 Summary of the bug:
 How to reproduce:
 {{{
 % ffmpeg -f lavfi -i anullsrc  -f hls 'https://example.ffmpeg/'
 ffmpeg version 5.1.6-0+deb12u1
 built on x86_64 debian linux

 [tcp @ 0x556264c65a80] Failed to resolve hostname example0.ts: Name or
 service not known
 [hls @ 0x556264c21280] Failed to open file 'https://example0.ts'
 av_interleaved_write_frame(): Input/output error
 [hls @ 0x556264c21280] Opening 'https://example0.ts' for writing
 [tcp @ 0x556264c5d000] Failed to resolve hostname example0.ts: Name or
 service not known
 [hls @ 0x556264c21280] Failed to open file 'https://example0.ts'
 av_interleaved_write_frame(): Input/output error
 [hls @ 0x556264c21280] Opening 'https://example0.ts' for writing
 [tcp @ 0x556264c40600] Failed to resolve hostname example0.ts: Name or
 service not known
 [hls @ 0x556264c21280] Failed to open file 'https://example0.ts'
 av_interleaved_write_frame(): Input/output error
 [hls @ 0x556264c21280] Opening 'https://example0.ts' for writing
 [tcp @ 0x556264c40280] Failed to resolve hostname example0.ts: Name or
 service not known
 [hls @ 0x556264c21280] Failed to open file 'https://example0.ts'
 [tcp @ 0x556264c5c480] Failed to resolve hostname example.ffmpeg: Name or
 service not known
 }}}


 There is currently no **ts** top-level domain name, but this is a security
 problem in that the resolver will iterate through search space for names
 you did not define. If there becomes a "ts" TLD, then the entirety of
 uploads can be hijacked by anyone registering names within it!

 Put "127.42.0.42 baz0.ts" in your resolver, like /etc/hosts .

 Then use ffmpeg to stream to any "baz.$TLD", like baz.com or baz.example,
 and see ffmpeg attempt to connect to 127.42.0.42!

 {{{
 $ sudo tcpdump host 127.42.0.42 -i any -n

 11:08:24.781749 lo    In  IP 127.0.0.1.40936 > 127.42.0.42.443: Flags [S],
 seq 4198081759, win 65495, options [mss 65495,sackOK,TS val 2139554443 ecr
 0,nop,wscale 7], length 0
 11:08:24.781756 lo    In  IP 127.42.0.42.443 > 127.0.0.1.40936: Flags
 [R.], seq 0, ack 4198081760, win 0, length 0
 11:08:24.782013 lo    In  IP 127.0.0.1.40946 > 127.42.0.42.443: Flags [S],
 seq 1337330299, win 65495, options [mss 65495,sackOK,TS val 2139554443 ecr
 0,nop,wscale 7], length 0
 11:08:24.782017 lo    In  IP 127.42.0.42.443 > 127.0.0.1.40946: Flags
 [R.], seq 0, ack 1337330300, win 0, length 0
 11:08:24.782219 lo    In  IP 127.0.0.1.40958 > 127.42.0.42.443: Flags [S],
 seq 3107017613, win 65495, options [mss 65495,sackOK,TS val 2139554444 ecr
 0,nop,wscale 7], length 0
 11:08:24.782222 lo    In  IP 127.42.0.42.443 > 127.0.0.1.40958: Flags
 [R.], seq 0, ack 3107017614, win 0, length 0
 11:08:24.782306 lo    In  IP 127.0.0.1.40966 > 127.42.0.42.443: Flags [S],
 seq 4226785382, win 65495, options [mss 65495,sackOK,TS val 2139554444 ecr
 0,nop,wscale 7], length 0
 11:08:24.782309 lo    In  IP 127.42.0.42.443 > 127.0.0.1.40966: Flags
 [R.], seq 0, ack 4226785383, win 0, length 0
 }}}

 If you have corporate dns and have "company.com internal.company.com" in
 your DNS resolver search list and you try to upload to youtube.com, you
 will first try

 youtube0.ts.

 youtube0.ts.company.com.

 youtube0.ts.internal.company.com.

 and if any of those exist, then someone has hijacked your connection to
 youtube.com. .
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11498>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to