Fil-C 0.682 β€” бСзопасност Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π±Π΅Π· прСзаписванС


2

ΠŸΡƒΡΠ½Π°Ρ‚ бСшС Fil-C 0.682 β€” ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ Π½Π° C ΠΈ C++, ΠΊΠΎΠΉΡ‚ΠΎ осигурява пълна бСзопасност Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π΄Π°Π²Π° Π³Π°Ρ€Π°Π½Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ Π΅Π·ΠΈΡ†ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Rust. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ сС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΎΡ‚ Π€ΠΈΠ»ΠΈΠΏ Пизло, ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ сС Π½ΡƒΠΆΠ΄Π°Π΅ ΠΎΡ‚ прСдставянС.

Fil-C Π΅ Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Clang/LLVM 20.x ΠΈ позволява ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π΅Π½ ΠΊΠΎΠ΄ Π½Π° C/C++ с гаранция Π·Π° прСдотвратяванС Π½Π° всички основни уязвимости (Π΄ΠΎΡΡ‚ΡŠΠΏ извън Π³Ρ€Π°Π½ΠΈΡ†ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ слСд освобоТдаванС, Π΄Π²ΠΎΠΉΠ½ΠΎ освобоТдаванС, ΠΎΠ±ΡŠΡ€ΠΊΠ²Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅). Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ ASan ΠΈΠ»ΠΈ MTE, Fil-C ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° строго бСзопасна ΠΎΠ±Π΅ΠΊΡ‚Π½Π° модСль ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ½ΠΎ Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΊΠΈ, ΠΊΠ°Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅ с unsafe.

ΠŸΡ€Π΅Π· ΠΈΠ·ΠΌΠΈΠ½Π°Π»Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΏΡ€Π΅ΠΌΠΈΠ½Π° ΠΎΡ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»Π½ΠΎ доказатСлство Π·Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎ ΠΏΡŠΠ»Π½ΠΎΠΏΡ€Π°Π²Π΅Π½ инструмСнтариум с ΠΌΠ°Ρ‰Π°Π±Π½Π° СкосистСма.

Основни характСристики ΠΈ тСхничСски Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ:

  • InvisiCaps 2.0 ΠΈ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π½Π° ΠΌΠΎΠ΄Π΅Π»Π° Capability: БистСмата Π·Π° ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰ΠΈΡ (capabilities) Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΡ€Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π°, прослСдявайки Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π±Π΅Π· промяна Π½Π° 64-битния ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² адрСсното пространство Π½Π° C. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ Π΅ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° capability, Π½Π°ΠΌΠ°Π»Π΅Π½ΠΈ са Π½Π°ΠΊΠ»Π°Π΄Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° union, memcpy, Π°Ρ‚ΠΎΠΌΠ°Ρ€Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ със структури ΠΈ ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠ°Π½Π΄Π°Ρ‚ΠΈ Ρ‡Ρ€Π΅Π· ΠΈΠ½Π»Π°ΠΉΠ½-асСмблСр.
  • ΠŸΠ°Ρ€Π°Π»Π΅Π»Π΅Π½ сборник Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ° (FUGC): Π’ Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ-сборника Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊΠ° Fil’s Unbelievable Garbage Collector са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π° сборка, ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° слоТни ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ затваряния ΠΈ GNU Indirect Function.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ARM64: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π° Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π±Π΅ΠΊΠ΅Π½Π΄, Ρ€Π°Π½Ρ‚Π°ΠΉΠΌ, Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‡ ΠΈ ABI Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° ARM64 (Linux/aarch64), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π» Π² Ρ„Π°Π·Π° Π±Π΅Ρ‚Π°-тСстиранС Π½Π° Ρ‚Π°Π·ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.
  • БСзопасСн ΠΈΠ½Π»Π°ΠΉΠ½-асСмблСр ΠΈ SIMD: Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° изпълнСниС Π½Π° бСзопасни асСмблСрни вмъквания (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ асСмблСрни Π±Π»ΠΎΠΊΠΎΠ²Π΅ OpenSSL) с Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡŠΠ»Π½ΠΎΠΌΠΎΡ‰ΠΈΡΡ‚Π°. Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΈ инструкции SSE, AVX, AVX2 ΠΈ AVX512 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ masked load/store, expand/compress, sfence ΠΈ prefetch).
  • Escape Analysis: Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ вСрсия 0.671 Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ статично Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° изтичания Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΎΡ‚ стСковС. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-голямото ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π° Π³ΠΎΠ΄ΠΈΠ½Π°Ρ‚Π°: скоростта Π½Π° изпълнСниС Π½Π° QuickJS сС Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 6 ΠΏΡŠΡ‚ΠΈ, Π° Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ β€” ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 10%.
  • Π‘ΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ с C++ ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ стандарти: Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ C++, ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° стСка, ucontext, изчисляСми ΠΏΡ€Π΅Ρ…ΠΎΠ΄ΠΈ, std::optional ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° класови Ρ‡Π»Π΅Π½ΠΎΠ²Π΅.
  • Π—Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ опасни UB-ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° LLVM: Fil-C Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° агрСсивни ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° LLVM, зависСщи ΠΎΡ‚ ΠΠ΅Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ПовСдСниС (UB). Π’ частност, ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ strict aliasing ΠΈ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π°Π½Π°Π»ΠΎΠ³ΡŠΡ‚ -fwrapv, ΠΊΠΎΠ΅Ρ‚ΠΎ прСдотвратява Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ отстраняванС Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° бСзопасност ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°.
  • ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° LLVM/Clang 20: ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π΅ прСмСстСн Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°Ρ‚Π° Π±Π°Π·Π° Π½Π° Clang 20 (ΠΎΡ‚ вСрсия Fil-C 0.670), ΠΊΠΎΠ΅Ρ‚ΠΎ осигурява ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ ΠΈ прСносимост Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π° Linux ABI ΠΈ FFI Π½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅: Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Смуляция ΠΈ бСзопасни ΠΎΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π·Π° дСсСтки систСмни повиквания Π½Π° Linux (statx, openat2, pidfd, epoll, splice, futex, timer API ΠΈ Π΄Ρ€.), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° dlopen, dlvsym, libffi ΠΈ FFI слой Π·Π° взаимодСйствиС с външСн ΠΊΠΎΠ΄.
  • Нова конвСнция Π·Π° повиквания ΠΈ API Π½Π° Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ°: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡΡ‚ ABI Π·Π° ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Ρ†Π΅Π» намаляванС Π½Π° ΠΎΠ²Π΅Ρ€Ρ…Π΅Π΄Π°. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ API, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ zlock_runtime_threads() (Π·Π°Π΄ΡŠΡ€ΠΆΠ°Π½Π΅ Π½Π° ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° строги ΠΏΡΡΡŠΡ‡Π½ΠΈΡ†ΠΈ), ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π²Π³Ρ€Π°Π΄Π΅Π½ sampling profiler ΠΈ инструмСнти Π·Π° дъмп Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°.
  • ΠŸΡŠΠ»Π½ΠΎΡ†Π΅Π½Π΅Π½ userspace дистрибутив /opt/fil: бСзопасна систСмна срСда, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° glibc 2.40, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰Π° OpenSSH, OpenSSL, sudo, git, curl, wget, rsync, tmux, make, grep, Π° ΡΡŠΡ‰ΠΎ ΠΈ систСмни Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ (PAM, Kerberos, SELinux, ICU).

Π“ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ сборки сС разпространяват Π² Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ΅Π½ Π½Π° Π±Π°Π·Π° musl (filc) ΠΈ пълно систСмно ΠΎΠ±ΠΊΡ€ΡŠΠΆΠ΅Π½ΠΈΠ΅ /opt/fil Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ x86_64 ΠΈ ARM64.

GitHub ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈΠΌ, Ρ‡Π΅ ΠΈΠΌΠ° ΠΈ бСзопасСн ΠΏΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚ дистрибутив Linux β€” Pizlix

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster