Semgrep Rules OWASP A08:2024 – Software and Data Integrity Failures
11 февраля 2026 г.·186 views

🛠 Semgrep Rules OWASP A08:2024 – Software and Data Integrity Failures

Салют,

Cегодня хочу поделиться с тобой правилами для semgrep по нарушениям целостности программного обеспечения и данных - OWASP A08:2024.

Это категория, которая включает в себя “Insecure Deserialization”, где приложение не проверяет целостность кода, данных или обновлений, что позволяет внедрять вредоносное ПО или модифицировать данные.

Типичные векторы атаки А08

• Недостаточная проверка подлинности и подгрущка кода из недоверенных источников

• Небезопасная десериализация, включая подделку объектов в памяти. Опасность в Remote Code Execution через сериализованные объекты.

• Отсутствие проверки целостности, как пример использование CDN без SRI (Subresource Integrity) и обновления без валидации.

Примеры атак

• SolarWinds (2020): атакующие взломали CI/CD пайплайн SolarWinds и внедрили бэкдор в обновление Orion, где федеральные агенства США его поставили напрямую

• 3CX Desktop App (2023): злоумышленники скомпрометировали официальную версию приложения 3CX, добавив в неё malware

• Codecov (2021): атака на процесс сборки Docker-образа Codecov, где модифицированный bash-скрипт крал credentials, токены и PII из CI/CD окружений пользователей

Пример сценария атаки

• Небезопасная десериализация в Java

// React вызывает Spring Boot микросервисы, где состояние

// пользователя сериализуется и передаётся с каждым запросом

// отслеживается сигнатура Java "rO0" (base64), где

// реализуется Java Serial Killer для RCE

ObjectInputStream in = new ObjectInputStream(request.getInputStream());

UserState state = (UserState) in.readObject();

• JS из недоверенных источников

<&#33;-- Нет SRI и проверки целостности -->

<script src="https://untrusted-cdn.com/library.js"></script>

Пример правил Semgrep по A08:2024

rules:

# Небезопасная десериализация Java

- id: unsafe-java-deserialization

patterns:

- pattern-either:

- pattern: |

ObjectInputStream &#036;IN = new ObjectInputStream(...);

...

&#036;IN.readObject()

- pattern: (ObjectInputStream &#036;IN).readObject()

- pattern-not-inside: |

class &#036;CLASS extends ValidatingObjectInputStream {

...

}

message: |

Обнаружена небезопасная десериализация через JAVA ObjectInputStream

и может привести к Remote Code Execution.

severity: ERROR

languages:

- java

meta

cwe: "CWE-502"

owasp: "A08:2021"

category: security

# npm-пакеты без проверки

- id: npm-install-without-lock-file

patterns:

- pattern-either:

- pattern: |

exec("npm install ...")

- pattern: |

subprocess.run(["npm", "install", ...])

- pattern: |

os.system("npm install ...")

- pattern-not-inside: |

...

"package-lock.json"

...

message: |

Установка npm-пакетов без проверки package-lock.json

severity: WARNING

languages:

- python

- javascript

meta

cwe: "CWE-829"

owasp: "A08:2021"

# Динамическое выполнение кода из недоверенных источников

- id: dangerous-code-execution

patterns:

- pattern-either:

- pattern: eval(&#036;INPUT)

- pattern: exec(&#036;INPUT)

- pattern: __import__(&#036;INPUT)

- pattern: compile(&#036;INPUT, ...)

- pattern-either:

- pattern-inside: |

&#036;INPUT = request.&#036;METHOD(...)

...

- pattern-inside: |

&#036;INPUT = &#036;_GET[...]

...

- pattern-inside: |

&#036;INPUT = input(...)

...

message: |

Динамическое выполнение кода из недоверенного источника

eval()/ exec() на данных приводящий к Remote Code Execution

severity: ERROR

languages:

- python

- javascript

- php

meta

cwe: "CWE-94"

owasp: "A08:2021"

likelihood: MEDIUM

impact: CRITICAL

#toolchain #sast #appsec #course #reco #techsolution

#toolchain#sast#appsec#course#reco#techsolution
Открыть в Telegram