prototype(execution_appraisal,azure_execution_binding): fail closed with ExecutionDenied on malformed inputs, private JWKs, and non-minimal Base64urlUInt
I maintainer di solito rispondono entro 1 giorno
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- backend, cryptography, security
Direzione di ricerca
Start by reading prototype/execution_appraisal.py and prototype/azure_execution_binding.py, focusing on the named parsing and authentication functions. Run the supplied reproductions first, then inspect or add tests around malformed JWTs, JWKs, signatures, UEFI logs, and entry-point types. Done means every listed malformed or noncanonical input raises ExecutionDenied, valid inputs still work, and private JWK parameters and non-minimal RSA encodings are rejected.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What is wrong
Contributor: Raghuvar Durga (@drk-ram)
On main (a7f0858), prototype/execution_appraisal.py and prototype/azure_execution_binding.py have several input-validation and exception-boundary gaps:
-
prototype/execution_appraisal.py(authenticate_tokenandappraise_launch):authenticate_token(token, jwks)is a public function documented as failing closed withExecutionDenied, yet calling it directly with malformed JWT headers/payloads or malformedjwksleaks rawUnicodeDecodeError,json.JSONDecodeError,KeyError,TypeError, andInvalidSignatureinstead of raisingExecutionDenied.authenticate_tokencheckskey.get("kty") != "RSA",n.bit_length() < 2048, ande != 65537, but:- Does not reject RSA JWKs carrying private key parameters (
d,p,q,dp,dq,qi,oth,k). - Does not reject non-minimal
Base64urlUIntencodings ofnandewith leading zero bytes (0x00, forbidden by RFC 7518 §6.3.1.1), which allows the same RSA key to be represented with paddedn/ebytes.
- Does not reject RSA JWKs carrying private key parameters (
- In
appraise_launch(line 185),signature = base64.b64decode(packet["holder_signature_b64"], validate=True)does not checkisinstance(packet.get("holder_signature_b64"), str)or canonical base64 round-trip encoding (base64.b64encode(signature).decode("ascii") == packet["holder_signature_b64"]) or 64-byte signature length before passing toEd25519PublicKey.verify.
-
prototype/azure_execution_binding.py(parse_quote,parse_uefi_log,parse_ima_log,appraise_execution,authenticate_ak):- Calling
parse_quote,parse_uefi_log,parse_ima_log,appraise_execution, orauthenticate_akwith non-bytes/ non-dictinputs leaks rawTypeErrororAttributeErrorinstead of raisingExecutionDenied. - In
parse_uefi_log(line 151),if len(log) < 32:is not checked beforestruct.unpack_from("<I", log, 28), and32 + size > len(log)is not checked before slicingheader = log[32 : 32 + size]. - In
authenticate_ak(lines 422-426),n = keys[0]["n"]is decoded withbase64.urlsafe_b64decode(n + "=" * (-len(n) % 4))without validating canonical base64url encoding or rejecting private JWK members (d,p,q,dp,dq,qi,oth,k) on the HCLHCLAkPubJWK.
- Calling
Reproduction on main (a7f0858):
from prototype import execution_appraisal as ea
from prototype import azure_execution_binding as aeb
# 1. authenticate_token leaks UnicodeDecodeError on non-UTF-8 JWT header:
ea.authenticate_token("_w.e30.e30", {"keys": []})
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff...
# 2. parse_uefi_log / appraise_execution leak TypeError / AttributeError:
aeb.parse_uefi_log("not-bytes")
# TypeError: a bytes-like object is required, not 'str'
Spec section or file
prototype/execution_appraisal.py(authenticate_token,appraise_launch)prototype/azure_execution_binding.py(parse_quote,parse_uefi_log,parse_ima_log,appraise_execution,authenticate_ak)
Expected behavior
execution_appraisal.authenticate_tokenandappraise_launchshould wrap malformed JWT/JWKS/signature inputs inExecutionDenied, reject private JWK parameters (d,p,q,dp,dq,qi,oth,k) and leading-zeroBase64urlUIntencodings (n,e), and enforce canonical 64-byteholder_signature_b64.azure_execution_binding.parse_quote,parse_uefi_log,parse_ima_log,appraise_execution, andauthenticate_akshould validatebytes/dictinput types at entry, guard header lengths inparse_uefi_log, and enforce canonical base64url + no private JWK members onHCLAkPub, raisingExecutionDeniedon any malformed input.
Impact
Ensures both confidential-compute execution appraisal modules fail closed with ExecutionDenied on all malformed or untrusted inputs, rejects private JWK material and non-minimal RSA Base64urlUInt parameters, and enforces canonical signature encodings.
- Lingua principale
- Python
- Stelle
- 37
- Fork
- 33
- Merge medio
- 1g 9h
- PR unite (30g)
- 119
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di agentrust-io/trace-spec
-
prototype(verifier_token): map disallowed warning to contraindicated before composite precedence checkForse già presa @drk-ram l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
agentrust-io/trace-spec#582 ·
I maintainer di solito rispondono entro 1 giorno
-
intent_bridge: normalize integer-by-value timestamps (authorized_at, expires_at, observed_at) to int and bound now by JCS_SAFE_INTEGERForse già presa @drk-ram l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
agentrust-io/trace-spec#568 ·
I maintainer di solito rispondono entro 1 giorno
-
prototype(manifest_requirements): resolve accepted_methods without duplicating bindings and reject unconfigured binding endpoints with ProfileErrorForse già presa @drk-ram l’ha presa oggi. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 78/100
agentrust-io/trace-spec#580 ·
I maintainer di solito rispondono entro 1 giorno
-
feat(delegation): add parent_record_hash, verify_delegation_link, and verify_delegation_chain to agentrust_traceForse già presa @drk-ram l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
agentrust-io/trace-spec#581 ·
I maintainer di solito rispondono entro 1 giorno
-
revocation,trust-record-verify: implement es256 and es384 bundle verification and add EC revocation vectors (#448 items 1, 10)Forse già presa @drk-ram l’ha presa oggi. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
agentrust-io/trace-spec#584 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di agentrust-io/trace-spec
Issue simili
-
good first issue tools
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
bug deferred domain:ci P1
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
get_page_thumbnail modifies cached page images, affecting later thumbnails and picture exportsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
docling-project/docling-mcp#147 ·
-
issue: A pipe model's Valves button ignores the Allow Chat Valves permissionForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug confirmed issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
open-webui/open-webui#32771 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Scheduled Security Scan is failing on mainForse già presa @pkupt l’ha presa oggi. Apertasecurity-scan-failure
Difficoltà 1/5 1-3 ore Idoneità per principianti 74/100
semantica-agi/semantica#2045 ·
I maintainer di solito rispondono entro 2 giorni