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