| Title | iFlytek astron-agent v1.1.1, v1.1.2 Authorization Bypass Through User-Controlled Key |
|---|
| Description | A vulnerability was found in iFlytek astron-agent up to v1.1.2 (main commit b4f8ed57460cbfb32016a4afd3fd7212987d33c3, releases v1.1.1 and v1.1.2 verified). The affected component is the Console knowledge-list endpoint POST /file/list-knowledge-by-page (console/backend/toolkit/.../FileInfoV2Service.java:903-930, header parsing in console/backend/commons/.../SpaceInfoUtil.java:64-72).
The endpoint authorises each requested file only when the client-supplied space-id header is absent or unparseable. SpaceInfoUtil.getSpaceId() parses the header to a Java Long, and FileInfoV2Service.listKnowledgeByPage invokes dataPermissionCheckTool.checkFileBelong only when that value is null. Any parseable numeric value — it need not be the victim's real space id — therefore suppresses the ownership check for every file id in the request, and the endpoint returns the knowledge records (parsed document content) of files belonging to other users or spaces.
The endpoint still requires a normal authenticated Console session (SecurityConfig.java:124-126); the defect is a missing object-level authorization check, not an authentication bypass.
Observed on a local docker-compose deployment of the tested commit with two ordinary test users: a low-privilege authenticated user (bob) received no records for a knowledge file owned by another test account (alice) without the header, and received that file's knowledge records when replaying the identical request with the header space-id: 1. The header value 1 is not alice's real space id; any Long-parseable value behaves the same.
Impact: information disclosure — cross-user/cross-space read of knowledge content. Read-only. Cross-tenant write, delete or availability impact was not demonstrated on this endpoint and is not claimed. Exploitation requires a valid Console JWT and knowledge or discovery of a target file id.
Earlier releases were not exhaustively checked. No fix was available at submission time.
Proof of Concept (read-only two-request differential, authorisation-gated):
https://github.com/Rinne666/poc/tree/main/astron-agent-poc/poc/v2_knowledge_space_id_bypass.py
Full report, evidence and environment guide:
https://github.com/Rinne666/poc/tree/main/astron-agent-poc
Reference: https://github.com/iflytek/astron-agent
|
|---|
| Source | ⚠️ https://github.com/Rinne666/poc/tree/main/astron-agent-poc |
|---|
| User | qyf20051010 (UID 100545) |
|---|
| Submission | 10/02/2026 14:41 (30 days ago) |
|---|
| Moderation | 10/26/2026 07:40 (24 days later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 426315 [iFlytek astron-agent up to 1.1.2 Console Knowledge-List Endpoint FileInfoV2Service.java FileInfoV2Service.listKnowledgeByPage space-id authorization] |
|---|
| Points | 20 |
|---|