schema_version = 1
detector_id = "classlink-api-credentials"
service = "classlink"
severity = "high"
[[positive]]
text = "classlink_api_key=Kp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn"
credential = "Kp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn"
reason = "ClassLink API key env-var (40 alnum)."
[[positive]]
text = "classlink_client_id=7b3e5d8c1a9f4e2b6c8d3a5e9f1b7c4d"
credential = "7b3e5d8c1a9f4e2b6c8d3a5e9f1b7c4d"
reason = "ClassLink OAuth client ID (32 hex)."
[[negative]]
text = "classlink_api_key=Kp4Qx7Rm2Sn5Tb8Vw3Yz"
reason = "Body 22 chars, below 40 minimum."
[[evasion]]
text = "onedrove.client.secret=Kp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn"
credential = "Kp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn5Tb8Vw3YzKp4Qx7Rm2Sn"
reason = "Dot-separated onedrove.client.secret form — regex covers [_.-]* separators."
[perf]
fixture_bytes = 4096
max_microseconds = 25000
note = "Standard single-file budget."
[scale]
fixture_bytes = 1048576
min_findings = 1
max_seconds = 2.0
note = "1 MiB filler + planted classlink credential."
readme_claim = "900 service-specific detectors"