Google ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ClusterFuzzLite, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° fuzzing ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΡΠ°Π½Π½ΠΎ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ClusterFuzz ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° fuzz ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ²ΠΊΠΈ Π·Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π² GitHub Actions, Google Cloud Build ΠΈ Prow, Π½ΠΎ Π² Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΡΡΠ³ΠΈ CI ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° ClusterFuzz, ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π·Π° ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠΈΡΠ΅ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° fuzzing ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache 2.0.
ΠΡΠ±Π΅Π»ΡΠ·Π²Π° ΡΠ΅, ΡΠ΅ ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Google ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈ ΡΡΠ»ΡΠ³Π°ΡΠ° OSS-Fuzz ΠΏΡΠ΅Π· 2016 Π³., ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 500 Π²Π°ΠΆΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π±ΡΡ Π° ΠΏΡΠΈΠ΅ΡΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° fuzzing. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ Π±ΡΡ Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 6500 ΠΏΠΎΡΠ²ΡΡΠ΄Π΅Π½ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΈ Π±ΡΡ Π° ΠΊΠΎΡΠΈΠ³ΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 21 Ρ ΠΈΠ»ΡΠ΄ΠΈ Π³ΡΠ΅ΡΠΊΠΈ. ClusterFuzzLite ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° fuzzing Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΠΎ-ΡΠ°Π½ΠΎ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ClusterFuzzLite Π²Π΅ΡΠ΅ Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π½Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠ΅ systemd ΠΈ curl ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΎΠΏΡΡΠ½Π°ΡΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ½ΠΈΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ ΠΈ Π»ΠΈΠ½ΡΠ΅ΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Π½Π°ΡΠ°Π»Π½ΠΈΡ Π΅ΡΠ°ΠΏ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½ΠΎΠ² ΠΊΠΎΠ΄.
ClusterFuzzLite ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² C, C++, Java (ΠΈ Π΄ΡΡΠ³ΠΈ JVM-Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π΅Π·ΠΈΡΠΈ), Go, Python, Rust ΠΈ Swift. Fuzzing ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ LibFuzzer. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ AddressSanitizer, MemorySanitizer ΠΈ UBSan (UndefinedBehaviorSanitizer) ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π²ΠΈΠΊΠ°Π½ΠΈ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΈ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
ΠΡΠ½ΠΎΠ²Π½ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ClusterFuzzLite: Π±ΡΡΠ·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° Π½Π°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π°; ΠΈΠ·ΡΠ΅Π³Π»ΡΠ½Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄ΠΈ Π·Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡΠ° Π½Π° ΡΡΠΈΠ²; ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ ΠΊΡΠΌ ΠΏΠΎ-Π½Π°ΠΏΡΠ΅Π΄Π½Π°Π»ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠΈΠ²Π°Π½Π΅, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Ρ ΠΏΠΎ-Π΄ΡΠ»Π±ΠΎΠΊΠΈ Π³ΡΠ΅ΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈ ΡΠ»Π΅Π΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΊΠΎΠ΄Π°; Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ Π·Π° ΠΎΡΠ΅Π½ΠΊΠ° Π½Π° ΠΏΠΎΠΊΡΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅; ΠΌΠΎΠ΄ΡΠ»Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ.
ΠΠ΅ΠΊΠ° ΠΏΡΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΠ΅ fuzzing ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΡΠΎΠΊ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΎΡ Π²Ρ
ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° Π±Π»ΠΈΠ·ΠΊΠΈ Π΄ΠΎ ΡΠ΅Π°Π»Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ html ΡΡΡΠ°Π½ΠΈΡΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΠ°Π³ΠΎΠ²Π΅, Π°ΡΡ
ΠΈΠ²ΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π°Π½ΠΎΠΌΠ°Π»Π½ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡ ΠΈ Ρ.Π½.) ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΡΡ
Π½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠΊΠΎ Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΡΠ΅ ΡΡΠΈΠ½Π΅ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈΡ ΠΎΡΠ³ΠΎΠ²ΠΎΡ, ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° Π³ΡΠ΅ΡΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru