Skip to content

arinochk/go-ast-processor-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

go-ast-processor-cli

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ для построСния Π΄Π΅Ρ€Π΅Π²Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (консольная вСрсия)

Как ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ консольной ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ?

Π’Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄-1 Π’Π²ΠΎΠ΄ ΠΊΠΎΠΌΠ°Π½Π΄-2

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π° (ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°)

АрхитСктура микросСрвисов 2 сСрвиса - source-acquirer (Java) + ast-processor (Go)

Для отобраТСния ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΡ‰Π΅ всСго ΡΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² S3 - Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Π½Π°Ρ‡Π°Π»Π΅ Π² ci/cd ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½Π΅ вызываСтся Ρ€ΡƒΡ‡ΠΊΠ° сСрвиса source-acquirer с ссылкой Π½Π° gitlab. Π”Π°Π»Π΅Π΅, сСрвис source-acquirer ΠΊΠ»ΠΎΠ½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π² S3-Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ создаСт Π·Π°Π΄Π°Ρ‡Ρƒ Π² ΠΊΠ°Ρ„ΠΊΠ΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

БСрвис go-ast-processor Π²Ρ‹Ρ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ сообщСниС ΠΈΠ· Ρ‚ΠΎΠΏΠΈΠΊΠ°, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΊΠΎΠ΄ ΠΈΠ· Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ строит Π³Ρ€Π°Ρ„ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π² ассинхронном ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅. ΠŸΡ€ΠΈ этом Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ VTA. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ Π³Ρ€Π°Ρ„ сохраняСтся Π² Π³Ρ€Π°Ρ„ΠΎΠ²ΡƒΡŽ Π‘Π”. Π”Π°Π»Π΅Π΅, Ρ‡Π΅Ρ€Π΅Π· ci/cd осущСствляСтся статичСский Π°Π½Π°Π»ΠΈΠ· ΠΊΠΎΠ΄Π°, Ρ‡Π΅Ρ€Π΅Π· semgrep, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚Ρ‡Π΅Ρ‚ отправляСтся Ρ‡Π΅Ρ€Π΅Π· Ρ€ΡƒΡ‡ΠΊΡƒ go-ast-processor, для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΡ‚Ρ‡Π΅Ρ‚Π΅ уязвимостСй строится Π³Ρ€Π°Ρ„ с ΠΈΠ· Π³Ρ€Π°Ρ„ΠΎΠ²ΠΎΠΉ Π‘Π”. ВызываСтся Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ микросСрвис для сСрвСра хранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° с ΠΎΠ±ΡŒΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΌ Ρ‚Π΅Π»ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ go-ast-processor.

Как Π±Ρ‹Ρ‚ΡŒ с большими ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ?

ΠŸΡƒΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° VTA, Π° Π±Π΅Ρ€Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎΠ± уязвимостСй ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Находим ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ частичный Π°Π½Π°Π»ΠΈΠ· VTA Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π”Π°Π»Π΅Π΅ рассматриваСм ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· Π³Ρ€Π°Ρ„Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ², Ссли Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² мСстС опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ. ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ этот Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ, Π½ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² redis для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ всС уязвимыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹.

ИдСи для развития

ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» инструмСнта:

  • ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² для ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
  • МоТно Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ двумя функциями, Π³Π΄Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ΄Π½Π° функция Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Для этого Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΄Π²Π° Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ….
  • ΠŸΡ€Π΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ΅.
  • Поиск ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

ΠŸΡ€ΠΎ VTA

Алгоритм VTA строит Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π³Ρ€Π°Ρ„ распространСния Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Он ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΏΠΎ этому Π³Ρ€Π°Ρ„Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎΡ‚ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΠΈ динамичСских Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages