AGOV 등록 버그: 키보드 레이아웃이 디지털 신원 시스템을 무너뜨릴 수 있는 방법

AGOV 등록 버그: 키보드 레이아웃이 디지털 신원 시스템을 무너뜨릴 수 있는 방법

AGOV 등록에서의 Shift 키 버그

스위스 정부 로그인 시스템인 AGOV의 중요한 접근성 버그로 인해 AZERTY 키보드 레이아웃을 사용하는 사용자는 계정을 등록할 수 없었습니다. 이 문제는 검증 코드 입력을 위해 맞춤형 JavaScript 구현이 수정키(Shift 키 포함)를 명시적으로 차단한 데서 비롯되었습니다. AZERTY 키보드에서는 숫자를 입력하기 위해 Shift 키가 필요하기 때문에, 이 사용자들은 등록 과정에서 완전히 차단되었습니다.

기술적 근본 원인: 키 입력 가로채기

AGOV 등록 과정에서는 사용자가 검증 코드를 여섯 개의 별도 입력 상자에 입력해야 합니다. 표준 HTML 입력 필드를 사용하는 대신, 시스템은 키 입력을 가로채고 코드를 로컬 변수에 저장하는 복잡한 JavaScript 메커니즘을 사용합니다.

축소된 JavaScript를 분석하면 입력 로직을 처리하는 verificationCodeEntered 함수가 나타납니다. 이 함수는 S.key가 "Shift", "Control", "Meta" 또는 "v"인 경우 입력을 명시적으로 반환(무시)하는 switch 문을 포함하고 있습니다.

verificationCodeEntered(_, S) {
    if ("Shift" === this.lastKeyPressed) return;
    switch (S.key) {
      case "Control":
      case "Meta":
      case "Shift":
      case "v":
      case "r":
        return;
      // ... other cases
    }
    S.preventDefault();
    const O = Number(S.key);
    isNaN(O) ? (this.getInput(_).value = "") : this.setCode(_, String(O));
}

S.preventDefault()를 호출하고 키 매핑을 수동으로 처리함으로써, 개발자는 브라우저의 기본 문자 처리를 우회했습니다. AZERTY 레이아웃에서는 숫자가 기본 키가 아니며 Shift + [키]를 통해 접근합니다. 코드가 Shift 키를 명시적으로 무시하기 때문에, 결과 문자는 절대 숫자로 처리되지 않아 입력 필드가 비어 있게 되고 "필드 필요" 오류가 발생합니다.

"닭과 달걀" 지원 문제

이 버그의 영향은 시스템 지원 구조의 실패로 더욱 악화되었습니다. 등록할 수 없는 사용자는 동일한 이메일 검증 절차가 필요한 웹 양식인 공식 지원 채널을 통해 버그를 보고할 수 없었습니다.

AGOV FAQ에 따르면 지원은 "온라인 티켓 생성만을 통해 독점적으로 제공"됩니다. 이는 등록을 방해하는 버그가 사용자가 버그를 보고하기 위해 지원에 연락하는 것을 동시에 차단하는 순환 의존성을 만들었습니다.

UI/UX 디자인에 대한 더 넓은 함의

이 사건은 현대 웹 개발 및 접근성에서 여러 시스템적 실패를 강조합니다:

단순 입력 과도 설계

맞춤형 JavaScript로 관리되는 여섯 개의 별도 입력 상자를 사용하는 것은 흔하지만 취약한 패턴입니다. 개발자들 사이의 기술적 합의는 CSS로 스타일링해 별도 상자처럼 보이게 하는 단일 네이티브 브라우저 폼 필드가 훨씬 더 탄력적이고 접근성이 높다고 제시합니다.

로직을 DOM에서 분리

AGOV 시스템이 검증 코드를 제출 시 DOM에서 직접 값을 읽는 대신 JavaScript 변수에 저장했기 때문에, 입력은 브라우저 확장 프로그램 및 값을 수동으로 주입하려는 고급 사용자에게 "보이지 않게" 되었습니다.

초기 오픈소스 공개 부족

스위스 정부는 AGOV의 소스 코드를 2026년 12월에 공개하도록 법적으로 요구되지만, 시스템은 코드가 공개되기 전 여러 서비스에서 사용하도록 강제되었습니다. 초기 공개가 이루어졌다면 커뮤니티가 배포 전에 이 키보드 레이아웃 호환성 문제를 식별하고 해결했을 수 있습니다.

커뮤니티 관점

개발자들 사이의 논의는 이러한 실수가 반복된다는 점을 강조합니다. 한 기여자는 프로그래머 Dvorak 레이아웃 사용자도 숫자 입력에 Shift 키가 필요해 유사한 문제가 발생한다고 언급했습니다.

다른 비평가들은 맞춤형 검증 로직의 비효율성을 지적했습니다:

"웹 개발자 고전: 네이티브하고 국제적으로 지원되는 표준 입력을 JavaScript로 대체해 작동하지 않는 다른 입력 메커니즘을 사용하는 것."

또한 <input type="date">와 같은 네이티브 HTML5 입력을 무시하고 "창의적인" UI 위젯(날짜 및 전화번호 입력)으로 대체하는 것에 대한 반복적인 불만도 존재합니다. 이러한 위젯은 모든 최신 브라우저에서 이미 해결된 문제입니다.


요약: 스위스 AGOV 등록 시스템의 중요한 접근성 버그로 인해 AZERTY 키보드를 사용하는 사용자는 시스템의 JavaScript가 Shift 키를 명시적으로 차단함으로써 검증 코드를 입력할 수 없었습니다.

제목: AGOV 등록 버그: 키보드 레이아웃이 디지털 신원 시스템을 무너뜨릴 수 있는 방법

Sources