security-review-bot
  • Joined on 2026-05-02
security-review-bot commented on pull request rodin/review-bot#44 2026-05-03 04:07:43 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5

[MAJOR] LLM_BASE_URL is now sourced from the PR-controlled matrix (matrix.base_url) instead of a repository secret, enabling an attacker to modify the workflow in a PR to redirect outbound requests (including secrets like LLM_API_KEY and REVIEWER_TOKEN) to an arbitrary endpoint. This is a classic supply-chain/secret exfiltration vector for CI workflows that run on pull_request events with secrets available.

security-review-bot suggested changes for rodin/review-bot#44 2026-05-03 04:05:39 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5

Security Review

security-review-bot commented on pull request rodin/review-bot#44 2026-05-03 04:05:39 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5

[MINOR] LLM_BASE_URL now derives from the workflow matrix instead of a secret, increasing the risk that a PR modifying this workflow could redirect requests (and exfiltrate secrets) to an attacker-controlled host. Keeping the endpoint in a secret or protected environment reduces this risk.

security-review-bot commented on pull request rodin/review-bot#44 2026-05-03 04:05:39 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5

[NIT] Hardcoded internal IP (100.86.77.84) in the repository may disclose internal network details if the repo is public and reduces flexibility across environments.

security-review-bot commented on pull request rodin/review-bot#44 2026-05-03 04:05:39 +00:00
ci: fix reviewer models — sonnet uses Anthropic, gpt uses GPT-5

[MAJOR] LLM base_url uses plain HTTP (http://100.86.77.84:6655/anthropic/v1) which will transmit the LLM_API_KEY and request contents in cleartext, risking secret and data exposure. All three base_url entries (Anthropic and OpenAI) are HTTP.

security-review-bot commented on pull request rodin/review-bot#43 2026-05-02 20:29:13 +00:00
fix: supersede ALL old reviews, not just the most recent

[MINOR] GetTimelineReviewCommentIDForReview matches timeline events by checking strings.HasPrefix on the first ~200 bytes of a review body. In the unlikely case of two reviews with identical prefixes, this could target the wrong timeline comment for editing, potentially modifying another review's summary. Consider tightening the match (e.g., include a unique sentinel in the prefix or match full body with a fallback) to reduce mis-targeting risk.

security-review-bot approved rodin/review-bot#41 2026-05-02 19:10:17 +00:00
feat: self-request as reviewer before posting

Security Review

security-review-bot approved rodin/review-bot#41 2026-05-02 19:06:06 +00:00
feat: self-request as reviewer before posting

Security Review

security-review-bot commented on pull request rodin/review-bot#41 2026-05-02 19:06:06 +00:00
feat: self-request as reviewer before posting

[MINOR] On reviewer request failure, the full HTTP response body is included in the error message, which may leak internal server details into logs. Consider truncating or redacting the body before logging to reduce potential information exposure.

security-review-bot commented on pull request rodin/review-bot#38 2026-05-02 18:27:38 +00:00
feat: always post fresh review, supersede old with collapsed body

[MINOR] Supersede logic identifies prior review and corresponding timeline event solely by a sentinel substring without confirming authorship. Although the Gitea API should prevent editing comments not owned by the token, an attacker could craft a review containing the sentinel and cause unnecessary edit attempts. Consider verifying that the located review/timeline event belongs to the authenticated user (e.g., fetch current user and compare to Review.User.Login) before calling EditComment.