AikidoSec/firewall-java

GitHub: AikidoSec/firewall-java

为 Java 应用提供内嵌运行时防火墙,防止常见 Web 攻击并简化运维。

Stars: 122 | Forks: 5

![Aikido 推出的 Zen for Java](https://static.pigsec.cn/wp-content/uploads/repos/cas/7a/7a2a18f0365d70cfcdc760a8c05ecc06a4c7c7c021724cdfb82fede45d35190b.svg) # Zen,面向 Java 的应用内防火墙 | 由 Aikido 出品 [![Codecov](https://img.shields.io/codecov/c/github/AikidoSec/firewall-java?style=flat-square&token=AJK9LU35GY)](https://app.codecov.io/gh/aikidosec/firewall-java) [![欢迎提交 PR](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![单元测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/a1/a1c5f299bf44daf5715924e55a097aff01e6a95371d8db8fa0ab045155415c64.svg)](https://github.com/AikidoSec/firewall-java/actions/workflows/gradle-tests.yml) [![端到端测试](https://static.pigsec.cn/wp-content/uploads/repos/cas/4d/4da2f0b2ccf28d0e400f7e818e10594cb087b8b15148711818cb5bda3b1671c0.svg)](https://github.com/AikidoSec/firewall-java/actions/workflows/end2end.yml) Zen,让你安心的应用内防火墙——在 runtime 中运行。 Zen 是一款内嵌式 Web Application Firewall,可自动保护您的 Java 应用免受常见且关键的攻击。 Zen 通过拦截包含危险字符串的用户输入来保护您的 Java 应用,从而防止 SQL injection。它与您的 Java 应用运行在同一台服务器上,安装简便且零维护。 Zen for Java 目前支持 Java 17 及以上版本。我们支持 Java、Kotlin 和 Groovy。 ## 功能 Zen 将从内部自动保护您的 Java 应用免受以下攻击: * 🛡️ [NoSQL injection 攻击](https://www.aikido.dev/blog/web-application-security-vulnerabilities) * 🛡️ [SQL injection 攻击](https://www.aikido.dev/blog/the-state-of-sql-injections) * 🛡️ [命令注入攻击](https://www.aikido.dev/blog/command-injection-in-2024-unpacked) * 🛡️ [路径遍历攻击](https://owasp.org/www-community/attacks/Path_Traversal) *此支持目前仅限于 Path/Paths 和 new File(String)* * 🛡️ [服务器端请求伪造 (SSRF)](./docs/ssrf.md) * 🛡️ [攻击波检测](https://help.aikido.dev/zen-firewall/zen-features/attack-wave-protection) Zen 在与您的 Java 应用相同的服务器上自主运行,以便: * ✅ 像传统的 web application firewall (WAF) 一样保护您的应用,但不需要任何基础设施或成本。 * ✅ 按 IP 或用户对特定的 API endpoint 进行速率限制 * ✅ 允许您手动封禁特定用户 * ✅ 自动生成 API 规范 ## 支持的库和框架 ### Web 框架 #### Java * ✅ [`Spring MVC`](docs/spring.md) 3.x * ✅ [`Javalin`](docs/javalin.md) 6.x * 🚧 [`Spring Webflux`](docs/spring_webflux.md) 3.x #### Kotlin * ✅ [`Spring MVC`](docs/spring.md) 3.x * ✅ [`Javalin`](docs/javalin.md) 6.x * 🚧 [`Spring Webflux`](docs/spring_webflux.md) 3.x * 🚧 `Ktor` #### Groovy * ✅ [`Spring MVC`](docs/spring.md) 3.x * 🚧 [`Spring Webflux`](docs/spring_webflux.md) 3.x #### 🚧 Scala * 🚧 `Akka` ### 数据库驱动 * ✅ [`MariaDB Java Client`](https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client) * ✅ [`Microsoft JDBC Driver For SQL Server`](https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc) * ✅ [`MySQL Connector/J`](https://mvnrepository.com/artifact/com.mysql/mysql-connector-j) * ✅ [`PostgreSQL JDBC Driver`](https://mvnrepository.com/artifact/org.postgresql/postgresql) * ✅ [`HyperSQL JDBC Driver`](https://mvnrepository.com/artifact/org.hsqldb/hsqldb) * ✅ `SQLite JDBC Drivers` ### API 工具 * ✅ [`OkHttp`](https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp) (*不涵盖 SSRF 重定向*) * ✅ [`Apache HttpClient`](https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient) (*不涵盖 SSRF 重定向*) ## 安装 您可以[在此](https://github.com/AikidoSec/firewall-java/releases/latest)下载 zip 文件来安装 Zen,并将其解压到您选择的目录中, 这里我们以 Linux 系统为例,将其解压到了 `/opt/zen`。我们也支持 Windows 和 Mac OS X。 请确保您没有更改此文件夹的结构,并且进程对其具有读写权限。 要激活 Zen,您只需在 Java 命令中的 `-jar` 参数**之前**添加以下 `-javaagent` ``` java -javaagent:/opt/zen/agent.jar -jar build/myapp.jar ``` 将 `/opt/zen` 替换为您选择的目录。 要使用用户封禁和/或速率限制功能,您需要将以下 Jarfile 包含到您的 repository 中 ### Gradle 将以下代码添加到您的 `build.gradle` 文件中。 ``` dependencies { # ... implementation files('/opt/zen/agent_api.jar') # ... } ``` ### Maven 将以下代码添加到您的 `pom.xml` 文件中。 ``` dev.aikido agent_api 1.0 /opt/zen/agent_api.jar ``` 如需进一步设置,请继续查看您选择的 Web 框架([点击此处查看 Spring](./docs/spring.md)) ## 报告至您的 Aikido Security 仪表板 Zen 是 Aikido 推出的一款新产品。专为帮助开发者提升安全水平而构建。当 Aikido 进行扫描时,使用 Zen 即可获得全天候的保护。 当然,您可以在没有 Aikido 的情况下使用 Zen 的某些功能。只需几行代码即可获得安心。 但是,将数据报告给 Aikido 将为您带来最大的价值。 您需要一个 Aikido 账户和 token 才能将事件报告给 Aikido。如果您还没有账户,可以[免费注册](https://app.aikido.dev/login))。 操作步骤如下: * [登录您的 Aikido 账户](https://app.aikido.dev/login)。 * 前往 [Zen](https://app.aikido.dev/runtime/services)。 * 前往应用 (apps)。 * 点击 **Add app**。 * 为您的应用选择一个名称。 * 点击 **Generate token**。 * 复制该 token。 * 将该 token 设置为环境变量 `AIKIDO_TOKEN` ## 在生产(阻断)模式下运行 默认情况下,Zen 只会检测攻击并将其报告给 Aikido。 要阻断请求,请将 `AIKIDO_BLOCK` 环境变量设置为 `true`。 请参阅[报告至 Aikido](#reporting-to-your-aikido-security-dashboard) 了解如何将事件发送给 Aikido。 ## 附加配置 [使用环境变量配置 Zen,包括身份验证、模式设置、调试等。](https://help.aikido.dev/doc/configuration-via-env-vars/docrSItUkeR9) ## License 本程序在商业许可和 AGPL 许可下提供。 您可以通过购买商业许可来免除 AGPL 许可的要求。 一旦您在未公开自己应用源代码的情况下, 开展涉及 Zen 软件的商业活动, 就必须购买此类许可。 了解更多信息,请通过以下地址联系 Aikido Security: support@aikido.dev 或在 https://app.aikido.dev 创建账户。 ## 行为准则 请参阅 [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) 了解更多信息。 ## 安全 我们的漏洞赏金计划是公开的,所有注册的 Intigriti 用户均可在以下地址找到:https://app.intigriti.com/researcher/programs/aikido/aikidoruntime 请参阅 [SECURITY.md](.github/SECURITY.md) 了解更多信息。
标签:CISA项目, Java, RASP, Web安全, 域名枚举, 应用防火墙, 漏洞防御, 蓝队分析