Integer Overflow or Wraparound
The product performs a calculation that can produce an integer overflow or wraparound, when the logic assumes that the resulting value will always be larger than the original value.
An integer overflow occurs when an arithmetic operation attempts to create a numeric value that is outside of the range that can be represented with a given number of bits. This can lead to buffer overflows, incorrect financial calculations, or security bypasses.
이 취약점을 수정하는 방법
3개의 Shoulder 탐지 규칙을 기반으로 한 Integer Overflow 예방 전략.
Validate bounds before arithmetic operations with user-controlled integers
func handler(w http.ResponseWriter, r *http.Request) { - count, _ := strconv.Atoi(r.URL.Query().Get("count")) + count, err := strconv.Atoi(r.URL.Query().Get("count")) + if err != nil || count < 0 || count > 10000 { + http.Error(w, "Invalid count", 400) + return + } buffer := make([]byte, count*1024) }
Validate numeric bounds before using user input in allocations or arithmetic
- const size = parseInt(req.query.size, 10); + const MAX_SIZE = 1024 * 1024; + const size = parseInt(req.query.size, 10); + if (isNaN(size) || size < 0 || size > MAX_SIZE) { + return res.status(400).json({ error: 'Invalid size' }); + } const buffer = Buffer.alloc(size);
Validate numeric bounds before arithmetic operations on user input
- from flask import request - - @app.route('/calculate') - def calculate(): - count = int(request.args.get('count')) - total = count * unit_price - return {'total': total} + from flask import request, jsonify + + @app.route('/calculate') + def calculate(): + count = int(request.args.get('count', 0)) + if count < 0 or count > 10000: + return jsonify({'error': 'Invalid count'}), 400 + total = count * unit_price + return jsonify({'total': total})
코드에서 취약점 찾기
Shoulder를 사용하여 코드에서 Integer Overflow or Wraparound 패턴을 스캔하세요. 3 규칙.
# Scan with Shoulder CLI npx @shoulderdev/cli trust --cwe=190 # Or scan entire project npx @shoulderdev/cli trust .
탐지 규칙 (3)
코드 리뷰에서 주의할 점
이 패턴은 잠재적인 Integer Overflow or Wraparound 취약점을 나타냅니다. 코드 리뷰와 보안 감사 중에 찾아보세요.
코드베이스를 스캔하세요: Integer Overflow or Wraparound
Shoulder CLI는 전체 코드베이스에서 취약한 패턴을 찾아냅니다.