ベータ Shoulder はベータ版です — 結果が誤っている場合があります。皆さまのフィードバックが次に修正する内容を決定します。 フィードバックを送る
📝

Insufficient Logging

🛡️ 3 件のルールが検出します

Insufficient Logging

When a security-critical event occurs, the product either does not record the event or omits important details about the event when logging it.

Insufficient logging makes it difficult to detect attacks in progress, investigate security incidents, or establish accountability. Logs should capture who did what, when, and from where.

普及度
頻繁に悪用される
影響度
ミディアム
レビュー推奨
予防
文書化済み
3 件の修正例
2 予防
2 予防

この脆弱性の修正方法

3 件の Shoulder 検出ルールに基づく Insufficient Logging の予防策。

Avoid console.log when logging library exists low

Replace console.log with a structured logging library like winston or pino

+1 -1 javascript
- console.log('User logged in', userId);
+ logger.info('User logged in', { userId });
  
Avoid print() when logging module exists low

Replace print() with the logging module for structured, level-aware output

+8 -4 python
- def process_request(data):
-     print(f"Processing request: {data}")
-     result = handle(data)
-     print(f"Result: {result}")
+ import logging
+ 
+ logger = logging.getLogger(__name__)
+ 
+ def process_request(data):
+     logger.info("Processing request: %s", data)
+     result = handle(data)
+     logger.debug("Result: %s", result)
      return result
  
Insufficient Security Event Logging MEDIUM

Log authentication attempts, failures, and admin actions with user/IP context

+15 -9 python
- from flask import request
- from flask_login import login_user
- 
- @app.route('/login', methods=['POST'])
- def login():
-     user = User.query.filter_by(username=request.form['username']).first()
-     if user and check_password(user.password, request.form['password']):
-         login_user(user)
-         return redirect('/dashboard')
+ import logging
+ from flask import request
+ from flask_login import login_user
+ 
+ logger = logging.getLogger('security')
+ 
+ @app.route('/login', methods=['POST'])
+ def login():
+     username = request.form['username']
+     user = User.query.filter_by(username=username).first()
+     if user and check_password(user.password, request.form['password']):
+         login_user(user)
+         logger.info(f"Login success: {username} from {request.remote_addr}")
+         return redirect('/dashboard')
+     logger.warning(f"Login failed: {username} from {request.remote_addr}")
      return 'Invalid credentials', 401
  

主要なプラクティス

  • reviewed: - They bypass structured logging - They don't respect log levels - They can't be easily filtered in production - They go to stdout, n
3 検出
3 検出

コードの脆弱性を見つける

Shoulderを使用してコードのInsufficient Loggingパターンをスキャンしましょう。 3 ルール.

ターミナル
# Scan with Shoulder CLI
npx @shoulderdev/cli trust --cwe=778

# Or scan entire project
npx @shoulderdev/cli trust .

検出ルール (3)

4 警告サイン
4 警告サイン

コードレビューで注目すべき点

これらのパターンはInsufficient Loggingの潜在的な脆弱性を示しています。コードレビューとセキュリティ監査中に探してください。

🟡
Security-critical operation lacks audit logging python-insufficient-logging
🟡
security-critical operations (authentication, authorization failures, admin actions) without proper python-insufficient-logging
print() calls when the logging module is used in the codebase python-avoid-print-logging
🔍

コードベースをスキャン: Insufficient Logging

Shoulder CLI はコードベース全体から脆弱なパターンを見つけます。