<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    Often Misused: Encoding

    ABSTRACT

    標識調用可對字符應用最佳適應算法。傳遞給默認 API 方法的不受支持的字符可通過最佳適應算法映射到危險字符。

    EXPLANATION

    當操作系統及其上運行的應用程序之間的字符集不匹配時,傳遞給默認 API 方法的不受支持的字符可通過最佳適應算法映射到危險字符。

    例 1:在 Objective-C 中,以下代碼示例會將包含 UTF-8 字符的 NSString 對象轉換成 ASCII 數據然后返回:


    ...
    unichar ellipsis = 0x2026;
    NSString *myString = [NSString stringWithFormat:@"My Test String%C",
    ellipsis];
    NSData *asciiData = [myString dataUsingEncoding:NSASCIIStringEncoding
    allowLossyConversion:YES];
    NSString *asciiString = [[NSString alloc] initWithData:asciiData
    encoding:NSASCIIStringEncoding];
    NSLog(@"Original:%@ (length %d)", myString, [myString length]);
    NSLog(@"Best-fit-mapped:%@ (length %d)", asciiString, [asciiString length]);
    // output:
    // Original:My Test String...(length 15)
    // Best-fit-mapped:My Test String...(length 17)
    ...


    如果仔細查看輸出,您會發現 "..." 字符已轉換成三個連續的句號。如果根據輸出緩沖區調整了輸出緩沖區大小,則應用程序易受緩沖區溢出攻擊。其他字符可從一個字符映射到兩個。希臘字符 "fi" 會映射到 "f",后跟 "i"。通過前期加載包含這些字符的緩沖區,攻擊者可完全控制用于實施緩沖區溢出攻擊的字符數量。

    REFERENCES

    [1] Apple Secure Coding Guide Apple

    [2] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 176

    [3] String Programming Guide Apple


    Copyright 2013 Fortify Software - All rights reserved.
    (Generated from version 2013.1.1.0008 of the Fortify Secure Coding Rulepacks)
    desc.semantic.objc.method_may_best_fit_map_characters

    97av