VulnCheck API 엔드포인트는 프로그래밍 방식 접근에 최적화되어 있으며, JSON 기계 판독 가능 데이터를 제공합니다.
VulnCheck 색인은 backup 엔드포인트(색인의 전체 복사본 다운로드 제공) 또는 index 엔드포인트(문서의 페이지네이션 목록 제공 및 개별 레코드 조회 가능)를 통해 접근할 수 있습니다.
접근할 수 있는 'index'와 'backup' API 엔드포인트 목록은 VulnCheck 대시보드의 VulnCheck API Sandbox에서 확인할 수 있습니다.
모든 API 메서드는 기본 URL로 https://api.vulncheck.com/ 를 사용합니다.
| 메서드 | 이름 | 설명 |
|---|---|---|
| GET | /v3/backup | 엔드포인트 링크가 포함된 백업 목록 반환 |
| GET | /v3/backup/{index} | 특정 색인의 백업 링크 요청 |
| GET | /v3/cpe | CPE와 관련된 취약점 요청 |
| GET | /v3/index | 엔드포인트 링크가 포함된 색인 목록 반환 |
| GET | /v3/index/{index} | 선택한 색인에서 페이지네이션된 문서 목록 조회 |
| GET | /v3/openapi | 현재 OpenAPI Specification(OAS) 조회 |
| GET | /v3/pdns/{filter} | Protective DNS용 호스트 이름 목록 기반으로 개행 문자 분리 또는 JSON 형식의 호스트 이름 반환 |
| GET | /v3/purl | PURL과 관련된 취약점 요청 |
| GET | /v3/rules/initial-access/{rules} | Initial Access Intelligence Suricata 또는 Snort 규칙 요청 |
| GET | /v3/search/cpe | CPE Part, Vendor, Product, Version 별 취약점 요청 |
| GET | /v3/tags/{filter} | IP 태그 기반의 개행 문자 분리 또는 JSON 형식의 IP 주소 목록 반환 |
VulnCheck API는 표준 HTTP 상태 코드를 사용하여 요청의 성공 또는 실패를 나타냅니다. 대부분의 클라이언트 오류는 400 상태 코드를 반환하며, 특히 존재하지 않는 인덱스에 대한 요청의 경우 이러한 상황이 발생합니다.
모든 오류 응답은 일관된 JSON 구조를 따릅니다:
{
"error": true,
"errors": [
"failed to query requested index"
]
}
일반적인 오류 시나리오:
커뮤니티 사용자 API 요청은 분당 1,000 요청으로 제한됩니다. 이 제한을 초과하면 API는 429 "Too Many Requests" 상태 코드를 반환합니다.
속도 제한을 피하기 위해 다음을 고려하십시오:
curl --request GET \
--url https://api.vulncheck.com/v3/backup/vulncheck-kev \
--header 'Accept: application/json' \
--header 'Authorization: Bearer insert_token_here'
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
vulncheck "github.com/vulncheck-oss/sdk-go-v2/v2"
)
func main() {
configuration := vulncheck.NewConfiguration()
configuration.Scheme = "https"
configuration.Host = "api.vulncheck.com"
client := vulncheck.NewAPIClient(configuration)
token := os.Getenv("VULNCHECK_API_TOKEN")
auth := context.WithValue(
context.Background(),
vulncheck.ContextAPIKeys,
map[string]vulncheck.APIKey{
"Bearer": {Key: token},
},
)
resp, httpRes, err := client.EndpointsAPI.BackupIndexGet(auth, "vulncheck-kev").Execute()
if err != nil || httpRes.StatusCode != 200 {
log.Fatal(err)
}
prettyJSON, err := json.MarshalIndent(resp.Data, "", " ")
if err != nil {
log.Fatalf("Failed to generate JSON: %v", err)
return
}
fmt.Println(string(prettyJSON))
}
import vulncheck_sdk
configuration = vulncheck_sdk.Configuration(host="https://api.vulncheck.com/v3")
configuration.api_key["Bearer"] = "insert_token_here"
with vulncheck_sdk.ApiClient(configuration) as api_client:
endpoints_client = vulncheck_sdk.EndpointsApi(api_client)
api_response = endpoints_client.backup_index_get("vulncheck-kev")
print(api_response.data[0].url)
vulncheck backup download vulncheck-kev
VulnCheck는 모든 데이터셋에서 RFC3339Nano 형식의 날짜를 사용합니다. 이 형식은 초 단위의 끝에 오는 0을 제거하기 때문에 타임스탬프가 다소 일관되지 않아 보일 수 있습니다.
예시:
2024-02-14T16:15:00Z
2024-02-23T10:38:41.361178Z
겉보기에는 일관성이 없어 보이지만, 두 형식 모두 RFC3339Nano 표준에 맞으며 파싱 가능한 유효한 날짜 형식입니다.