đ§ āĻĻāĻā§āώāϤāĻž āϝāĻžāĻāĻžāĻ āĻ āĻĒā§āϰāϤāĻŋāϰāĻā§āώāĻžāĻŽā§āϞāĻ takeaway
Skill checkpoint: āĻĻā§āĻāĻŋ dummy role āĻĻāĻŋā§ā§ object authorization matrix āϤā§āϰāĻŋ āĻāϰā§āĨ¤
Defense checkpoint: āĻĒā§āϰāϤāĻŋāĻāĻŋ object request-āĻ owner/role check server-side enforce āĻāϰā§.
Lab scope: āĻļā§āϧ⧠āύāĻŋāĻā§āϰ lab, synthetic data āĻŦāĻž āϞāĻŋāĻāĻŋāϤ āĻ
āύā§āĻŽāϤāĻŋāĻĒā§āϰāĻžāĻĒā§āϤ target-āĻ āĻ
āύā§āĻļā§āϞāύ āĻāϰā§āĨ¤ Real credential, token āĻŦāĻž customer data āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻā§āϰ⧠āύāĻžāĨ¤
Portfolio proof: finding, impact, fix āĻ retest āύāĻŋā§ā§ ā§Ģ-āϞāĻžāĻāύā§āϰ redacted note āϰāĻžāĻā§āĨ¤
đĒ āĻāϞā§āĻĒ ā§§: āĻšā§āĻā§āϞā§āϰ āĻāĻžāĻŦāĻŋ āĻ āĻ
āύā§āϝā§āϰ āĻāϰā§āϰ āϰāĻšāϏā§āϝ
āĻāĻžāĻŦā§ āϤā§āĻŽāĻŋ āĻāĻāĻāĻŋ āĻŦāĻŋāϞāĻžāϏāĻŦāĻšā§āϞ āĻšā§āĻā§āϞ⧠āĻāĻ ā§āĻā§ āĻāĻŦāĻ āϤā§āĻŽāĻžāϰ āϰā§āĻŽ āύāĻŽā§āĻŦāϰ āĻšāϞ⧠⧧ā§Ļā§§āĨ¤ āĻšā§āĻā§āϞā§āϰ āĻŦā§ āϤā§āĻŽāĻžāĻā§ āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻāĻžāĻŦāĻŋ āĻĻāĻŋā§ā§ āĻŦāϞāϞ: 'āĻāĻāĻž āĻāĻĒāύāĻžāϰ āĻāĻžāĻŦāĻŋ'āĨ¤
āĻāĻŋāύā§āϤ⧠āĻā§āϤā§āĻšāϞāĻŦāĻļāϤ āϤā§āĻŽāĻŋ āĻšā§āĻāĻā§ āĻāĻŋā§ā§ āĻĒāĻžāĻļā§āϰ ā§§ā§Ļ⧍ āύāĻŽā§āĻŦāϰ āϰā§āĻŽā§āϰ āĻĻāϰāĻāĻžā§ āύāĻŋāĻā§āϰ āĻāĻžāĻŦāĻŋāĻāĻž āĻā§āϰāĻžāϞ⧠āĻāĻŦāĻ āĻĻā§āĻāϞ⧠â āĻāĻāĻžāϏ āĻāϰ⧠⧧ā§Ļ⧍ āύāĻŽā§āĻŦāϰ āϰā§āĻŽā§āϰ āĻĻāϰāĻāĻžāĻ āĻā§āϞ⧠āĻā§āϞ! āĻā§āϤāϰ⧠āĻĸā§āĻā§ āĻĻā§āĻāϞ⧠āĻāϰā§āĻāĻāύ āĻŦā§āϞā§āĻā§āϰ āϏāĻŽāϏā§āϤ āϏā§āϝā§āĻāĻā§āϏ, āϞā§āϝāĻžāĻĒāĻāĻĒ āĻāϰ āĻā§āĻĒāύ āĻĻāϞāĻŋāϞ āĻĒā§ā§ āĻāĻā§!
āĻšā§āϝāĻžāĻāĻŋāĻā§ā§āϰ āĻĒāϰāĻŋāĻāĻžāώāĻžā§ āĻāĻ āĻŽāĻžāϰāĻžāϤā§āĻŽāĻ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻžāĻšā§āύāϤāĻžāĻā§ āĻŦāϞāĻž āĻšā§ IDOR (Insecure Direct Object Reference)!
đ āĻāϞā§āĻĒ ā§¨: āĻāϝāĻŧā§āĻŦ API-āϤ⧠IDOR āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§?
āϤā§āĻŽāĻŋ āϝāĻāύ āĻā§āύ⧠āĻā§ā§āĻŦāϏāĻžāĻāĻā§ āύāĻŋāĻā§āϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āĻĻā§āĻā§, āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰ⧠āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻ āĻĒāĻžāĻ āĻžā§:
`GET /api/user/orders?user_id=8842`
āϝāĻĻāĻŋ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻ
āϞāϏ āĻšā§ āĻāĻŦāĻ āϏ⧠āĻļā§āϧ⧠āĻĻā§āĻā§ 'āϰāĻŋāĻā§āϝāĻŧā§āϏā§āĻāĻāĻžāϰ⧠āϞāĻāĻāύ āĻāϰāĻž āĻāĻā§ āĻāĻŋāύāĻž' āĻāĻŋāύā§āϤ⧠āĻāĻāĻž āύāĻž āĻĻā§āĻā§ āĻ¯ā§ ā§Žā§Žā§Ē⧍ āύāĻŽā§āĻŦāϰ āĻāĻāĻĄāĻŋāĻāĻŋ āϏāϤā§āϝāĻŋāĻ āϞāĻāĻāύ āĻāϰāĻž āĻāĻāĻāĻžāϰā§āϰ āĻāĻŋāύāĻž, āϤāĻāύāĻ āĻāĻā§ āϏāϰā§āĻŦāύāĻžāĻļ!
āϤā§āĻŽāĻŋ āĻļā§āϧ⧠āϏāĻāĻā§āϝāĻžāĻāĻŋ āĻŦāĻĻāϞ⧠`user_id=8843` āĻŦāĻž `user_id=1` (āĻ
ā§āϝāĻžāĻĄāĻŽāĻŋāύ) āĻāϰ⧠āĻĻāĻŋāϞā§āĻ āϏāĻžāϰāĻž āĻĻā§āύāĻŋā§āĻžāϰ āϞāĻžāĻ āϞāĻžāĻ āĻŽāĻžāύā§āώā§āϰ āĻŦā§āϝāĻā§āϤāĻŋāĻāϤ āĻ āĻŋāĻāĻžāύāĻž, āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻ āĻā§āϰāϝāĻŧā§āϰ āĻāϤāĻŋāĻšāĻžāϏ āϤā§āĻŽāĻžāϰ āϏā§āĻā§āϰāĻŋāύ⧠āĻā§āϏ⧠āĻāĻ āĻŦā§!
đĄī¸ āĻāϞā§āĻĒ ā§Š: UUID āĻŦāύāĻžāĻŽ Sequential ID āĻ āĻĒāĻžāϰāĻŽāĻŋāĻļāύ āĻŽā§āϝāĻžāĻā§āϰāĻŋāĻā§āϏ
IDOR āĻĨā§āĻā§ āĻŦāĻžāĻāĻāĻžāϰ āϏāĻšāĻāϤāĻŽ āĻāĻĒāĻžā§ āĻšāϞ⧠āϏāĻŋāĻā§ā§ā§āύā§āϏāĻŋā§āĻžāϞ āĻāĻāĻĄāĻŋ (`1, 2, 3...`) āĻŦāĻžāĻĻ āĻĻāĻŋā§ā§ UUIDv4 (`c4a8d09f-6b21-4f1a...`) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāĨ¤ āĻāĻžāϰāĻŖ āĻāĻāĻŋāϞ āϰâā§āϝāĻžāύā§āĻĄāĻŽ āĻāĻāĻĄāĻŋ āĻā§āĻ āϏāĻšāĻā§ āĻāύā§āĻĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āύāĻžāĨ¤
āĻāĻŋāύā§āϤ⧠āĻāϏāϞ āϏāĻŽāĻžāϧāĻžāύ āĻšāϞ⧠āϏāĻžāϰā§āĻāĻžāϰ-āϏāĻžāĻāĻĄā§ āĻļāĻā§āϤāĻĒā§āĻā§āϤ Access Control Matrix āϰāĻžāĻāĻž â āĻĒā§āϰāϤāĻŋāĻāĻž āĻā§ā§ā§āϰāĻŋāϰ āϏāĻžāĻĨā§ āĻŽā§āϞāĻžāϤ⧠āĻšāĻŦā§: `WHERE order_id = ? AND owner_id = logged_in_user_id`!
đĄ IDOR āĻšāĻžāύā§āĻāĻŋāĻ āϏā§āĻā§āϰā§āϝāĻžāĻā§āĻāĻŋ
āϏāĻŦāϏāĻŽā§ āĻĻā§āĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻ (Account A āĻ Account B) āĻā§āϞ⧠āĻā§āϏā§āĻ āĻāϰāĻŦā§āĨ¤ Account A-āϰ āĻā§āĻāĻŋ āĻĻāĻŋā§ā§ Account B-āϰ āϰāĻŋāϏā§āϰā§āϏ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰ⧠āĻĻā§āĻāĻŦā§ āϏāĻžāϰā§āĻāĻžāϰ ⧍ā§Ļā§Ļ āĻāĻā§ āĻĻā§ā§ āĻāĻŋāύāĻž!