fix(EverCore): require MinIO credentials from environment (CWE-798)#206
Closed
sebastiondev wants to merge 645 commits into
Closed
fix(EverCore): require MinIO credentials from environment (CWE-798)#206sebastiondev wants to merge 645 commits into
sebastiondev wants to merge 645 commits into
Conversation
Feat/profilev2 See merge request npc-work/aic/ai/evermemos-opensource!61
Feat/update demo See merge request npc-work/aic/ai/evermemos-opensource!62
Use self-deployed embedding and rerank APIs by default See merge request npc-work/aic/ai/evermemos-opensource!64
Update EverMemOS: optimize search perf, improve skill search
chore: add devcontainer configuration and development tooling
Fix/unify port in demo and docs to the default 1995
Update the GitHub asset URLs for all banner images to ensure they point to the correct and current locations. This includes fixing a typo in a section title from "LAI Wearable" to "AI Wearable".
Update the asset IDs for the banner GIFs in the README to point to the correct new assets.
…ind-AI#186) * feat: add game of throne demo and claude code plugin use cases Add two new use cases to the repository: 1. Game of Thrones Story Memory Demo - A full-stack web application demonstrating EverMem's memory capabilities through a side-by-side comparison interface for book Q&A 2. Claude Code Plugin - A memory plugin for Claude Code that automatically stores and retrieves context from past coding sessions The demo includes React frontend, Express backend, Docker configurations, and novel loading scripts. The plugin provides hooks for automatic memory injection and search capabilities. * docs: update readme links to use relative paths for use cases
Update the banner image URL in the README file to point to the new asset location.
…erMind-AI#192) server.ts used 8001 but the EverMemOS server default is 1995. This broke local demo runs unless EVERMEMOS_URL was manually set. Fixes EverMind-AI#28 Co-authored-by: pazyork <pazyorkcc@gmail.com>
Skip tool call/response msg in profile generation
* feat(use-cases): add OpenHer persona engine with EverMemOS integration OpenHer is an AI Being engine that creates personas with emergent personality, emotional thermodynamics, and long-term memory. EverMemOS integration: - 4D relationship vector (depth, valence, trust, foresight) expands neural network perception from 8D to 12D - Async two-stage memory retrieval (fire on Turn N, collect on Turn N+1) with 500ms timeout + graceful fallback - Semi-emergent relationship EMA blending EverMemOS priors with LLM-judged deltas per turn - Fire-and-forget turn storage via asyncio.create_task Includes: - README with architecture diagrams and integration walkthrough - Runnable demo with simulation mode (no EverMemOS needed) - Core integration code: mixin, types, context features - .env.example with placeholder values Repo: https://github.com/kellyvv/OpenHer * docs: rewrite README — storytelling style, emotion-first * docs: English README, storytelling style, no emoji * rename: openher-persona-engine → openher --------- Co-authored-by: kellyzxiaowei <129767595+kellyzxiaowei@users.noreply.github.com>
* chore: rename project from evermemos to EverCore This commit renames the project directory and updates all internal references from "evermemos" to "EverCore". The changes include: - Renaming the main directory from `methods/evermemos` to `methods/EverCore` - Updating all import paths and module references - Maintaining the same code structure and functionality - Adding new configuration files (.vscode/settings.json, .pylintrc, pyrightconfig.json) - Updating Dockerfile and project metadata * docs: update references from evermemos to EverCore Update documentation files to reflect the renaming of the 'evermemos' directory to 'EverCore'. This includes fixing clone commands, directory paths, and documentation links across multiple files to ensure consistency and correct navigation for users. * chore: rename EverMemOS to EverCore across codebase This is a project-wide rebranding from EverMemOS to EverCore. The changes include: - Update project name in source files, documentation, and configuration - Rename API references, environment variables, and service names - Modify demo descriptions and benchmark configurations - Update URLs and citations to reflect new project identity All functionality remains identical; only naming has changed to align with the new project branding. * docs: update README with EverCore focus and restructured TOC - Add line break before Table of Contents for better visual separation - Rewrite project description to highlight EverCore as the central component - Reorder directory tree to prioritize benchmarks and methods over use-cases - Update use-cases list with more examples and clarify they are templates - Improve flow from Quick Start to use-cases to benchmarks * docs: update README with clearer methods description and benchmarks Add benchmark numbers directly in the method summaries for better visibility. Clarify introductory text to emphasize choice and composition of methods. * docs: fix markdown formatting in README table of contents Adjust whitespace and line breaks to ensure proper rendering of the collapsible table of contents section.
|
Closing this as inactive — no maintainer response after 14 days. The security finding and fix remain valid. If this is still relevant, I'm happy to reopen, rebase, or re-submit against a different branch. Just drop a comment. |
1 similar comment
|
Closing this as inactive — no maintainer response after 14 days. The security finding and fix remain valid. If this is still relevant, I'm happy to reopen, rebase, or re-submit against a different branch. Just drop a comment. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
methods/EverCore/docker-compose.yamlships with the literal MinIO vendor defaults (minioadmin/minioadmin) hardcoded asMINIO_ACCESS_KEY/MINIO_SECRET_KEYfor thememsys-milvus-minioservice. The same compose file publishes the MinIO ports9000and9001to the host (the default bind is0.0.0.0). Anyone who follows the EverCore quickstart and runsdocker compose upfrom a fresh clone exposes a MinIO instance on the network with credentials that are publicly known and continuously scanned for by automated bots.This PR makes the credentials required environment variables so compose refuses to start until the operator sets explicit values.
methods/EverCore/docker-compose.yaml(thememsys-milvus-minioservice block)Fix
The
${VAR:?message}form is a Compose/Bash interpolation that aborts startup with a clear error if the variable is unset or empty — failing closed instead of silently inheriting the insecure default.methods/EverCore/env.templateis updated with placeholder entries (change-me-...) and a comment pointing at the compose requirement, so the existingcp env.template .envworkflow continues to work — the operator just has to substitute values.What I tested
docker compose -f methods/EverCore/docker-compose.yaml configwith no.env: aborts with theSet MINIO_ACCESS_KEY in your .env filemessage (fail-closed verified).MINIO_ACCESS_KEY/MINIO_SECRET_KEYset in.env: renders the expected configuration with the operator-supplied values.MINIO_ACCESS_KEY/MINIO_SECRET_KEY(Milvus reads the bucket through its own client config), so this change is self-contained.Why it's exploitable in practice
The preconditions are minimal:
docker compose upagainstmethods/EverCore/docker-compose.yamlwithout overriding the credentials (the documented quickstart path).When both hold, the attacker uses
minioadmin:minioadminagainsthttp://target:9000and gets full bucket access — read/write/delete of any objects Milvus stores there. Internet-wide scanners actively probe for exactly this credential pair.Scope note
There is a separate hardcoded-credentials issue with the MongoDB service in the same file. I'm keeping that change in its own PR so each fix can be reviewed and reverted independently.
Adversarial review
Before submitting I tried to disprove this — looked for an existing mitigation that would make the report moot. There isn't one: the compose file has no
127.0.0.1:host binding on the MinIO ports, no override file ships defaults from the environment, andenv.templatedid not previously containMINIO_*entries, so an operator copying the template would not be prompted to change them. The credentials really are the literal vendor default that bots scan for, and they really are reachable on whatever interface Docker binds to. The fix is the minimal change that converts a silent insecure default into a loud, fail-fast configuration error.cc @lewiswigmore